{"version":3,"file":"static/js/main.257064b0.js","mappings":"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AI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAA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AAU47F,QAAU,WAC5B,OAAOl1F,KAAKszF,WAAW5tF,OAAO1F,KAAKi1F,WACrC,EAEArG,EAAUt1F,UAAU67F,MAAQ,WAC1B,OAAO1wF,EAAM0C,OAAOnH,KAAKk1F,UAAW,OAAOt3F,aAC7C,EAEAwgF,EAAOhoC,QAAUw4C,aCjEjBxQ,EAAOhoC,QAAU,CACfmrC,QAAS,CACPjkC,KAAM,EACNnyB,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINs2D,IAAK,CACHU,IAAK,EACLh3D,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,qGCrwBR,IAAI1mB,EAAQ2xC,EACRqpC,EAAKtpC,EAAQ,MACbi/C,EAAYj/C,EAAQ,OAC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EVlmM,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,EAAAA,gBAAAA,cAAYkmM,oBAKX3pL,GAA2B,CAAE,ECnC7B+b,ICCA,IAAI/oB,IDDUC,OAAOi3D,OAAO,KAC5BkB,GAAen4D,OAAOi3D,OAAO,CAAC,GEAnB,SAAAW,GACtBz/C,EACAwa,EACA8wB,GAEA,YAAO,IAFPA,IAAAA,EAAiE0U,IAEzDhgD,EAAMhpB,QAAUs0D,EAAat0D,OAASgpB,EAAMhpB,OAAUwjC,GAAiB8wB,EAAat0D,KAC9F,CCPA,IAwIAwoE,GAAe,IAAI53D,IAxIF,CACf,IACA,OACA,UACA,OACA,UACA,QACA,QACA,IACA,OACA,MACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,IACA,KACA,MACA,MACA,QACA,MACA,SACA,WACA,OACA,UACA,gBACA,IACA,QACA,OACA,iBACA,SACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OACA,UCrIIu3D,GAAc,wCAEdS,GAAe,WAMG,SAAAD,GAAO3/C,GAC7B,OAAOA,EACJlL,QAAQqqD,GAAa,KACrBrqD,QAAQ8qD,GAAc,GAC3B,CCdA,IAAMG,GAAgB,WAIhBt/B,GAAc,GAGdD,GAAoB,SAACxgB,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ACA,WACA,WACA,WACA,UACA,OACA,UACA,YACA,WACA,WACA,UACA,YACA,OACA,SACA,WACA,YACA,YACA,YACA,YACA,SACA,QACA,YACA,WACA,SACA,UACA,SACA,SACA,WACA,QACA,SACA,YACA,YACA,YACA,YACA,YACA,OACA,UACA,SACA,SACA,QACA,YACA,SACA,QACA,UACA,QACA,WACA,UACA,YACA,QACA,YACA,YACA,SACA,WACA,YACA,UACA,QACA,OACA,OACA,OACA,MACA,OACA,YACA,QACA,YACA,QACA,UACA,UACA,YACA,QACA,QACA,YACA,WACA,SACA,QACA,QACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,QACA,QACA,YACA,QACA,WACA,UACA,WACA,WACA,OACA,WACA,SACA,SACA,WACA,QACA,YACA,QACA,WACA,YACA,YACA,WACA,YACA,YACA,SACA,YACA,YACA,SACA,UACA,UACA,WACA,OACA,QACA,QACA,QACA,UACA,WACA,UACA,WACA,QACA,SACA,WACA,QACA,YACA,UACA,QACA,QACA,SACA,WACA,SACA,YACA,SACA,UACA,WACA,YACA,UACA,YACA,UACA,SACA,UACA,UACA,UACA,SACA,SACA,WACA,OACA,YACA,UACA,QACA,SACA,SACA,SACA,UACA,UACA,YACA,YACA,UACA,SACA,UACA,YACA,YACA,WACA,QACA,YACA,QACA,QACA,WACA,YACA,WACA,WACA,UACA,WACA,UACA,YACA,UACA,YACA,WACA,WACA,WACA,SACA,UACA,YACA,WACA,SACA,WACA,WACA,YACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,SACA,UACA,QACA,QACA,UACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,WACA,QACA,SACA,UACA,YACA,SACA,UACA,YACA,YACA,WACA,WACA,YACA,UACA,WACA,QACA,YACA,YACA,UACA,QACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,QACA,QACA,WACA,QACA,OACA,WACA,YACA,YACA,WACA,OACA,QACA,WACA,WACA,QACA,QACA,YACA,UACA,WACA,QACA,SACA,UACA,SACA,UACA,UACA,UACA,SACA,UACA,OACA,QACA,QACA,SACA,UACA,UACA,QACA,SACA,UACA,SACA,YACA,WACA,QACA,MACA,SACA,YACA,SACA,YACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,YACA,SACA,WACA,SACA,UACA,WACA,UACA,UACA,YACA,YACA,YACA,SACA,WACA,QACA,OACA,WACA,OACA,SACA,YACA,UACA,SACA,SACA,UACA,YACA,WACA,YACA,YACA,SACA,QACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,UACA,UACA,WACA,QACA,WACA,YACA,SACA,YACA,SACA,SACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,SACA,WACA,SACA,UACA,WACA,QACA,WACA,UACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,UACA,SACA,QACA,OACA,OACA,SACA,WACA,SACA,SACA,WACA,YACA,YACA,WACA,SACA,SACA,YACA,WACA,WACA,UACA,YACA,WACA,WACA,YACA,UACA,UACA,WACA,YACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,YACA,SACA,WACA,WACA,YACA,WACA,QACA,WACA,YACA,SACA,QACA,UACA,QACA,UACA,SACA,WACA,QACA,SACA,UACA,SACA,SACA,YACA,UACA,QACA,UACA,WACA,QACA,SACA,WACA,SACA,UACA,YACA,UACA,QACA,WACA,SACA,SACA,SACA,WACA,QACA,WACA,WACA,SACA,SACA,UACA,WACA,WACA,SACA,YACA,UACA,SACA,WACA,SACA,UACA,SACA,UACA,QACA,WACA,UACA,WACA,SACA,UACA,SACA,OACA,YACA,UACA,YACA,SACA,WACA,YACA,UACA,WACA,YACA,WACA,OACA,YACA,SACA,QACA,QACA,QACA,SACA,SACA,QACA,OACA,QACA,OACA,YACA,WACA,YACA,UACA,UACA,SACA,SACA,UACA,UACA,UACA,QACA,OACA,QACA,UACA,YACA,YACA,QACA,YACA,YACA,QACA,WACA,YACA,SACA,UACA,SACA,QACA,QACA,UACA,QACA,QACA,WACA,QACA,QACA,UACA,UACA,WACA,SACA,OACA,WACA,QACA,WACA,UACA,WACA,OACA,OACA,WACA,WACA,UACA,OACA,SACA,UACA,QACA,SACA,YACA,QACA,QACA,UACA,SACA,QACA,QACA,WACA,UACA,WACA,WACA,OACA,SACA,UACA,SACA,SACA,UACA,UACA,YACA,OACA,SACA,SACA,QACA,OACA,MACA,UACA,OACA,UACA,SACA,UACA,WACA,QACA,WACA,WACA,WACA,QACA,UACA,SACA,SACA,QACA,OACA,YACA,YACA,OACA,YACA,SACA,QACA,SACA,UACA,WACA,UACA,QACA,QACA,QACA,SACA,UACA,WACA,YACA,OACA,YACA,WACA,SACA,QACA,OACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,YACA,YACA,SACA,SACA,QACA,SACA,UACA,OACA,SACA,SACA,WACA,YACA,UACA,WACA,SACA,SACA,WACA,UACA,UACA,QACA,QACA,QACA,QACA,UACA,UACA,SACA,YACA,OACA,QACA,QACA,UACA,UACA,YACA,UACA,UACA,YACA,YACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,SACA,SACA,YACA,SACA,SACA,WACA,QACA,QACA,UACA,WACA,YACA,SACA,WACA,WACA,SACA,WACA,QACA,QACA,WACA,QACA,YACA,SACA,WACA,SACA,YACA,SACA,SACA,SACA,WACA,WACA,YACA,YACA,WACA,WACA,UACA,QACA,SACA,UACA,SACA,SACA,UACA,UACA,QACA,OACA,QACA,YACA,SACA,OACA,UACA,YACA,YACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,WACA,QACA,QACA,SACA,SACA,SACA,UACA,YACA,WACA,QACA,OACA,SACA,OACA,SACA,UACA,OACA,WACA,OACA,SACA,UACA,SACA,YACA,QACA,UACA,QACA,SACA,QACA,SACA,SACA,QACA,QACA,WACA,UACA,OACA,UACA,OACA,WACA,WACA,UACA,YACA,WACA,UACA,YACA,OACA,UACA,UACA,UACA,YACA,QACA,SACA,WACA,SACA,WACA,UACA,WACA,SACA,QACA,SACA,SACA,UACA,SACA,QACA,OACA,SACA,WACA,WACA,SACA,UACA,SACA,SACA,SACA,QACA,YACA,SACA,UACA,SACA,UACA,UACA,WACA,OACA,YACA,UACA,UACA,SACA,YACA,UACA,UACA,UACA,YACA,UACA,YACA,UACA,UACA,QACA,UACA,SACA,YACA,SACA,UACA,WACA,WACA,YACA,YACA,YACA,WACA,SACA,YACA,QACA,SACA,UACA,UACA,WACA,UACA,YACA,WACA,YACA,QACA,YACA,YACA,UACA,UACA,UACA,SACA,YACA,QACA,SACA,WACA,SACA,UACA,YACA,YACA,QACA,UACA,UACA,UACA,OACA,OACA,SACA,SACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,WACA,SACA,UACA,WACA,WACA,UACA,YACA,WACA,UACA,SACA,SACA,SACA,UACA,YACA,SACA,QACA,UACA,YACA,SACA,SACA,YACA,QACA,UACA,YACA,UACA,WACA,WACA,UACA,SACA,SACA,QACA,SACA,YACA,WACA,WACA,SACA,SACA,SACA,WACA,WACA,YACA,YACA,YACA,UACA,WACA,WACA,QACA,WACA,QACA,QACA,UACA,YACA,UACA,YACA,WACA,SACA,SACA,UACA,QACA,QACA,YACA,WACA,UACA,QACA,UACA,YACA,YACA,WACA,UACA,WACA,UACA,UACA,QACA,UACA,UACA,WACA,QACA,UACA,SACA,WACA,WACA,WACA,UACA,WACA,SACA,WACA,UACA,QACA,QACA,SACA,SACA,OACA,YACA,UACA,QACA,YACA,SACA,QACA,QACA,UACA,QACA,WACA,SACA,UACA,QACA,QACA,YACA,YACA,YACA,WACA,YACA,YACA,QACA,QACA,QACA,OACA,WACA,SACA,WACA,WACA,QACA,WACA,WACA,SACA,YACA,UACA,QACA,UACA,WACA,SACA,OACA,SACA,UACA,WACA,SACA,SACA,QACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,WACA,QACA,SACA,WACA,SACA,WACA,WACA,YACA,SACA,UACA,UACA,WACA,UACA,SACA,SACA,OACA,QACA,QACA,OACA,QACA,WACA,SACA,SACA,QACA,YACA,QACA,WACA,UACA,UACA,WACA,UACA,WACA,UACA,QACA,QACA,QACA,UACA,SACA,WACA,OACA,OACA,QACA,QACA,QACA,UACA,QACA,SACA,YACA,WACA,QACA,SACA,UACA,SACA,UACA,WACA,QACA,SACA,WACA,OACA,SACA,QACA,UACA,QACA,QACA,UACA,WACA,UACA,UACA,WACA,QACA,SACA,UACA,WACA,YACA,QACA,WACA,SACA,SACA,YACA,SACA,UACA,QACA,YACA,UACA,UACA,WACA,YACA,YACA,OACA,WACA,SACA,UACA,SACA,QACA,UACA,MACA,WACA,SACA,UACA,SACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,OACA,OACA,OACA,OACA,WACA,WACA,UACA,WACA,SACA,YACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,SACA,WACA,OACA,OACA,OACA,UACA,QACA,QACA,SACA,QACA,WACA,UACA,UACA,WACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,SACA,UACA,SACA,YACA,WACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,WACA,YACA,UACA,UACA,UACA,WACA,UACA,YACA,UACA,QACA,YACA,UACA,WACA,WACA,SACA,WACA,YACA,YACA,UACA,YACA,YACA,UACA,OACA,UACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,YACA,UACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,YACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,UACA,YACA,YACA,WACA,UACA,UACA,UACA,UACA,WACA,UACA,YACA,UACA,UACA,YACA,OACA,SACA,SACA,UACA,SACA,UACA,SACA,OACA,QACA,OACA,WACA,YACA,UACA,SACA,SACA,SACA,YACA,YACA,WACA,WACA,YACA,QACA,WACA,UACA,WACA,YACA,SACA,UACA,WACA,UACA,YACA,YACA,UACA,SACA,SACA,WACA,YACA,SACA,SACA,YACA,OACA,UACA,SACA,QACA,QACA,QACA,YACA,YACA,WACA,YACA,UACA,SACA,UACA,WACA,QACA,UACA,WACA,UACA,SACA,WACA,OACA,WACA,YACA,WACA,WACA,SACA,WACA,UACA,WACA,YACA,YACA,SACA,QACA,YACA,QACA,UACA,UACA,QACA,QACA,QACA,UACA,WACA,WACA,WACA,WACA,SACA,SACA,UACA,YACA,QACA,UACA,UACA,YACA,SACA,WACA,YACA,SACA,WACA,WACA,WACA,WACA,WACA,SACA,QACA,QACA,SACA,QACA,QACA,WACA,UACA,WACA,YACA,UACA,WACA,UACA,WACA,OACA,UACA,QACA,QACA,QACA,UACA,SACA,WACA,UACA,UACA,UACA,WACA,UACA,YACA,SACA,WACA,UACA,QACA,QACA,QACA,QACA,OACA,QACA,SACA,UACA,UACA,QACA,QACA,UACA,UACA,YACA,UACA,YACA,UACA,QACA,YACA,SACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,UACA,UACA,WACA,QACA,OACA,SACA,UACA,UACA,YACA,OACA,UACA,UACA,WACA,SACA,SACA,WACA,WACA,YACA,WACA,UACA,YACA,WACA,UACA,YACA,UACA,QACA,SACA,UACA,UACA,UACA,SACA,OACA,SACA,SACA,SACA,SACA,YACA,UACA,QACA,QACA,QACA,UACA,SACA,UACA,SACA,SACA,YACA,QACA,QACA,QACA,OACA,SACA,UACA,YACA,UACA,YACA,WACA,YACA,UACA,MACA,QACA,SACA,UACA,UACA,WACA,SACA,YACA,YACA,MACA,MACA,WACA,SACA,QACA,WACA,SACA,QACA,QACA,WACA,QACA,UACA,YACA,SACA,WACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,WACA,YACA,UACA,WACA,WACA,UACA,OACA,OACA,YACA,OACA,YACA,OACA,WACA,SACA,WACA,WACA,UACA,OACA,SACA,WACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,WACA,SACA,YACA,WACA,SACA,UACA,YACA,QACA,OACA,YACA,SACA,WACA,QACA,UACA,WACA,SACA,QACA,SACA,SACA,QACA,QACA,YACA,QACA,WACA,SACA,WACA,YACA,WACA,UACA,SACA,YACA,YACA,UACA,YACA,UACA,YACA,WACA,OACA,WACA,UACA,SACA,YACA,YACA,YACA,QACA,WACA,SACA,WACA,YACA,SACA,SACA,OACA,OACA,SACA,SACA,WACA,SACA,WACA,SACA,UACA,SACA,YACA,YACA,YACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,SACA,WACA,SACA,WACA,UACA,YACA,WACA,YACA,YACA,QACA,WACA,UACA,UACA,SACA,SACA,OACA,WACA,YACA,WACA,SACA,YACA,QACA,WACA,QACA,WACA,YACA,SACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,UACA,QACA,SACA,WACA,SACA,YACA,YACA,WACA,SACA,YACA,WACA,SACA,WACA,YACA,YACA,WACA,SACA,QACA,SACA,QACA,UACA,SACA,UACA,UACA,OACA,YACA,YACA,WACA,YACA,SACA,UACA,YACA,WACA,SACA,SACA,SACA,WACA,YACA,YACA,UACA,UACA,QACA,WACA,SACA,SACA,WACA,QACA,UACA,YACA,UACA,YACA,YACA,WACA,WACA,YACA,YACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,WACA,WACA,SACA,YACA,YACA,WACA,YACA,YACA,SACA,WACA,YACA,WACA,UACA,QACA,UACA,WACA,UACA,UACA,YACA,WACA,SACA,UACA,YACA,UACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,YACA,YACA,UACA,OACA,WACA,SACA,YACA,QACA,OACA,SACA,UACA,YACA,WACA,YACA,WACA,WACA,YACA,YACA,MACA,WACA,YACA,WACA,OACA,SACA,OACA,WACA,QACA,SACA,SACA,UACA,SACA,QACA,UACA,SACA,YACA,QACA,QACA,SACA,SACA,UACA,UACA,UACA,SACA,SACA,UACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,WACA,WACA,WACA,SACA,WACA,WACA,UACA,YACA,WACA,UACA,UACA,YACA,WACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,WACA,OACA,YACA,UACA,OACA,UACA,YACA,YACA,WACA,WACA,YACA,SACA,UACA,WACA,UACA,WACA,SACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,YACA,WACA,UACA,WACA,UACA,YACA,UACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,QACA,QACA,QACA,YACA,UACA,WACA,WACA,WACA,WACA,SACA,WACA,YACA,YACA,WACA,WACA,WACA,YACA,QACA,SACA,SACA,OACA,WACA,WACA,QACA,QACA,QACA,QACA,OACA,SACA,YACA,SACA,QACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,QACA,QACA,SACA,WACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,UACA,QACA,OACA,YACA,SACA,SACA,OACA,SACA,WACA,SACA,OACA,OACA,QACA,OACA,OACA,WACA,YACA,YACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,YACA,QACA,UACA,UACA,OACA,UACA,WACA,YACA,YACA,WACA,YACA,YACA,YACA,SACA,SACA,WACA,SACA,SACA,QACA,OACA,UACA,QACA,QACA,QACA,UACA,WACA,YACA,WACA,WACA,SACA,WACA,SACA,SACA,WACA,UACA,UACA,UACA,QACA,QACA,QACA,YACA,UACA,WACA,UACA,UACA,UACA,QACA,QACA,WACA,SACA,OACA,MACA,SACA,YACA,UACA,WACA,UACA,WACA,WACA,QACA,OACA,OACA,SACA,SACA,MACA,OACA,SACA,WACA,OACA,UACA,WACA,WACA,MACA,OACA,SACA,YACA,YACA,UACA,UACA,WACA,SACA,SACA,OACA,OACA,UACA,OACA,QACA,QACA,QACA,UACA,UACA,WACA,UACA,YACA,UACA,WACA,UACA,WACA,WACA,OACA,QACA,UACA,UACA,UACA,SACA,UACA,QACA,UACA,UACA,WACA,WACA,WACA,UACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,SACA,UACA,QACA,UACA,SACA,WACA,SACA,YACA,YACA,SACA,WACA,UACA,QACA,SACA,SACA,OACA,OACA,QACA,QACA,QACA,YACA,OACA,SACA,UACA,YACA,UACA,WACA,YACA,UACA,YACA,YACA,OACA,WACA,SACA,OACA,UACA,SACA,WACA,YACA,WACA,MACA,YACA,UACA,YACA,SACA,YACA,SACA,SACA,WACA,WACA,YACA,UACA,YACA,SACA,QACA,YACA,UACA,SACA,QACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,UACA,YACA,YACA,WACA,SACA,MACA,WACA,WACA,YACA,QACA,UACA,SACA,MACA,UACA,WACA,MACA,YACA,QACA,YACA,WACA,YACA,QACA,UACA,QACA,QACA,UACA,SACA,UACA,YACA,YACA,QACA,WACA,UACA,SACA,SACA,WACA,SACA,YACA,QACA,UACA,YACA,WACA,OACA,QACA,WACA,UACA,WACA,UACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,WACA,WACA,UACA,UACA,YACA,QACA,MACA,SACA,YACA,SACA,YACA,YACA,WACA,UACA,YACA,SACA,SACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,YACA,QACA,SACA,UACA,UACA,YACA,YACA,UACA,YACA,WACA,YACA,YACA,WACA,YACA,WACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,WACA,YACA,UACA,SACA,UACA,YACA,YACA,YACA,UACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,SACA,SACA,SACA,UACA,UACA,SACA,SACA,YACA,WACA,YACA,WACA,SACA,UACA,SACA,SACA,YACA,SACA,SACA,WACA,UACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,WACA,QACA,OACA,SACA,OACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,WACA,UACA,QACA,SACA,WACA,UACA,UACA,YACA,SACA,YACA,YACA,WACA,SACA,SACA,UACA,YACA,SACA,SACA,UACA,QACA,QACA,WACA,YACA,YACA,WACA,WACA,WACA,SACA,YACA,YACA,WACA,UACA,QACA,UACA,YACA,YACA,SACA,WACA,WACA,YACA,YACA,WACA,UACA,UACA,WACA,UACA,QACA,YACA,SACA,YACA,WACA,UACA,QACA,WACA,YACA,YACA,UACA,UACA,OACA,YACA,YACA,YACA,WACA,WACA,QACA,WACA,UACA,OACA,QACA,YACA,SACA,QACA,UACA,UACA,WACA,YACA,YACA,YACA,SACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,YACA,YACA,YACA,YACA,QACA,OACA,YACA,SACA,UACA,SACA,QACA,WACA,OACA,SACA,YACA,WACA,WACA,SACA,UACA,YACA,YACA,YACA,YACA,YACA,QACA,SACA,WACA,YACA,SACA,SACA,WACA,UACA,YACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,YACA,SACA,WACA,UACA,YACA,YACA,WACA,YACA,SACA,YACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,WACA,YACA,UACA,SACA,WACA,SACA,YACA,UACA,UACA,SACA,YACA,UACA,UACA,OACA,SACA,UACA,SACA,OACA,QACA,UACA,OACA,WACA,SACA,SACA,WACA,UACA,UACA,YACA,QACA,UACA,OACA,UACA,YACA,YACA,UACA,UACA,WACA,SACA,UACA,WACA,SACA,YACA,YACA,UACA,WACA,WACA,MACA,QACA,UACA,SACA,SACA,OACA,OACA,SACA,SACA,WACA,WACA,WACA,WACA,WACA,QACA,QACA,UACA,SACA,UACA,WACA,YACA,WACA,SACA,SACA,QACA,SACA,SACA,WACA,UACA,YACA,QACA,QACA,QACA,QACA,UACA,SACA,WACA,WACA,YACA,UACA,UACA,QACA,WACA,QACA,UACA,SACA,WACA,SACA,SACA,SACA,UACA,OACA,SACA,QACA,WACA,SACA,WACA,WACA,UACA,UACA,YACA,QACA,WACA,QACA,UACA,WACA,WACA,YACA,SACA,UACA,UACA,WACA,MACA,OACA,UACA,UACA,WACA,WACA,YACA,YACA,QACA,UACA,QACA,QACA,YACA,UACA,WACA,WACA,OACA,UACA,YACA,YACA,YACA,WACA,WACA,SACA,QACA,UACA,WACA,SACA,WACA,UACA,YACA,YACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,OACA,UACA,SACA,QACA,QACA,SACA,SACA,QACA,QACA,OACA,QACA,QACA,QACA,WACA,OACA,SACA,UACA,QACA,WACA,UACA,UACA,QACA,SACA,UACA,WACA,OACA,MACA,MACA,OACA,QACA,OACA,WACA,SACA,WACA,SACA,WACA,SACA,OACA,OACA,OACA,UACA,WACA,WACA,YACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,YACA,WACA,UACA,WACA,WACA,WACA,SACA,SACA,UACA,WACA,WACA,MACA,QACA,WACA,WACA,UACA,YACA,WACA,YACA,WACA,QACA,QACA,UACA,UACA,YACA,SACA,UACA,QACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,SACA,YACA,WACA,YACA,WACA,UACA,WACA,YACA,WACA,UACA,SACA,WACA,SACA,YACA,WACA,QACA,UACA,UACA,WACA,SACA,SACA,QACA,SACA,WACA,YACA,YACA,WACA,QACA,SACA,UACA,QACA,UACA,YACA,SACA,OACA,QACA,YACA,UACA,WACA,WACA,YACA,SACA,QACA,QACA,SACA,WACA,YACA,WACA,QACA,YACA,SACA,MACA,QACA,MACA,YACA,UACA,QACA,OACA,YACA,WACA,UACA,SACA,SACA,UACA,YACA,SACA,YACA,WACA,OACA,SACA,QACA,SACA,SACA,WACA,UACA,MACA,SACA,UACA,SACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,MACA,WACA,YACA,SACA,UACA,WACA,QACA,OACA,OACA,SACA,OACA,QACA,OACA,SACA,MACA,SACA,UACA,WACA,WACA,QACA,UACA,YACA,SACA,QACA,YACA,WACA,YACA,UACA,YACA,WACA,WACA,SACA,YACA,YACA,YACA,WACA,YACA,UACA,YACA,UACA,UACA,UACA,QACA,QACA,YACA,SACA,UACA,YACA,QACA,OACA,WACA,YACA,WACA,SACA,WACA,SACA,SACA,SACA,QACA,UACA,SACA,WACA,QACA,QACA,SACA,QACA,UACA,UACA,UACA,QACA,YACA,SACA,YACA,UACA,SACA,WACA,YACA,QACA,UACA,QACA,WACA,UACA,WACA,UACA,SACA,UACA,UACA,UACA,UACA,SACA,UACA,SACA,UACA,WACA,WACA,SACA,YACA,YACA,UACA,WACA,QACA,QACA,QACA,UACA,WACA,UACA,OACA,SACA,YACA,UACA,SACA,OACA,OACA,WACA,OACA,UACA,QACA,WACA,WACA,YACA,OACA,UACA,QACA,UACA,OACA,OACA,OACA,QACA,WACA,YACA,QACA,SACA,OACA,SACA,OACA,SACA,WACA,OACA,UACA,SACA,SACA,SACA,OACA,OACA,OACA,WACA,YACA,WACA,YACA,SACA,SACA,WACA,UACA,YACA,WACA,WACA,UACA,WACA,QACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,SACA,UACA,QACA,WACA,QACA,QACA,UACA,YACA,QACA,QACA,YACA,UACA,UACA,YACA,WACA,SACA,YACA,SACA,YACA,YACA,UACA,QACA,OACA,UACA,WACA,WACA,YACA,SACA,QACA,UACA,WACA,OACA,YACA,OACA,QACA,YACA,WACA,WACA,QACA,UACA,YACA,QACA,YACA,QACA,SACA,WACA,OACA,UACA,OACA,WACA,SACA,QACA,QACA,SACA,WACA,SACA,QACA,SACA,UACA,QACA,QACA,SACA,UACA,QACA,OACA,SACA,WACA,WACA,UACA,UACA,YACA,UACA,WACA,SACA,QACA,YACA,WACA,WACA,QACA,UACA,YACA,QACA,OACA,WACA,QACA,OACA,UACA,UACA,YACA,UACA,QACA,SACA,WACA,OACA,OACA,QACA,QACA,UACA,OACA,SACA,MACA,UACA,WACA,YACA,WACA,UACA,WACA,SACA,SACA,UACA,UACA,MACA,UACA,QACA,OACA,UACA,OACA,SACA,SACA,YACA,SACA,UACA,SACA,UACA,YACA,UACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,SACA,UACA,WACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,SACA,YACA,SACA,QACA,YACA,YACA,UACA,WACA,UACA,YACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,WACA,WACA,YACA,WACA,QACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,UACA,QACA,UACA,OACA,SACA,QACA,UACA,YACA,QACA,SACA,YACA,WACA,UACA,WACA,YACA,OACA,UACA,SACA,QACA,QACA,SACA,WACA,SACA,WACA,SACA,OACA,WACA,WACA,YACA,YACA,YACA,SACA,SACA,YACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,UACA,WACA,YACA,YACA,UACA,WACA,OACA,OACA,QACA,UACA,YACA,UACA,QACA,UACA,YACA,QACA,SACA,SACA,SACA,UACA,UACA,WACA,WACA,UACA,YACA,QACA,WACA,QACA,SACA,SACA,YACA,QACA,WACA,SACA,UACA,UACA,UACA,UACA,QACA,YACA,WACA,WACA,UACA,WACA,SACA,SACA,WACA,OACA,MACA,OACA,OACA,OACA,QACA,SACA,WACA,SACA,QACA,YACA,WACA,UACA,SACA,YACA,WACA,YACA,WACA,WACA,SACA,SACA,YACA,YACA,SACA,WACA,SACA,OACA,SACA,UACA,WACA,WACA,SACA,SACA,SACA,UACA,SACA,YACA,UACA,QACA,OACA,UACA,OACA,SACA,YACA,MACA,SACA,UACA,WACA,YACA,WACA,YACA,YACA,YACA,SACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,MACA,UACA,QACA,OACA,OACA,MACA,WACA,WACA,WACA,UACA,YACA,YACA,WACA,WACA,WACA,SACA,QACA,OACA,QACA,WACA,SACA,SACA,YACA,WACA,WACA,QACA,YACA,WACA,UACA,WACA,UACA,YACA,WACA,UACA,YACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,SACA,SACA,YACA,UACA,WACA,YACA,YACA,WACA,SACA,UACA,YACA,YACA,WACA,UACA,YACA,YACA,QACA,WACA,YACA,WACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,UACA,WACA,YACA,WACA,UACA,YACA,YACA,YACA,UACA,YACA,SACA,WACA,SACA,SACA,MACA,OACA,SACA,OACA,QACA,MACA,OACA,YACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,WACA,YACA,YACA,UACA,QACA,UACA,YACA,UACA,OACA,YACA,SACA,QACA,MACA,MACA,SACA,SACA,YACA,UACA,WACA,YACA,SACA,YACA,WACA,MACA,UACA,UACA,SACA,UACA,UACA,WACA,QACA,OACA,QACA,UACA,UACA,OACA,UACA,YACA,OACA,OACA,YACA,UACA,QACA,SACA,SACA,MACA,QACA,SACA,QACA,SACA,WACA,OACA,UACA,UACA,MACA,SACA,YACA,SACA,UACA,OACA,UACA,WACA,WACA,YACA,QACA,OACA,MACA,SACA,WACA,YACA,SACA,UACA,WACA,YACA,WACA,QACA,YACA,WACA,YACA,OACA,SACA,WACA,UACA,QACA,YACA,QACA,UACA,UACA,OACA,SACA,QACA,OACA,WACA,WACA,OACA,SACA,UACA,SACA,UACA,WACA,SACA,QACA,OACA,UACA,YACA,UACA,SACA,WACA,WACA,QACA,WACA,UACA,SACA,QACA,QACA,SACA,WACA,OACA,MACA,OACA,SACA,OACA,WACA,WACA,SACA,OACA,OACA,WACA,WACA,YACA,WACA,OACA,SACA,SACA,WACA,SACA,WACA,UACA,UACA,UACA,OACA,UACA,UACA,YACA,WACA,SACA,UACA,UACA,OACA,SACA,QACA,OACA,UACA,WACA,OACA,QACA,WACA,QACA,QACA,QACA,SACA,UACA,QACA,OACA,UACA,UACA,WACA,YACA,WACA,SACA,SACA,QACA,UACA,WACA,SACA,UACA,SACA,OACA,OACA,QACA,SACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,QACA,UACA,SACA,QACA,SACA,UACA,SACA,OACA,QACA,OACA,OACA,QACA,OACA,QACA,OACA,SACA,WACA,UACA,SACA,WACA,SACA,UACA,UACA,SACA,WACA,SACA,WACA,SACA,WACA,OACA,WACA,OACA,SACA,QACA,SACA,SACA,WACA,UACA,UACA,YACA,OACA,UACA,SACA,YACA,UACA,QACA,OACA,SACA,OACA,OACA,UACA,SACA,UACA,YACA,WACA,SACA,UACA,QACA,WACA,SACA,WACA,YACA,YACA,SACA,UACA,YACA,UACA,UACA,WACA,MACA,OACA,SACA,UACA,UACA,WACA,SACA,WACA,WACA,SACA,QACA,QACA,OACA,OACA,UACA,YACA,QACA,QACA,UACA,WACA,OACA,QACA,WACA,WACA,SACA,SACA,WACA,UACA,OACA,OACA,MACA,UACA,UACA,SACA,OACA,OACA,WACA,YACA,SACA,SACA,SACA,UACA,QACA,SACA,QACA,YACA,UACA,SACA,SACA,YACA,YACA,QACA,UACA,YACA,WACA,YACA,YACA,SACA,WACA,UACA,SACA,YACA,WACA,YACA,UACA,UACA,SACA,QACA,WACA,WACA,YACA,YACA,OACA,QACA,OACA,YACA,OACA,SACA,WACA,SACA,YACA,UACA,YACA,WACA,QACA,YACA,SACA,QACA,YACA,WACA,WACA,SACA,WACA,WACA,QACA,OACA,UACA,YACA,WACA,UACA,SACA,UACA,WACA,QACA,YACA,WACA,YACA,YACA,YACA,UACA,YACA,WACA,WACA,SACA,WACA,UACA,YACA,WACA,WACA,QACA,YACA,SACA,YACA,OACA,OACA,SACA,UACA,YACA,UACA,WACA,UACA,WACA,UACA,YACA,WACA,SACA,SACA,QACA,QACA,YACA,UACA,UACA,UACA,YACA,WACA,YACA,SACA,UACA,UACA,YACA,QACA,UACA,SACA,UACA,QACA,WACA,SACA,SACA,SACA,OACA,MACA,WACA,YACA,UACA,UACA,WACA,QACA,QACA,YACA,YACA,SACA,WACA,SACA,SACA,UACA,WACA,SACA,YACA,SACA,UACA,SACA,QACA,YACA,SACA,YACA,YACA,UACA,SACA,YACA,SACA,UACA,WACA,SACA,UACA,UACA,UACA,YACA,WACA,UACA,WACA,YACA,WACA,WACA,YACA,OACA,SACA,YACA,YACA,SACA,SACA,SACA,SACA,WACA,WACA,WACA,QACA,WACA,WACA,UACA,QACA,SACA,YACA,SACA,UACA,SACA,WACA,WACA,UACA,QACA,SACA,SACA,WACA,SACA,UACA,YACA,SACA,UACA,YACA,WACA,QACA,WACA,OACA,YACA,WACA,WACA,UACA,MACA,YACA,SACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,YACA,UACA,WACA,UACA,YACA,QACA,SACA,WACA,SACA,YACA,WACA,UACA,WACA,YACA,YACA,YACA,WACA,MACA,SACA,WACA,UACA,YACA,WACA,WACA,WACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,OACA,WACA,YACA,SACA,WACA,YACA,SACA,YACA,QACA,QACA,YACA,WACA,UACA,WACA,UACA,WACA,QACA,YACA,YACA,QACA,QACA,UACA,OACA,QACA,SACA,QACA,SACA,OACA,OACA,MACA,MACA,WACA,QACA,OACA,SACA,UACA,WACA,WACA,YACA,YACA,SACA,WACA,QACA,YACA,UACA,QACA,QACA,WACA,UACA,YACA,SACA,QACA,YACA,QACA,YACA,WACA,SACA,UACA,YACA,WACA,QACA,QACA,SACA,YACA,QACA,UACA,UACA,SACA,YACA,QACA,UACA,SACA,WACA,OACA,YACA,YACA,SACA,OACA,SACA,SACA,SACA,UACA,YACA,UACA,OACA,QACA,MACA,OACA,OACA,SACA,QACA,YACA,OACA,SACA,SACA,UACA,QACA,SACA,UACA,YACA,WACA,SACA,WACA,UACA,SACA,WACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,WACA,SACA,WACA,SACA,YACA,SACA,SACA,WACA,WACA,YACA,WACA,YACA,YACA,UACA,UACA,OACA,SACA,OACA,UACA,QACA,OACA,MACA,YACA,SACA,WACA,WACA,SACA,UACA,QACA,OACA,SACA,WACA,WACA,QACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,QACA,UACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,WACA,UACA,WACA,YACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,SACA,WACA,WACA,YACA,QACA,SACA,QACA,MACA,MACA,QACA,MACA,YACA,WACA,WACA,SACA,WACA,UACA,WACA,YACA,SACA,YACA,OACA,UACA,YACA,YACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,SACA,YACA,SACA,UACA,YACA,YACA,WACA,WACA,SACA,QACA,SACA,UACA,SACA,UACA,UACA,OACA,MACA,OACA,WACA,OACA,MACA,QACA,WACA,QACA,OACA,UACA,WACA,OACA,WACA,UACA,WACA,UACA,QACA,SACA,WACA,OACA,WACA,QACA,UACA,YACA,UACA,OACA,SACA,OACA,OACA,OACA,OACA,UACA,OACA,OACA,WACA,UACA,YACA,YACA,YACA,WACA,QACA,UACA,WACA,SACA,WACA,WACA,YACA,YACA,MACA,YACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,QACA,WACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,UACA,YACA,YACA,UACA,UACA,SACA,UACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,OACA,UACA,UACA,WACA,UACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,UACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,WACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,UACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,UACA,WACA,WACA,WACA,UACA,YACA,WACA,YACA,MACA,SACA,UACA,YACA,UACA,YACA,SACA,WACA,SACA,QACA,QACA,YACA,UACA,WACA,WACA,WACA,SACA,SACA,UACA,SACA,WACA,UACA,QACA,QACA,SACA,UACA,SACA,YACA,OACA,WACA,YACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,QACA,WACA,OACA,YACA,QACA,UACA,WACA,YACA,UACA,YACA,SACA,QACA,YACA,YACA,SACA,QACA,UACA,UACA,WACA,YACA,SACA,UACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,WACA,WACA,YACA,SACA,UACA,YACA,SACA,SACA,QACA,UACA,UACA,SACA,WACA,SACA,SACA,UACA,UACA,UACA,SACA,UACA,YACA,SACA,UACA,YACA,QACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,WACA,QACA,SACA,SACA,UACA,SACA,WACA,UACA,QACA,YACA,SACA,WACA,YACA,OACA,WACA,UACA,QACA,YACA,UACA,SACA,YACA,YACA,SACA,WACA,QACA,YACA,WACA,SACA,SACA,UACA,UACA,WACA,SACA,QACA,QACA,SACA,UACA,WACA,UACA,SACA,SACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,UACA,SACA,OACA,SACA,WACA,UACA,SACA,UACA,UACA,YACA,WACA,UACA,YACA,QACA,SACA,UACA,WACA,YACA,MACA,WACA,UACA,QACA,YACA,YACA,YACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,QACA,OACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,QACA,OACA,YACA,YACA,SACA,YACA,QACA,SACA,WACA,QACA,YACA,SACA,YACA,YACA,QACA,UACA,UACA,SACA,UACA,YACA,SACA,UACA,YACA,QACA,YACA,QACA,SACA,WACA,UACA,UACA,WACA,QACA,UACA,QACA,SACA,UACA,UACA,SACA,WACA,UACA,WACA,WACA,UACA,WACA,YACA,YACA,WACA,WACA,SACA,UACA,YACA,YACA,UACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,YACA,WACA,QACA,WACA,QACA,SACA,YACA,SACA,WACA,YACA,UACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,UACA,WACA,SACA,OACA,YACA,UACA,QACA,MACA,OACA,OACA,OACA,UACA,UACA,WACA,YACA,SACA,QACA,SACA,QACA,SACA,QACA,SACA,SACA,QACA,SACA,WACA,QACA,OACA,YACA,UACA,YACA,UACA,SACA,OACA,OACA,UACA,OACA,SACA,SACA,QACA,WACA,WACA,UACA,WACA,YACA,OACA,SACA,WACA,WACA,SACA,YACA,WACA,UACA,SACA,WACA,QACA,OACA,SACA,WACA,WACA,SACA,UACA,SACA,UACA,WACA,SACA,SACA,UACA,YACA,UACA,UACA,QACA,SACA,WACA,QACA,UACA,OACA,WACA,YACA,UACA,QACA,SACA,MACA,WACA,SACA,WACA,UACA,WACA,YACA,SACA,UACA,WACA,YACA,UACA,WACA,WACA,UACA,YACA,UACA,SACA,WACA,YACA,UACA,UACA,SACA,YACA,YACA,UACA,YACA,WACA,YACA,YACA,SACA,UACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,SACA,UACA,SACA,YACA,YACA,YACA,SACA,UACA,YACA,UACA,QACA,UACA,YACA,UACA,YACA,YACA,WACA,UACA,SACA,UACA,UACA,YACA,UACA,UACA,WACA,SACA,YACA,WACA,QACA,SACA,YACA,UACA,UACA,SACA,QACA,WACA,QACA,QACA,QACA,SACA,SACA,WACA,UACA,UACA,YACA,QACA,YACA,WACA,WACA,YACA,QACA,UACA,YACA,UACA,YACA,UACA,WACA,YACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,UACA,WACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,QACA,QACA,YACA,SACA,WACA,YACA,SACA,YACA,WACA,WACA,YACA,WACA,UACA,QACA,UACA,YACA,WACA,SACA,YACA,YACA,WACA,WACA,QACA,WACA,SACA,SACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,QACA,SACA,QACA,YACA,QACA,UACA,MACA,UACA,SACA,YACA,SACA,SACA,MACA,OACA,YACA,OACA,UACA,QACA,YACA,OACA,SACA,SACA,QACA,WACA,YACA,YACA,UACA,WACA,OACA,QACA,SACA,QACA,WACA,YACA,WACA,SACA,WACA,YACA,QACA,UACA,WACA,SACA,SACA,UACA,SACA,SACA,WACA,YACA,OACA,QACA,YACA,WACA,UACA,WACA,WACA,YACA,SACA,YACA,UACA,WACA,UACA,SACA,QACA,UACA,OACA,SACA,WACA,UACA,YACA,SACA,QACA,WACA,QACA,WACA,QACA,UACA,YACA,YACA,UACA,UACA,QACA,UACA,UACA,SACA,YACA,YACA,WACA,UACA,SACA,QACA,UACA,UACA,YACA,YACA,YACA,QACA,QACA,QACA,UACA,YACA,QACA,OACA,SACA,YACA,WACA,YACA,QACA,QACA,OACA,SACA,SACA,OACA,SACA,QACA,SACA,WACA,YACA,WACA,YACA,WACA,QACA,SACA,SACA,OACA,OACA,SACA,SACA,UACA,SACA,UACA,UACA,WACA,UACA,SACA,OACA,SACA,QACA,SACA,WACA,OACA,SACA,QACA,YACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,QACA,OACA,SACA,SACA,OACA,UACA,SACA,QACA,SACA,SACA,UACA,YACA,WACA,QACA,YACA,WACA,WACA,UACA,WACA,OACA,YACA,WACA,UACA,YACA,YACA,YACA,WACA,SACA,WACA,WACA,WACA,UACA,YACA,SACA,QACA,UACA,SACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,SACA,SACA,YACA,SACA,SACA,SACA,SACA,YACA,YACA,UACA,SACA,WACA,UACA,WACA,YACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,YACA,SACA,SACA,UACA,SACA,WACA,WACA,SACA,YACA,YACA,UACA,WACA,WACA,YACA,WACA,UACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,YACA,UACA,WACA,WACA,WACA,YACA,YACA,SACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,YACA,UACA,UACA,WACA,UACA,UACA,YACA,SACA,YACA,YACA,UACA,SACA,WACA,YACA,SACA,SACA,UACA,UACA,SACA,SACA,SACA,WACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,YACA,QACA,SACA,SACA,YACA,YACA,UACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,YACA,UACA,WACA,WACA,QACA,QACA,UACA,UACA,YACA,WACA,WACA,WACA,UACA,QACA,UACA,YACA,UACA,SACA,SACA,SACA,WACA,SACA,YACA,OACA,SACA,SACA,UACA,UACA,WACA,SACA,WACA,WACA,YACA,YACA,QACA,UACA,YACA,SACA,UACA,SACA,YACA,UACA,UACA,UACA,WACA,SACA,WACA,YACA,YACA,WACA,YACA,YACA,UACA,UACA,WACA,WACA,YACA,WACA,SACA,SACA,SACA,WACA,UACA,SACA,UACA,YACA,YACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,WACA,SACA,WACA,UACA,SACA,UACA,QACA,WACA,SACA,YACA,SACA,YACA,YACA,UACA,UACA,WACA,YACA,YACA,YACA,OACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,YACA,UACA,QACA,SACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,SACA,SACA,QACA,UACA,UACA,YACA,YACA,YACA,WACA,WACA,UACA,WACA,YACA,YACA,YACA,SACA,WACA,WACA,WACA,WACA,SACA,WACA,UACA,WACA,SACA,SACA,WACA,YACA,YACA,SACA,WACA,YACA,SACA,YACA,YACA,UACA,UACA,UACA,UACA,WACA,SACA,SACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,SACA,UACA,UACA,WACA,QACA,SACA,UACA,UACA,UACA,SACA,UACA,YACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,SACA,WACA,UACA,YACA,UACA,UACA,WACA,YACA,SACA,SACA,WACA,YACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,QACA,SACA,UACA,OACA,SACA,SACA,WACA,UACA,UACA,WACA,SACA,OACA,SACA,UACA,OACA,UACA,QACA,QACA,UACA,SACA,OACA,OACA,QACA,UACA,OACA,UACA,WACA,WACA,UACA,SACA,WACA,UACA,OACA,SACA,OACA,UACA,UACA,QACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,UACA,QACA,UACA,OACA,QACA,WACA,SACA,WACA,SACA,SACA,WACA,YACA,UACA,WACA,YACA,WACA,QACA,QACA,QACA,OACA,OACA,SACA,SACA,OACA,SACA,UACA,UACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,UACA,QACA,SACA,QACA,SACA,SACA,UACA,SACA,UACA,OACA,SACA,SACA,MACA,SACA,OACA,SACA,WACA,UACA,QACA,YACA,UACA,SACA,UACA,QACA,OACA,SACA,UACA,QACA,OACA,OACA,OACA,MACA,UACA,WACA,YACA,SACA,YACA,SACA,YACA,UACA,WACA,QACA,UACA,SACA,YACA,YACA,SACA,WACA,UACA,OACA,OACA,UACA,QACA,OACA,QACA,OACA,QACA,SACA,WACA,SACA,SACA,QACA,SACA,QACA,OACA,WACA,SACA,UACA,YACA,YACA,OACA,SACA,WACA,WACA,WACA,YACA,SACA,UACA,WACA,UACA,YACA,UACA,SACA,WACA,UACA,UACA,YACA,UACA,YACA,YACA,WACA,QACA,WACA,YACA,OACA,QACA,UACA,YACA,QACA,UACA,YACA,UACA,OACA,YACA,QACA,UACA,WACA,QACA,YACA,YACA,UACA,WACA,WACA,YACA,QACA,QACA,SACA,UACA,QACA,UACA,SACA,QACA,YACA,MACA,UACA,SACA,UACA,WACA,QACA,UACA,WACA,UACA,WACA,OACA,UACA,UACA,WACA,QACA,YACA,SACA,WACA,YACA,SACA,QACA,UACA,YACA,WACA,QACA,YACA,SACA,WACA,YACA,SACA,WACA,YACA,WACA,UACA,UACA,YACA,QACA,QACA,WACA,QACA,QACA,UACA,QACA,SACA,YACA,YACA,SACA,YACA,SACA,UACA,QACA,WACA,SACA,YACA,UACA,WACA,WACA,SACA,WACA,WACA,WACA,YACA,YACA,QACA,UACA,UACA,SACA,WACA,SACA,WACA,YACA,SACA,SACA,UACA,YACA,WACA,WACA,UACA,UACA,WACA,QACA,QACA,WACA,YACA,SACA,UACA,WACA,YACA,YACA,SACA,UACA,SACA,YACA,SACA,UACA,WACA,WACA,QACA,SACA,WACA,WACA,WACA,SACA,WACA,UACA,UACA,UACA,SACA,WACA,YACA,YACA,WACA,OACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,SACA,UACA,OACA,SACA,WACA,YACA,YACA,YACA,YACA,WACA,QACA,YACA,SACA,SACA,SACA,WACA,YACA,SACA,SACA,YACA,UACA,WACA,QACA,UACA,UACA,SACA,WACA,UACA,UACA,SACA,WACA,QACA,YACA,YACA,UACA,UACA,WACA,SACA,QACA,SACA,UACA,YACA,UACA,SACA,QACA,QACA,WACA,UACA,YACA,UACA,QACA,QACA,UACA,UACA,QACA,UACA,WACA,QACA,SACA,QACA,UACA,QACA,YACA,UACA,UACA,UACA,YACA,QACA,SACA,OACA,QACA,QACA,QACA,QACA,UACA,SACA,WACA,SACA,SACA,UACA,WACA,YACA,SACA,UACA,SACA,UACA,QACA,UACA,YACA,UACA,QACA,OACA,QACA,YACA,QACA,QACA,WACA,UACA,WACA,WACA,QACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,YACA,SACA,QACA,QACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,QACA,UACA,YACA,YACA,WACA,QACA,SACA,WACA,WACA,YACA,WACA,SACA,SACA,SACA,SACA,SACA,UACA,WACA,YACA,SACA,QACA,SACA,WACA,UACA,UACA,YACA,OACA,QACA,OACA,MACA,UACA,WACA,UACA,SACA,SACA,SACA,OACA,UACA,WACA,WACA,SACA,SACA,UACA,OACA,YACA,QACA,OACA,OACA,SACA,YACA,SACA,YACA,SACA,WACA,SACA,UACA,YACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,UACA,MACA,QACA,SACA,SACA,SACA,UACA,WACA,YACA,UACA,UACA,QACA,UACA,WACA,YACA,UACA,UACA,OACA,SACA,SACA,WACA,SACA,UACA,YACA,WACA,WACA,UACA,SACA,SACA,SACA,OACA,QACA,QACA,QACA,SACA,UACA,UACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,SACA,YACA,UACA,WACA,WACA,QACA,UACA,WACA,WACA,UACA,QACA,YACA,UACA,OACA,UACA,UACA,WACA,YACA,SACA,QACA,OACA,UACA,QACA,WACA,YACA,UACA,WACA,QACA,UACA,OACA,OACA,QACA,QACA,QACA,SACA,QACA,YACA,SACA,SACA,UACA,QACA,SACA,YACA,UACA,WACA,YACA,WACA,WACA,QACA,WACA,YACA,SACA,OACA,OACA,SACA,WACA,SACA,SACA,UACA,WACA,SACA,OACA,YACA,UACA,SACA,OACA,OACA,QACA,QACA,MACA,QACA,UACA,YACA,UACA,WACA,UACA,QACA,WACA,QACA,YACA,QACA,QACA,QACA,UACA,QACA,OACA,SACA,YACA,YACA,UACA,QACA,UACA,SACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,QACA,UACA,UACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,WACA,QACA,QACA,UACA,WACA,SACA,UACA,SACA,QACA,UACA,UACA,QACA,QACA,WACA,YACA,YACA,UACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,WACA,WACA,YACA,WACA,QACA,OACA,QACA,UACA,SACA,WACA,QACA,YACA,YACA,WACA,YACA,UACA,WACA,UACA,WACA,SACA,YACA,YACA,WACA,YACA,SACA,QACA,YACA,UACA,WACA,YACA,UACA,WACA,QACA,OACA,SACA,YACA,SACA,SACA,QACA,SACA,QACA,QACA,UACA,SACA,UACA,UACA,WACA,UACA,WACA,QACA,SACA,WACA,YACA,UACA,YACA,WACA,YACA,UACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,WACA,SACA,SACA,YACA,SACA,SACA,UACA,QACA,WACA,SACA,QACA,QACA,QACA,WACA,SACA,SACA,WACA,YACA,UACA,UACA,WACA,SACA,UACA,SACA,QACA,SACA,SACA,SACA,QACA,QACA,QACA,SACA,YACA,YACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,OACA,UACA,WACA,WACA,QACA,SACA,WACA,SACA,WACA,WACA,YACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,QACA,WACA,WACA,SACA,SACA,SACA,YACA,UACA,YACA,YACA,SACA,QACA,UACA,QACA,QACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,QACA,QACA,QACA,SACA,WACA,YACA,SACA,UACA,WACA,WACA,YACA,UACA,QACA,WACA,UACA,YACA,UACA,WACA,SACA,WACA,UACA,WACA,UACA,YACA,UACA,UACA,WACA,QACA,QACA,SACA,YACA,SACA,UACA,SACA,UACA,YACA,UACA,QACA,YACA,WACA,WACA,YACA,QACA,QACA,QACA,YACA,WACA,YACA,YACA,UACA,OACA,SACA,UACA,OACA,SACA,UACA,YACA,YACA,WACA,YACA,UACA,OACA,QACA,UACA,UACA,YACA,SACA,WACA,YACA,QACA,YACA,YACA,UACA,WACA,UACA,WACA,WACA,WACA,SACA,WACA,SACA,UACA,YACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,YACA,YACA,YACA,UACA,QACA,QACA,SACA,QACA,QACA,YACA,YACA,WACA,UACA,UACA,WACA,YACA,WACA,UACA,YACA,YACA,QACA,QACA,QACA,WACA,UACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,UACA,QACA,QACA,SACA,SACA,SACA,WACA,YACA,QACA,SACA,UACA,SACA,WACA,SACA,SACA,SACA,SACA,WACA,SACA,WACA,SACA,SACA,WACA,YACA,WACA,YACA,SACA,YACA,UACA,WACA,QACA,SACA,QACA,UACA,UACA,UACA,WACA,SACA,QACA,UACA,UACA,SACA,QACA,UACA,WACA,SACA,UACA,YACA,QACA,QACA,UACA,UACA,WACA,QACA,SACA,WACA,SACA,UACA,YACA,UACA,WACA,SACA,QACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,YACA,UACA,WACA,SACA,WACA,UACA,YACA,WACA,YACA,YACA,WACA,SACA,UACA,WACA,YACA,YACA,YACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,YACA,UACA,WACA,SACA,WACA,WACA,UACA,SACA,SACA,YACA,UACA,YACA,OACA,UACA,SACA,SACA,OACA,WACA,YACA,UACA,SACA,YACA,WACA,QACA,UACA,QACA,WACA,WACA,WACA,SACA,UACA,UACA,UACA,SACA,OACA,SACA,WACA,YACA,SACA,YACA,YACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,SACA,WACA,SACA,UACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,YACA,SACA,UACA,WACA,UACA,UACA,UACA,UACA,WACA,UACA,YACA,YACA,WACA,SACA,WACA,UACA,YACA,WACA,QACA,UACA,UACA,WACA,YACA,YACA,OACA,YACA,UACA,YACA,OACA,WACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,SACA,UACA,UACA,YACA,YACA,UACA,WACA,WACA,WACA,UACA,WACA,QACA,QACA,SACA,SACA,UACA,UACA,QACA,SACA,QACA,QACA,QACA,WACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,WACA,WACA,YACA,YACA,QACA,SACA,UACA,UACA,QACA,WACA,SACA,SACA,YACA,UACA,YACA,UACA,SACA,WACA,QACA,OACA,UACA,WACA,UACA,UACA,WACA,UACA,YACA,MACA,UACA,OACA,SACA,SACA,WACA,OACA,QACA,SACA,WACA,QACA,SACA,OACA,SACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,UACA,UACA,OACA,YACA,SACA,SACA,UACA,QACA,SACA,SACA,WACA,OACA,SACA,QACA,YACA,UACA,QACA,WACA,SACA,WACA,SACA,QACA,SACA,QACA,OACA,OACA,UACA,YACA,OACA,QACA,QACA,WACA,WACA,UACA,UACA,YACA,QACA,SACA,WACA,UACA,UACA,YACA,WACA,WACA,QACA,UACA,QACA,QACA,SACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,QACA,QACA,WACA,SACA,SACA,WACA,YACA,SACA,SACA,SACA,WACA,SACA,YACA,SACA,WACA,YACA,YACA,UACA,WACA,OACA,QACA,WACA,WACA,OACA,YACA,UACA,QACA,QACA,QACA,SACA,WACA,UACA,OACA,QACA,UACA,UACA,YACA,YACA,WACA,UACA,OACA,SACA,OACA,OACA,QACA,SACA,UACA,YACA,UACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,OACA,UACA,OACA,SACA,SACA,SACA,UACA,YACA,SACA,SACA,SACA,QACA,UACA,QACA,WACA,UACA,QACA,UACA,YACA,UACA,UACA,WACA,YACA,QACA,UACA,SACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,QACA,QACA,SACA,WACA,WACA,OACA,YACA,WACA,YACA,UACA,QACA,SACA,OACA,UACA,UACA,YACA,SACA,SACA,QACA,WACA,SACA,QACA,WACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,WACA,WACA,UACA,YACA,SACA,WACA,WACA,UACA,QACA,SACA,YACA,WACA,UACA,YACA,UACA,WACA,WACA,UACA,OACA,SACA,WACA,UACA,UACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,YACA,SACA,WACA,QACA,SACA,QACA,QACA,UACA,QACA,SACA,YACA,UACA,WACA,WACA,YACA,QACA,MACA,QACA,WACA,UACA,UACA,UACA,MACA,UACA,QACA,SACA,WACA,QACA,SACA,UACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,OACA,MACA,QACA,QACA,QACA,WACA,SACA,YACA,SACA,QACA,QACA,UACA,YACA,OACA,WACA,QACA,QACA,QACA,YACA,UACA,UACA,WACA,SACA,SACA,UACA,SACA,QACA,OACA,QACA,WACA,YACA,QACA,YACA,WACA,SACA,YACA,SACA,YACA,YACA,WACA,UACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,UACA,YACA,WACA,SACA,SACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,UACA,WACA,WACA,YACA,UACA,YACA,YACA,UACA,UACA,SACA,YACA,YACA,UACA,QACA,SACA,UACA,SACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,SACA,YACA,YACA,WACA,UACA,UACA,UACA,UACA,YACA,UACA,YACA,WACA,QACA,YACA,UACA,YACA,SACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,YACA,YACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,UACA,SACA,YACA,UACA,YACA,WACA,UACA,WACA,UACA,SACA,WACA,SACA,YACA,UACA,WACA,YACA,WACA,YACA,WACA,UACA,YACA,SACA,YACA,YACA,YACA,SACA,WACA,UACA,YACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,SACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,SACA,UACA,WACA,YACA,YACA,WACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,YACA,WACA,UACA,YACA,SACA,SACA,UACA,WACA,UACA,UACA,YACA,YACA,QACA,YACA,YACA,YACA,YACA,YACA,QACA,WACA,YACA,SACA,WACA,OACA,YACA,WACA,WACA,UACA,SACA,YACA,YACA,UACA,UACA,UACA,WACA,WACA,YACA,UACA,SACA,YACA,YACA,YACA,YACA,UACA,WACA,WACA,QACA,YACA,WACA,WACA,WACA,YACA,YACA,UACA,WACA,WACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,UACA,WACA,UACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,UACA,YACA,YACA,WACA,YACA,SACA,WACA,SACA,YACA,WACA,UACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,WACA,SACA,YACA,WACA,UACA,WACA,UACA,YACA,YACA,SACA,SACA,YACA,YACA,YACA,WACA,SACA,YACA,YACA,WACA,SACA,YACA,YACA,UACA,SACA,YACA,SACA,WACA,WACA,SACA,SACA,WACA,UACA,WACA,YACA,YACA,UACA,WACA,WACA,YACA,WACA,WACA,SACA,WACA,YACA,SACA,YACA,YACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,YACA,UACA,YACA,YACA,WACA,WACA,WACA,SACA,UACA,WACA,YACA,UACA,UACA,YACA,WACA,UACA,WACA,WACA,SACA,QACA,QACA,UACA,WACA,WACA,YACA,SACA,YACA,YACA,YACA,YACA,UACA,YACA,SACA,UACA,WACA,UACA,UACA,WACA,SACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,YACA,UACA,QACA,YACA,SACA,WACA,YACA,SACA,UACA,YACA,YACA,YACA,SACA,YACA,WACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,WACA,YACA,SACA,UACA,UACA,WACA,SACA,SACA,SACA,WACA,YACA,SACA,OACA,QACA,UACA,WACA,UACA,SACA,SACA,UACA,SACA,UACA,WACA,UACA,UACA,WACA,WACA,UACA,SACA,UACA,SACA,WACA,SACA,SACA,UACA,QACA,SACA,WACA,UACA,SACA,SACA,YACA,UACA,SACA,QACA,UACA,OACA,YACA,OACA,QACA,QACA,UACA,UACA,UACA,SACA,SACA,QACA,UACA,SACA,SACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,QACA,SACA,SACA,YACA,QACA,UACA,SACA,SACA,WACA,UACA,YACA,WACA,WACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,SACA,WACA,OACA,QACA,SACA,YACA,SACA,WACA,SACA,WACA,UACA,SACA,YACA,WACA,WACA,YACA,UACA,QACA,QACA,YACA,WACA,UACA,UACA,SACA,QACA,UACA,SACA,YACA,WACA,UACA,OACA,SACA,OACA,UACA,OACA,WACA,YACA,SACA,QACA,OACA,WACA,UACA,QACA,WACA,SACA,UACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,UACA,UACA,YACA,WACA,SACA,SACA,QACA,QACA,UACA,WACA,QACA,OACA,YACA,UACA,WACA,UACA,UACA,SACA,WACA,UACA,QACA,QACA,WACA,WACA,UACA,WACA,YACA,UACA,YACA,QACA,WACA,WACA,UACA,WACA,QACA,UACA,OACA,WACA,SACA,UACA,UACA,QACA,SACA,UACA,QACA,QACA,SACA,YACA,MACA,QACA,SACA,QACA,QACA,QACA,SACA,QACA,OACA,SACA,OACA,UACA,SACA,SACA,QACA,OACA,UACA,SACA,UACA,SACA,WACA,YACA,YACA,WACA,YACA,UACA,SACA,SACA,YACA,UACA,UACA,WACA,YACA,UACA,OACA,UACA,QACA,QACA,WACA,SACA,OACA,WACA,SACA,OACA,QACA,QACA,WACA,QACA,YACA,SACA,QACA,WACA,UACA,QACA,WACA,UACA,WACA,SACA,MACA,OACA,SACA,QACA,SACA,QACA,QACA,YACA,UACA,OACA,OACA,YACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,SACA,WACA,SACA,YACA,UACA,SACA,YACA,OACA,OACA,QACA,UACA,OACA,OACA,UACA,SACA,WACA,SACA,OACA,QACA,WACA,SACA,OACA,SACA,OACA,OACA,WACA,QACA,UACA,SACA,SACA,WACA,SACA,MACA,OACA,YACA,YACA,YACA,YACA,YACA,UACA,OACA,OACA,SACA,OACA,QACA,OACA,OACA,UACA,UACA,YACA,QACA,YACA,YACA,QACA,QACA,QACA,MACA,UACA,QACA,SACA,WACA,UACA,WACA,SACA,UACA,UACA,UACA,UACA,QACA,UACA,UACA,YACA,UACA,WACA,UACA,YACA,UACA,OACA,Q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a,GAAK,YAAY,GAAK,WAAW,GAAK,YAAY,GAAK,cAAc,GAAK,aAAa,GAAK,YAAY,GAAK,YAAY,GAAK,UAAU,GAAK,YAAY,GAAK,YAAY,GAAK,WAAW,GAAK,aAAa,GAAK,aAAa,GAAK,YAAY,GAAK,WAAW,GAAK,WAAW,GAAK,WAAW,GAAK,WAAW,GAAK,WAAW,GAAK,YAAY,GAAK,aAAa,GAAK,UAAU,GAAK,WAAW,GAAK,UAAU,GAAK,cAAc,GAAK,aAAa,GAAK,WAAW,GAAK,WAAW,GAAK,YAAY,GAAK,UAAU,GAAK,aAAa,GAAK,YAAY,GAAK,YAAY,GAAK,WAAW,GAAK,YAAY,GAAK,YAAY,GAAK,aAAa,GAAK,QAAQ,GAAK,YAAY,GAAK,YAAY,GAAK,cAAc,GAAK,aAAa,GAAK,WAAW,GAAK,WAAW,GAAK,UAAU,GAAK,WAAW,GAAK,YAAY,GAAK,WAAW,GAAK,YAAY,GAAK,cAAc,GAAK,WAAW,GAAK,WAAW,GAAK,aAAa,GAAK,aAAa,GAAK,YAAY,GAAK,YAAY,GAAK,WAAW,GAAK,aAAa,GAAK,YAAY,GAAK,UAAU,GAAK,YAAY,GAAK,YAAY,GAAK,YAAY,GAAK,UAAU,GAAK,QAAQ,GAAK,UAAU,GAAK,SAAS,GAAK,YAAY,GAAK,WAAW,GAAK,aAAa,GAAK,aAAa,GAAK,YAAY,GAAK,YAAY,GAAK,aAAa,GAAK,YAAY,GAAK,WAAW,GAAK,SAAS,GAAK,UAAU,GAAK,YAAY,GAAK,YAAY,GAAK,YAAY,GAAK,aAAa,GAAK,WAAW,GAAK,aAAa,GAAK,YAAY,GAAK,UAAU,GAAK,WAAW,GAAK,WAAW,GAAK,YAAY,GAAK,WAAW,GAAK,YAAY,GAAK,YAAY,GAAK,YAAY,GAAK,YAAY,GAAK,aAAa,GAAK,aAAa,GAAK,UAAU,GAAK,aAAa,GAAK,aAAa,GAAK,UAAU,GAAK,aAAa,GAAK,aAAa,GAAK,aAAa,GAAK,YAAY,GAAK,aAAa,GAAK,YAAY,GAAK,YAAY,GAAK,WAAW,GAAK,WAAW,GAAK,UAAU,GAAK,aAAa,GAAK,aAAa,GAAK,aAAa,GAAK,WAAW,GAAK,aAAa,GAAK,aAAa,GAAK,aAAa,GAAK,WAAW,GAAK,aAAa,GAAK,YAAY,GAAK,YAAY,GAAK,YAAY,GAAK,WAAW,GAAK,WAAW,GAAK,YAAY,GAAK,WAAW,GAAK,YAAY,GAAK,YAAY,GAAK,YAAY,GAAK,WAAW,GAAK,WAAW,GAAK,YAAY,GAAK,YAAY,GAAK,UAAU,GAAK,WAAW,GAAK,WAAW,GAAK,WAAW,GAAK,WAAW,GAAK,WAAW,GAAK,aAAa,GAAK,YAAY,GAAK,WAAW,GAAK,aAAa,GAAK,WAAW,GAAK,WAAW,GAAK,UAAU,GAAK,YAAY,GAAK,aAAa,GAAK,YAAY,GAAK,YAAY,GAAK,YAAY,GAAK,SAAS,GAAK,WAAW,GAAK,SAAS,GAAK,aAAa,GAAK,WAAW,GAAK,YAAY,GAAK,WAAW,GAAK,aAAa,GAAK,UAAU,GAAK,UAAU,GAAK,YAAY,GAAK,WAAW,GAAK,WAAW,GAAK,YAAY,GAAK,WAAW,GAAK,WAAW,GAAK,aAAa,GAAK,aAAa,GAAK,YAAY,GAAK,SAAS,GAAK,aAAa,GAAK,YAAY,GAAK,YAAY,GAAK,UAAU,GAAK,YAAY,GAAK,WAAW,GAAK,YAAY,GAAK,YAAY,GAAK,YAAY,GAAK,aAAa,GAAK,YAAY,GAAK,YAAY,GAAK,UAAU,GAAK,UAAU,GAAK,YAAY,GAAK,YAAY,GAAK,WAAW,GAAK,QAAQ,GAAK,WAAW,GAAK,WAAW,GAAK,YAAY,GAAK,WAAW,GAAK,WAAW,GAAK,YAAY,GAAK,WAAW,GAAK,UAAU,GAAK,YAAY,GAAK,UAAU,GAAK,WAAW,GAAK,aAAa,GAAK,YAAY,GAAK,WAAW,GAAK,OAAO,GAAK,aAAa,GAAK,WAAW,GAAK,WAAW,GAAK,YAAY,GAAK,YAAY,GAAK,OAAO,GAAK,WAAW,GAAK,WAAW,GAAK,WAAW,GAAK,UAAU,GAAK,aAAa,GAAK,aAAa,GAAK,SAAS,GAAK,YAAY,GAAK,YAAY,GAAK,YAAY,GAAK,YAAY,GAAK,aAAa,GAAK,WAAW,GAAK,YAAY,GAAK,aAAa,GAAK,aAAa,GAAK,aAAa,GAAK,aAAa,GAAK,aAAa,GAAK,YAAY,GAAK,UAAU,GAAK,SAAS,GAAK,UAAU,GAAK,WAAW,GAAK,YAAY,GAAK,YAAY,GAAK,YAAY,GAAK,YAAY,GAAK,kvBCAl9H,SAAS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K,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAA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","sources":["webpack://app/./src/components/LoadingSpinner/styles.module.less?d742","components/LoadingSpinner/index.js","config/index.js","constants.js","hooks/apis/usePortalItem.js","hooks/useWebSocket.js","pages/Core/context.js","assets/errors/reload.svg","pages/Error/ReloadPage.js","redux/hooks/useGlobalDialog.js","redux/hooks/usePrivyLoginMethod.js","redux/hooks/useSlug.js","redux/slices/global.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","utils/lambda.js","../node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/react/dist/emotion-element-5486c51c.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@emotion/serialize/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@mui/material/Backdrop/backdropClasses.js","../node_modules/@mui/system/esm/createBox.js","../node_modules/@mui/material/Box/boxClasses.js","../node_modules/@mui/material/Box/Box.js","../node_modules/@mui/material/Button/buttonClasses.js","../node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js","../node_modules/@mui/material/Button/Button.js","../node_modules/@mui/material/ButtonBase/Ripple.js","../node_modules/@mui/material/ButtonBase/touchRippleClasses.js","../node_modules/@mui/material/ButtonBase/TouchRipple.js","../node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","../node_modules/@mui/material/ButtonBase/ButtonBase.js","../node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js","../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../node_modules/@mui/material/CircularProgress/CircularProgress.js","../node_modules/@mui/system/esm/Container/createContainer.js","../node_modules/@mui/material/Container/Container.js","../node_modules/@mui/material/DefaultPropsProvider/DefaultPropsProvider.js","../node_modules/@mui/material/FilledInput/filledInputClasses.js","../node_modules/@mui/system/esm/GlobalStyles/GlobalStyles.js","../node_modules/@mui/material/GlobalStyles/GlobalStyles.js","../node_modules/@mui/material/InputBase/inputBaseClasses.js","../node_modules/@mui/material/InputLabel/inputLabelClasses.js","../node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js","../node_modules/@mui/material/Paper/paperClasses.js","../node_modules/@mui/material/Typography/typographyClasses.js","../node_modules/@mui/material/Typography/Typography.js","../node_modules/@mui/material/colors/common.js","../node_modules/@mui/material/colors/grey.js","../node_modules/@mui/material/colors/purple.js","../node_modules/@mui/material/colors/red.js","../node_modules/@mui/material/colors/orange.js","../node_modules/@mui/material/colors/blue.js","../node_modules/@mui/material/colors/lightBlue.js","../node_modules/@mui/material/colors/green.js","../node_modules/@mui/material/styles/createPalette.js","../node_modules/@mui/material/styles/createTypography.js","../node_modules/@mui/material/styles/shadows.js","../node_modules/@mui/material/styles/zIndex.js","../node_modules/@mui/material/styles/createTheme.js","../node_modules/@mui/material/styles/createMixins.js","../node_modules/@mui/material/styles/createTransitions.js","../node_modules/@mui/material/styles/cssUtils.js","../node_modules/@mui/material/styles/defaultTheme.js","../node_modules/@mui/material/styles/identifier.js","../node_modules/@mui/material/styles/rootShouldForwardProp.js","../node_modules/@mui/material/styles/slotShouldForwardProp.js","../node_modules/@mui/material/styles/styled.js","../node_modules/@mui/material/styles/useTheme.js","../node_modules/@mui/material/utils/capitalize.js","../node_modules/@mui/material/utils/useEventCallback.js","../node_modules/@mui/material/utils/useForkRef.js","../node_modules/@mui/utils/esm/useIsFocusVisible/useIsFocusVisible.js","../node_modules/@mui/material/utils/useIsFocusVisible.js","../node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js","../node_modules/@mui/styled-engine/index.js","../node_modules/@mui/system/colorManipulator.js","../node_modules/@mui/system/createStyled.js","../node_modules/@mui/system/esm/DefaultPropsProvider/DefaultPropsProvider.js","../node_modules/@mui/system/esm/RtlProvider/index.js","../node_modules/@mui/system/esm/breakpoints.js","../node_modules/@mui/system/esm/createTheme/applyStyles.js","../node_modules/@mui/system/esm/createTheme/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/merge.js","../node_modules/@mui/system/esm/spacing.js","../node_modules/@mui/system/esm/memoize.js","../node_modules/@mui/system/esm/style.js","../node_modules/@mui/system/esm/compose.js","../node_modules/@mui/system/esm/borders.js","../node_modules/@mui/system/esm/cssGrid.js","../node_modules/@mui/system/esm/palette.js","../node_modules/@mui/system/esm/sizing.js","../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/system/esm/createStyled.js","../node_modules/@mui/system/esm/styled.js","../node_modules/@mui/system/esm/useMediaQuery/useMediaQuery.js","../node_modules/@mui/system/esm/useTheme.js","../node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../node_modules/@mui/system/esm/useThemeWithoutDefault.js","../node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../node_modules/@mui/utils/esm/capitalize/capitalize.js","../node_modules/@mui/utils/esm/clamp/clamp.js","../node_modules/@mui/utils/esm/composeClasses/composeClasses.js","../node_modules/@mui/utils/esm/deepmerge/deepmerge.js","../node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","../node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../node_modules/@mui/utils/esm/getDisplayName/getDisplayName.js","../node_modules/@mui/utils/esm/resolveProps/resolveProps.js","../node_modules/@mui/utils/esm/setRef/setRef.js","../node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","../node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js","../node_modules/@mui/utils/esm/useForkRef/useForkRef.js","../node_modules/@mui/utils/esm/useLazyRef/useLazyRef.js","../node_modules/@mui/utils/esm/useOnMount/useOnMount.js","../node_modules/@mui/utils/esm/useTimeout/useTimeout.js","../node_modules/immer/src/utils/errors.ts","../node_modules/immer/src/utils/common.ts","../node_modules/immer/src/utils/plugins.ts","../node_modules/immer/src/core/scope.ts","../node_modules/immer/src/core/finalize.ts","../node_modules/immer/src/core/proxy.ts","../node_modules/immer/src/core/immerClass.ts","../node_modules/immer/src/core/current.ts","../node_modules/immer/src/plugins/es5.ts","../node_modules/immer/src/immer.ts","../node_modules/immer/src/utils/env.ts","../node_modules/redux-thunk/es/index.js","../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts","../node_modules/@reduxjs/toolkit/src/isPlainObject.ts","../node_modules/@reduxjs/toolkit/src/createAction.ts","../node_modules/@reduxjs/toolkit/src/utils.ts","../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts","../node_modules/@reduxjs/toolkit/src/configureStore.ts","../node_modules/@reduxjs/toolkit/src/mapBuilders.ts","../node_modules/@reduxjs/toolkit/src/createSlice.ts","../node_modules/@reduxjs/toolkit/src/createReducer.ts","../node_modules/@reduxjs/toolkit/src/nanoid.ts","../node_modules/@reduxjs/toolkit/src/createAsyncThunk.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts","../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts","../node_modules/@reduxjs/toolkit/src/index.ts","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/@sentry/src/constants.ts","../node_modules/@sentry/src/debug-build.ts","../node_modules/@sentry/src/eventProcessors.ts","../node_modules/@sentry/src/exports.ts","../node_modules/@sentry/src/hub.ts","../node_modules/@sentry/src/scope.ts","../node_modules/@sentry/src/session.ts","../node_modules/@sentry/src/tracing/dynamicSamplingContext.ts","../node_modules/@sentry/src/utils/applyScopeDataToEvent.ts","../node_modules/@sentry/src/utils/getRootSpan.ts","../node_modules/@sentry/src/utils/prepareEvent.ts","../node_modules/@sentry/src/utils/spanUtils.ts","../node_modules/@sentry/src/version.ts","../node_modules/@sentry/src/browser.ts","../node_modules/@sentry/src/env.ts","../node_modules/@sentry/src/is.ts","../node_modules/@sentry/src/logger.ts","../node_modules/@sentry/src/misc.ts","../node_modules/@sentry/src/node.ts","../node_modules/@sentry/src/normalize.ts","../node_modules/@sentry/src/memo.ts","../node_modules/@sentry/src/object.ts","../node_modules/@sentry/src/stacktrace.ts","../node_modules/@sentry/src/string.ts","../node_modules/@sentry/src/syncpromise.ts","../node_modules/@sentry/src/time.ts","../node_modules/@sentry/src/worldwide.ts","../../crypto.ts","../../env.ts","../../index.ts","../node_modules/@walletconnect/environment/node_modules/tslib/tslib.es6.js","../node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/ws/browser.js","../../../../src/constants/index.ts","../../../../src/constants/misc.ts","../../../../src/constants/time.ts","../../../../src/types/index.ts","../../../../src/types/watch.ts","../../../../src/utils/convert.ts","../../../../src/utils/delay.ts","../../../../src/utils/index.ts","../../watch.ts","../node_modules/@walletconnect/time/node_modules/tslib/tslib.es6.js","../node_modules/@walletconnect/utils/node_modules/elliptic/lib/elliptic.js","../node_modules/@walletconnect/utils/node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/@walletconnect/utils/node_modules/elliptic/lib/elliptic/curve/edwards.js","../node_modules/@walletconnect/utils/node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/@walletconnect/utils/node_modules/elliptic/lib/elliptic/curve/mont.js","../node_modules/@walletconnect/utils/node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/@walletconnect/utils/node_modules/elliptic/lib/elliptic/curves.js","../node_modules/@walletconnect/utils/node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/@walletconnect/utils/node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/@walletconnect/utils/node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/@walletconnect/utils/node_modules/elliptic/lib/elliptic/eddsa/index.js","../node_modules/@walletconnect/utils/node_modules/elliptic/lib/elliptic/eddsa/key.js","../node_modules/@walletconnect/utils/node_modules/elliptic/lib/elliptic/eddsa/signature.js","../node_modules/@walletconnect/utils/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../node_modules/@walletconnect/utils/node_modules/elliptic/lib/elliptic/utils.js","../node_modules/base64-js/index.js","../node_modules/bn.js/lib/bn.js","../node_modules/brorand/index.js","../node_modules/buffer/index.js","../node_modules/cross-fetch/dist/browser-ponyfill.js","../node_modules/dijkstrajs/dijkstra.js","../node_modules/eventemitter3/index.js","../node_modules/events/events.js","../node_modules/fast-password-entropy/es5/index.js","../node_modules/hash.js/lib/hash.js","../node_modules/hash.js/lib/hash/common.js","../node_modules/hash.js/lib/hash/hmac.js","../node_modules/hash.js/lib/hash/ripemd.js","../node_modules/hash.js/lib/hash/sha.js","../node_modules/hash.js/lib/hash/sha/1.js","../node_modules/hash.js/lib/hash/sha/224.js","../node_modules/hash.js/lib/hash/sha/256.js","../node_modules/hash.js/lib/hash/sha/384.js","../node_modules/hash.js/lib/hash/sha/512.js","../node_modules/hash.js/lib/hash/sha/common.js","../node_modules/hash.js/lib/hash/utils.js","../node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/ieee754/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/invariant/browser.js","../node_modules/lodash.isequal/index.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_assignMergeValue.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseHas.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/_baseMerge.js","../node_modules/lodash/_baseMergeDeep.js","../node_modules/lodash/_baseRest.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_copyObject.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_createAssigner.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isIterateeCall.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/_root.js","../node_modules/lodash/_safeGet.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/constant.js","../node_modules/lodash/eq.js","../node_modules/lodash/get.js","../node_modules/lodash/has.js","../node_modules/lodash/identity.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isArrayLikeObject.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isPlainObject.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keysIn.js","../node_modules/lodash/memoize.js","../node_modules/lodash/merge.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/toPlainObject.js","../node_modules/lodash/toString.js","../node_modules/minimalistic-assert/index.js","../node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/process/browser.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/qrcode/lib/browser.js","../node_modules/qrcode/lib/can-promise.js","../node_modules/qrcode/lib/core/alignment-pattern.js","../node_modules/qrcode/lib/core/alphanumeric-data.js","../node_modules/qrcode/lib/core/bit-buffer.js","../node_modules/qrcode/lib/core/bit-matrix.js","../node_modules/qrcode/lib/core/byte-data.js","../node_modules/qrcode/lib/core/error-correction-code.js","../node_modules/qrcode/lib/core/error-correction-level.js","../node_modules/qrcode/lib/core/finder-pattern.js","../node_modules/qrcode/lib/core/format-info.js","../node_modules/qrcode/lib/core/galois-field.js","../node_modules/qrcode/lib/core/kanji-data.js","../node_modules/qrcode/lib/core/mask-pattern.js","../node_modules/qrcode/lib/core/mode.js","../node_modules/qrcode/lib/core/numeric-data.js","../node_modules/qrcode/lib/core/polynomial.js","../node_modules/qrcode/lib/core/qrcode.js","../node_modules/qrcode/lib/core/reed-solomon-encoder.js","../node_modules/qrcode/lib/core/regex.js","../node_modules/qrcode/lib/core/segments.js","../node_modules/qrcode/lib/core/utils.js","../node_modules/qrcode/lib/core/version-check.js","../node_modules/qrcode/lib/core/version.js","../node_modules/qrcode/lib/renderer/canvas.js","../node_modules/qrcode/lib/renderer/svg-tag.js","../node_modules/qrcode/lib/renderer/utils.js","../node_modules/quick-format-unescaped/index.js","../node_modules/react-device-detect/dist/lib.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-gtm-module/dist/Snippets.js","../node_modules/react-gtm-module/dist/TagManager.js","../node_modules/react-gtm-module/dist/index.js","../node_modules/react-gtm-module/dist/utils/warn.js","../node_modules/react-helmet-async/src/constants.js","../node_modules/react-helmet-async/src/utils.js","../node_modules/react-helmet-async/src/server.js","../node_modules/react-helmet-async/src/HelmetData.js","../node_modules/react-helmet-async/src/Provider.js","../node_modules/react-helmet-async/src/client.js","../node_modules/react-helmet-async/src/Dispatcher.js","../node_modules/react-helmet-async/src/index.js","../node_modules/react-helmet-async/node_modules/react-fast-compare/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/utils/useSyncExternalStore.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/connect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/index.js","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/deprecations.ts","../node_modules/react-router/lib/components.tsx","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-use-websocket/src/index.ts","../node_modules/react-use-websocket/src/lib/attach-listener.ts","../node_modules/react-use-websocket/src/lib/attach-shared-listeners.ts","../node_modules/react-use-websocket/src/lib/constants.ts","../node_modules/react-use-websocket/src/lib/create-or-join.ts","../node_modules/react-use-websocket/src/lib/get-url.ts","../node_modules/react-use-websocket/src/lib/globals.ts","../node_modules/react-use-websocket/src/lib/heartbeat.ts","../node_modules/react-use-websocket/src/lib/manage-subscribers.ts","../node_modules/react-use-websocket/src/lib/proxy.ts","../node_modules/react-use-websocket/src/lib/socket-io.ts","../node_modules/react-use-websocket/src/lib/use-event-source.ts","../node_modules/react-use-websocket/src/lib/use-socket-io.ts","../node_modules/react-use-websocket/src/lib/use-websocket.ts","../node_modules/react-use-websocket/src/lib/util.ts","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/redux/es/redux.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/shallowequal/index.js","../node_modules/styled-components/node_modules/tslib/tslib.es6.mjs","../node_modules/styled-components/node_modules/stylis/src/Enum.js","../node_modules/styled-components/node_modules/stylis/src/Utility.js","../node_modules/styled-components/node_modules/stylis/src/Tokenizer.js","../node_modules/styled-components/node_modules/stylis/src/Serializer.js","../node_modules/styled-components/node_modules/stylis/src/Prefixer.js","../node_modules/styled-components/node_modules/stylis/src/Middleware.js","../node_modules/styled-components/node_modules/stylis/src/Parser.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/styled-components/src/constants.ts","../node_modules/styled-components/src/utils/empties.ts","../node_modules/styled-components/src/utils/checkDynamicCreation.ts","../node_modules/styled-components/src/utils/determineTheme.ts","../node_modules/styled-components/src/utils/domElements.ts","../node_modules/styled-components/src/utils/escape.ts","../node_modules/styled-components/src/utils/generateAlphabeticName.ts","../node_modules/styled-components/src/utils/hash.ts","../node_modules/styled-components/src/utils/generateComponentId.ts","../node_modules/styled-components/src/utils/getComponentName.ts","../node_modules/styled-components/src/utils/isTag.ts","../node_modules/styled-components/src/utils/hoist.ts","../node_modules/styled-components/src/utils/isFunction.ts","../node_modules/styled-components/src/utils/isStyledComponent.ts","../node_modules/styled-components/src/utils/joinStrings.ts","../node_modules/styled-components/src/utils/isPlainObject.ts","../node_modules/styled-components/src/utils/mixinDeep.ts","../node_modules/styled-components/src/utils/setToString.ts","../node_modules/styled-components/src/utils/error.ts","../node_modules/styled-components/src/sheet/GroupedTag.ts","../node_modules/styled-components/src/sheet/GroupIDAllocator.ts","../node_modules/styled-components/src/sheet/Rehydration.ts","../node_modules/styled-components/src/utils/nonce.ts","../node_modules/styled-components/src/sheet/dom.ts","../node_modules/styled-components/src/sheet/Tag.ts","../node_modules/styled-components/src/sheet/Sheet.ts","../node_modules/styled-components/src/utils/stylis.ts","../node_modules/styled-components/src/models/StyleSheetManager.tsx","../node_modules/styled-components/src/models/Keyframes.ts","../node_modules/styled-components/src/utils/hyphenateStyleName.ts","../node_modules/styled-components/src/utils/flatten.ts","../node_modules/styled-components/src/utils/addUnitIfNeeded.ts","../node_modules/styled-components/src/utils/isStatelessFunction.ts","../node_modules/styled-components/src/utils/isStaticRules.ts","../node_modules/styled-components/src/models/ComponentStyle.ts","../node_modules/styled-components/src/models/ThemeProvider.tsx","../node_modules/styled-components/src/models/StyledComponent.ts","../node_modules/styled-components/src/utils/generateDisplayName.ts","../node_modules/styled-components/src/utils/interleave.ts","../node_modules/styled-components/src/constructors/css.ts","../node_modules/styled-components/src/constructors/constructWithOptions.ts","../node_modules/styled-components/src/constructors/styled.tsx","../node_modules/styled-components/src/models/GlobalStyle.ts","../node_modules/styled-components/src/constructors/createGlobalStyle.ts","../node_modules/styled-components/src/constructors/keyframes.ts","../node_modules/styled-components/src/models/ServerStyleSheet.tsx","../node_modules/styled-components/src/base.ts","../node_modules/ua-parser-js/dist/ua-parser.min.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/pino/browser.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@noble/hashes/src/hmac.ts","../node_modules/@noble/curves/src/abstract/utils.ts","../node_modules/@noble/curves/src/abstract/modular.ts","../node_modules/@noble/curves/src/abstract/curve.ts","../node_modules/@noble/curves/src/abstract/weierstrass.ts","../node_modules/@noble/curves/src/_shortw_utils.ts","../node_modules/@noble/curves/src/secp256k1.ts","../node_modules/@noble/hashes/src/_assert.ts","../node_modules/@noble/hashes/src/_md.ts","../node_modules/@noble/hashes/src/sha256.ts","../node_modules/@noble/hashes/src/crypto.ts","../node_modules/@noble/hashes/src/utils.ts","../node_modules/mipd/src/store.ts","../node_modules/mipd/src/utils.ts","../node_modules/@privy-io/react-auth/dist/esm/paths-Q47X90aK.mjs","../node_modules/eventemitter3/index.mjs","../node_modules/@privy-io/js-sdk-core/dist/esm/embedded/errors.mjs","../node_modules/ofetch/dist/index.mjs","../node_modules/@privy-io/react-auth/dist/esm/prepareFundingModalData-Dv7ze5Ty.mjs","../node_modules/@heroicons/react/24/outline/esm/ArrowLeftIcon.js","../node_modules/@heroicons/react/24/outline/esm/ArrowRightIcon.js","../node_modules/@heroicons/react/24/outline/esm/QuestionMarkCircleIcon.js","../node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js","../node_modules/detect-browser/es/index.js","../node_modules/@walletconnect/utils/node_modules/viem/errors/version.ts","../node_modules/@walletconnect/utils/node_modules/viem/errors/base.ts","../node_modules/@walletconnect/utils/node_modules/viem/utils/data/isHex.ts","../node_modules/@walletconnect/utils/node_modules/viem/errors/data.ts","../node_modules/@walletconnect/utils/node_modules/viem/utils/data/pad.ts","../node_modules/@walletconnect/utils/node_modules/viem/errors/encoding.ts","../node_modules/@walletconnect/utils/node_modules/viem/utils/data/size.ts","../node_modules/@walletconnect/utils/node_modules/viem/utils/encoding/fromHex.ts","../node_modules/@walletconnect/utils/node_modules/viem/utils/encoding/toHex.ts","../node_modules/@walletconnect/utils/node_modules/viem/utils/encoding/toBytes.ts","../node_modules/@walletconnect/utils/node_modules/@noble/hashes/src/_u64.ts","../node_modules/@walletconnect/utils/node_modules/@noble/hashes/src/sha3.ts","../node_modules/@walletconnect/utils/node_modules/viem/utils/hash/keccak256.ts","../node_modules/@walletconnect/utils/node_modules/viem/utils/lru.ts","../node_modules/@walletconnect/utils/node_modules/viem/utils/address/getAddress.ts","../node_modules/@walletconnect/utils/node_modules/viem/utils/signature/recoverPublicKey.ts","../node_modules/@walletconnect/utils/node_modules/viem/utils/signature/recoverAddress.ts","../node_modules/@walletconnect/utils/node_modules/viem/accounts/utils/publicKeyToAddress.ts","../node_modules/uint8arrays/esm/src/alloc.js","../node_modules/uint8arrays/esm/src/concat.js","../node_modules/multiformats/esm/vendor/base-x.js","../node_modules/multiformats/esm/src/bytes.js","../node_modules/multiformats/esm/src/bases/base.js","../node_modules/multiformats/esm/src/bases/identity.js","../node_modules/multiformats/esm/src/bases/base2.js","../node_modules/multiformats/esm/src/bases/base8.js","../node_modules/multiformats/esm/src/bases/base10.js","../node_modules/multiformats/esm/src/bases/base16.js","../node_modules/multiformats/esm/src/bases/base32.js","../node_modules/multiformats/esm/src/bases/base36.js","../node_modules/multiformats/esm/src/bases/base58.js","../node_modules/multiformats/esm/src/bases/base64.js","../node_modules/multiformats/esm/src/bases/base256emoji.js","../node_modules/multiformats/esm/vendor/varint.js","../node_modules/multiformats/esm/src/varint.js","../node_modules/multiformats/esm/src/hashes/digest.js","../node_modules/multiformats/esm/src/hashes/hasher.js","../node_modules/multiformats/esm/src/hashes/sha2-browser.js","../node_modules/multiformats/esm/src/hashes/identity.js","../node_modules/multiformats/esm/src/codecs/raw.js","../node_modules/multiformats/esm/src/codecs/json.js","../node_modules/multiformats/esm/src/cid.js","../node_modules/multiformats/esm/src/basics.js","../node_modules/uint8arrays/esm/src/util/bases.js","../node_modules/uint8arrays/esm/src/from-string.js","../node_modules/uint8arrays/esm/src/to-string.js","../node_modules/@walletconnect/relay-api/src/misc.ts","../../events.ts","../node_modules/unstorage/dist/shared/unstorage.d569726e.mjs","../node_modules/unstorage/dist/index.mjs","../node_modules/idb-keyval/dist/index.js","../../constants.ts","../../error.ts","../../format.ts","../node_modules/@walletconnect/jsonrpc-types/src/misc.ts","../../url.ts","../../validators.ts","../node_modules/zustand/esm/vanilla.mjs","../node_modules/zustand/esm/react.mjs","../node_modules/@heroicons/react/24/outline/esm/CheckIcon.js","../node_modules/@heroicons/react/24/outline/esm/Square2StackIcon.js","../node_modules/@heroicons/react/24/outline/esm/GlobeAltIcon.js","../node_modules/@privy-io/react-auth/dist/esm/getPublicClient-wHgCncHx.mjs","../node_modules/zustand/esm/vanilla/shallow.mjs","../node_modules/zustand/esm/traditional.mjs","../node_modules/@privy-io/react-auth/dist/esm/useActiveWallet-GrupFUTI.mjs","../node_modules/jose/dist/browser/lib/buffer_utils.js","../node_modules/jose/dist/browser/runtime/base64url.js","../node_modules/jose/dist/browser/util/base64url.js","../node_modules/jose/dist/browser/util/errors.js","../node_modules/jose/dist/browser/util/decode_jwt.js","../node_modules/jose/dist/browser/lib/is_object.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/v4.js","../../../../src/core/storage/ScopedLocalStorage.ts","../../../../src/core/error/constants.ts","../../../../src/core/error/utils.ts","../../../../src/core/error/errors.ts","../../../../src/core/type/index.ts","../../../../src/core/type/util.ts","../../util/cipher.ts","../../../../src/sign/scw/SCWKeyManager.ts","../../src/sdk-info.ts","../../util/provider.ts","../../../../src/sign/scw/SCWSigner.ts","../../../../../src/sign/walletlink/relay/constants.ts","../../../../../../src/sign/walletlink/relay/type/Web3Response.ts","../../../../../../src/sign/walletlink/relay/connection/WalletLinkCipher.ts","../../../../../../src/sign/walletlink/relay/connection/WalletLinkHTTP.ts","../../../../../../src/sign/walletlink/relay/connection/WalletLinkWebSocket.ts","../../../../../../src/sign/walletlink/relay/connection/WalletLinkConnection.ts","../../../../../src/sign/walletlink/relay/RelayEventManager.ts","../../../../../../src/sign/walletlink/relay/type/WalletLinkSession.ts","../../../../../../src/sign/walletlink/relay/ui/components/util.ts","../../../../../../src/sign/walletlink/relay/ui/components/cssReset/cssReset.ts","../../../../../../src/sign/walletlink/relay/ui/components/cssReset/cssReset-css.ts","../node_modules/@coinbase/wallet-sdk/node_modules/clsx/dist/clsx.m.js","../node_modules/preact/src/constants.js","../node_modules/preact/src/util.js","../node_modules/preact/src/options.js","../node_modules/preact/src/create-element.js","../node_modules/preact/src/component.js","../node_modules/preact/src/diff/props.js","../node_modules/preact/src/diff/children.js","../node_modules/preact/src/diff/index.js","../node_modules/preact/src/render.js","../node_modules/preact/src/diff/catch-error.js","../node_modules/preact/hooks/src/index.js","../../../../../../src/sign/walletlink/relay/ui/components/Snackbar/Snackbar.tsx","../../../../../../src/sign/walletlink/relay/ui/components/Snackbar/Snackbar-css.ts","../../../../../../src/sign/walletlink/relay/ui/WalletLinkRelayUI.ts","../../../../../../src/sign/walletlink/relay/ui/components/RedirectDialog/RedirectDialog.tsx","../../../../../../src/sign/walletlink/relay/ui/components/RedirectDialog/RedirectDialog-css.ts","../../core/constants.ts","../../../../../../src/sign/walletlink/relay/ui/WLMobileRelayUI.ts","../../../../../src/sign/walletlink/relay/WalletLinkRelay.ts","../../../../src/sign/walletlink/WalletLinkSigner.ts","../../sign/util.ts","../../util/checkCrossOriginOpenerPolicy.ts","../../util/web.ts","../../../../src/core/communicator/Communicator.ts","../../../../src/core/error/serialize.ts","../../../../src/core/provider/interface.ts","../../src/CoinbaseWalletProvider.ts","../../src/CoinbaseWalletSDK.ts","../../util/validatePreferences.ts","../../assets/wallet-logo.ts","../node_modules/viem/errors/unit.ts","../node_modules/viem/utils/unit/parseEther.ts","../node_modules/viem/utils/unit/parseUnits.ts","../node_modules/js-cookie/dist/js.cookie.mjs","../node_modules/@marsidev/react-turnstile/dist/index.mjs","../node_modules/@heroicons/react/24/outline/esm/ExclamationTriangleIcon.js","../node_modules/@heroicons/react/24/outline/esm/WalletIcon.js","../node_modules/@heroicons/react/24/outline/esm/ExclamationCircleIcon.js","../node_modules/@heroicons/react/24/outline/esm/ArrowTopRightOnSquareIcon.js","../node_modules/@heroicons/react/24/solid/esm/DocumentCheckIcon.js","../node_modules/@heroicons/react/20/solid/esm/CheckIcon.js","../node_modules/@heroicons/react/24/outline/esm/EnvelopeIcon.js","../node_modules/@heroicons/react/24/outline/esm/PhoneIcon.js","../node_modules/@heroicons/react/24/solid/esm/CheckCircleIcon.js","../node_modules/@heroicons/react/24/solid/esm/XCircleIcon.js","../node_modules/@heroicons/react/24/outline/esm/CheckCircleIcon.js","../node_modules/@heroicons/react/24/outline/esm/CloudArrowUpIcon.js","../node_modules/@heroicons/react/24/outline/esm/NoSymbolIcon.js","../node_modules/secure-password-utilities/src/csprng.ts","../node_modules/secure-password-utilities/src/random.ts","../node_modules/secure-password-utilities/src/wordlists.ts","../node_modules/@heroicons/react/24/outline/esm/ArrowPathIcon.js","../node_modules/@heroicons/react/24/outline/esm/EyeIcon.js","../node_modules/@heroicons/react/24/outline/esm/EyeSlashIcon.js","../node_modules/@heroicons/react/24/outline/esm/KeyIcon.js","../node_modules/@heroicons/react/24/outline/esm/ArrowDownTrayIcon.js","../node_modules/@heroicons/react/24/outline/esm/ClipboardDocumentCheckIcon.js","../node_modules/@heroicons/react/24/outline/esm/DocumentDuplicateIcon.js","../node_modules/@heroicons/react/24/outline/esm/UserCircleIcon.js","../node_modules/@heroicons/react/24/solid/esm/LockClosedIcon.js","../node_modules/@privy-io/js-sdk-core/dist/esm/utils/formatters.mjs","../node_modules/@privy-io/js-sdk-core/dist/esm/chains/arbitrum.mjs","../node_modules/@privy-io/js-sdk-core/dist/esm/chains/base.mjs","../node_modules/@privy-io/js-sdk-core/dist/esm/chains/mainnet.mjs","../node_modules/@privy-io/js-sdk-core/dist/esm/chains/optimism.mjs","../node_modules/@privy-io/js-sdk-core/dist/esm/chains/polygon.mjs","../node_modules/@privy-io/js-sdk-core/dist/esm/funding/coinbase.mjs","../node_modules/@privy-io/js-sdk-core/dist/esm/chains/avalanche.mjs","../node_modules/@privy-io/js-sdk-core/dist/esm/chains/celo.mjs","../node_modules/@privy-io/js-sdk-core/dist/esm/funding/moonpay.mjs","../node_modules/libphonenumber-js/examples.mobile.json.js","../node_modules/libphonenumber-js/source/isPossiblePhoneNumber.js","../node_modules/libphonenumber-js/min/exports/getCountryCallingCode.js","../node_modules/libphonenumber-js/source/AsYouTypeState.js","../node_modules/libphonenumber-js/source/AsYouTypeFormatter.util.js","../node_modules/libphonenumber-js/source/AsYouTypeFormatter.complete.js","../node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternParser.js","../node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternMatcher.js","../node_modules/libphonenumber-js/source/AsYouTypeFormatter.js","../node_modules/libphonenumber-js/source/AsYouTypeParser.js","../node_modules/libphonenumber-js/source/AsYouType.js","../node_modules/libphonenumber-js/min/exports/AsYouType.js","../node_modules/libphonenumber-js/source/getCountries.js","../node_modules/libphonenumber-js/source/getExampleNumber.js","../node_modules/@privy-io/js-sdk-core/dist/esm/utils/phoneNumberUtils.mjs","../node_modules/libphonenumber-js/min/exports/isPossiblePhoneNumber.js","../node_modules/libphonenumber-js/min/exports/getCountries.js","../node_modules/libphonenumber-js/min/exports/getExampleNumber.js","../node_modules/@privy-io/js-sdk-core/dist/esm/solana/client.mjs","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/platform.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/isVirtualEvent.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/domHelpers.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/useFocusVisible.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/useLayoutEffect.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/useEffectEvent.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/utils.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/useFocus.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/useFocusWithin.ts","../node_modules/@react-aria/focus/dist/packages/@react-aria/focus/src/useFocusRing.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/useHover.ts","../node_modules/@headlessui/react/dist/utils/env.js","../node_modules/@headlessui/react/dist/utils/owner.js","../node_modules/@headlessui/react/dist/utils/micro-task.js","../node_modules/@headlessui/react/dist/utils/disposables.js","../node_modules/@headlessui/react/dist/hooks/use-disposables.js","../node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js","../node_modules/@headlessui/react/dist/hooks/use-latest-value.js","../node_modules/@headlessui/react/dist/hooks/use-event.js","../node_modules/@headlessui/react/dist/hooks/use-element-size.js","../node_modules/@headlessui/react/dist/utils/default-map.js","../node_modules/@headlessui/react/dist/utils/store.js","../node_modules/@headlessui/react/dist/hooks/use-store.js","../node_modules/@headlessui/react/dist/hooks/use-is-top-layer.js","../node_modules/@headlessui/react/dist/hooks/use-inert-others.js","../node_modules/@headlessui/react/dist/hooks/use-on-disappear.js","../node_modules/@headlessui/react/dist/utils/match.js","../node_modules/@headlessui/react/dist/utils/focus-management.js","../node_modules/@headlessui/react/dist/utils/platform.js","../node_modules/@headlessui/react/dist/hooks/use-document-event.js","../node_modules/@headlessui/react/dist/hooks/use-window-event.js","../node_modules/@headlessui/react/dist/hooks/use-outside-click.js","../node_modules/@headlessui/react/dist/hooks/use-owner.js","../node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js","../node_modules/@headlessui/react/dist/hooks/document-overflow/adjust-scrollbar-padding.js","../node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js","../node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js","../node_modules/@headlessui/react/dist/hooks/document-overflow/prevent-scroll.js","../node_modules/@headlessui/react/dist/hooks/use-scroll-lock.js","../node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js","../node_modules/@headlessui/react/dist/hooks/use-sync-refs.js","../node_modules/@headlessui/react/dist/utils/get-text-value.js","../node_modules/@headlessui/react/dist/hooks/use-text-value.js","../node_modules/@headlessui/react/dist/hooks/use-tracked-pointer.js","../node_modules/@headlessui/react/dist/hooks/use-transition.js","../node_modules/@headlessui/react/dist/hooks/use-flags.js","../node_modules/@headlessui/react/node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../node_modules/@headlessui/react/node_modules/@floating-ui/react/dist/floating-ui.react.mjs","../node_modules/@headlessui/react/dist/internal/floating.js","../node_modules/@headlessui/react/dist/internal/open-closed.js","../node_modules/@headlessui/react/dist/utils/bugs.js","../node_modules/@headlessui/react/dist/utils/calculate-active-index.js","../node_modules/@headlessui/react/dist/utils/class-names.js","../node_modules/@headlessui/react/dist/utils/render.js","../node_modules/@headlessui/react/dist/internal/disabled.js","../node_modules/@headlessui/react/dist/components/description/description.js","../node_modules/@headlessui/react/dist/components/keyboard.js","../node_modules/@headlessui/react/dist/internal/id.js","../node_modules/@headlessui/react/dist/components/label/label.js","../node_modules/@headlessui/react/dist/hooks/use-on-unmount.js","../node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js","../node_modules/@headlessui/react/dist/internal/portal-force-root.js","../node_modules/@headlessui/react/dist/components/portal/portal.js","../node_modules/@headlessui/react/dist/components/menu/menu.js","../node_modules/@headlessui/react/dist/hooks/use-active-press.js","../node_modules/@headlessui/react/dist/hooks/use-did-element-move.js","../node_modules/@headlessui/react/dist/hooks/use-tree-walker.js","../node_modules/@headlessui/react/dist/hooks/use-is-mounted.js","../node_modules/@headlessui/react/dist/components/transition/transition.js","../node_modules/@headlessui/react/dist/hooks/use-event-listener.js","../node_modules/@headlessui/react/dist/internal/hidden.js","../node_modules/@headlessui/react/dist/hooks/use-root-containers.js","../node_modules/@headlessui/react/dist/internal/close-provider.js","../node_modules/@headlessui/react/dist/hooks/use-tab-direction.js","../node_modules/@headlessui/react/dist/hooks/use-watch.js","../node_modules/@headlessui/react/dist/utils/active-element-history.js","../node_modules/@headlessui/react/dist/components/focus-trap/focus-trap.js","../node_modules/@headlessui/react/dist/utils/document-ready.js","../node_modules/@headlessui/react/dist/components/dialog/dialog.js","../node_modules/@headlessui/react/dist/hooks/use-escape.js","../node_modules/@headlessui/react/dist/hooks/use-is-touch-device.js","../node_modules/@heroicons/react/24/outline/esm/ChevronDownIcon.js","../node_modules/@heroicons/react/24/solid/esm/ArrowsRightLeftIcon.js","../node_modules/@heroicons/react/24/outline/esm/CreditCardIcon.js","../node_modules/@heroicons/react/24/outline/esm/QrCodeIcon.js","../node_modules/@heroicons/react/24/outline/esm/InformationCircleIcon.js","../node_modules/@heroicons/react/24/outline/esm/ChevronRightIcon.js","../node_modules/@heroicons/react/24/outline/esm/FingerPrintIcon.js","../node_modules/@heroicons/react/24/outline/esm/ClockIcon.js","../node_modules/@heroicons/react/24/outline/esm/TrashIcon.js","../node_modules/@heroicons/react/24/solid/esm/CheckBadgeIcon.js","../node_modules/@heroicons/react/24/outline/esm/ShieldCheckIcon.js","../node_modules/@heroicons/react/24/solid/esm/IdentificationIcon.js","../node_modules/@heroicons/react/24/outline/esm/DevicePhoneMobileIcon.js","../node_modules/@heroicons/react/24/outline/esm/MinusCircleIcon.js","../node_modules/@heroicons/react/24/outline/esm/ArrowRightEndOnRectangleIcon.js","../node_modules/@heroicons/react/24/solid/esm/ShieldCheckIcon.js","../node_modules/@heroicons/react/24/outline/esm/CalendarIcon.js","../node_modules/@heroicons/react/24/outline/esm/LockClosedIcon.js","../node_modules/@heroicons/react/24/outline/esm/PencilSquareIcon.js","../node_modules/@heroicons/react/24/outline/esm/ClipboardDocumentIcon.js","../node_modules/@privy-io/react-auth/dist/esm/index.mjs","../node_modules/secure-password-utilities/src/index.ts","../node_modules/@privy-io/js-sdk-core/dist/esm/utils/toObjectKeys.mjs","../node_modules/viem/utils/abi/decodeFunctionData.ts","../node_modules/@privy-io/react-auth/dist/esm/importWallet-CuDZ5ksz.mjs","../node_modules/@privy-io/react-auth/dist/esm/internal-context-mSHyF0Gq.mjs","../node_modules/@privy-io/react-auth/dist/esm/useWallets-CIsjbJl7.mjs","../node_modules/@walletconnect/utils/node_modules/@noble/hashes/src/_assert.ts","../node_modules/@walletconnect/utils/node_modules/@noble/hashes/src/crypto.ts","../node_modules/@walletconnect/utils/node_modules/@noble/hashes/src/utils.ts","../node_modules/abitype/src/regex.ts","../node_modules/clsx/dist/clsx.mjs","../node_modules/destr/dist/index.mjs","../node_modules/libphonenumber-js/source/helpers/getPossibleCountriesForNumber.js","../node_modules/libphonenumber-js/source/helpers/getIddPrefix.js","../node_modules/libphonenumber-js/source/format.js","../node_modules/libphonenumber-js/source/helpers/RFC3966.js","../node_modules/libphonenumber-js/source/PhoneNumber.js","../node_modules/libphonenumber-js/source/isValid.js","../node_modules/libphonenumber-js/source/constants.js","../node_modules/libphonenumber-js/source/helpers/applyInternationalSeparatorStyle.js","../node_modules/libphonenumber-js/source/helpers/checkNumberLength.js","../node_modules/libphonenumber-js/source/helpers/mergeArrays.js","../node_modules/libphonenumber-js/source/helpers/extractCountryCallingCode.js","../node_modules/libphonenumber-js/source/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","../node_modules/libphonenumber-js/source/helpers/extractNationalNumber.js","../node_modules/libphonenumber-js/source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","../node_modules/libphonenumber-js/source/helpers/formatNationalNumberUsingFormat.js","../node_modules/libphonenumber-js/source/helpers/getCountryByCallingCode.js","../node_modules/libphonenumber-js/source/helpers/getCountryByNationalNumber.js","../node_modules/libphonenumber-js/source/helpers/getNumberType.js","../node_modules/libphonenumber-js/source/helpers/isObject.js","../node_modules/libphonenumber-js/source/helpers/matchesEntirely.js","../node_modules/libphonenumber-js/source/helpers/parseDigits.js","../node_modules/libphonenumber-js/source/helpers/stripIddPrefix.js","../node_modules/libphonenumber-js/source/isPossible.js","../node_modules/libphonenumber-js/source/tools/semver-compare.js","../node_modules/libphonenumber-js/source/metadata.js","../node_modules/libphonenumber-js/source/normalizeArguments.js","../node_modules/libphonenumber-js/source/ParseError.js","../node_modules/libphonenumber-js/source/helpers/extension/createExtensionPattern.js","../node_modules/libphonenumber-js/source/helpers/isViablePhoneNumber.js","../node_modules/libphonenumber-js/source/helpers/extension/extractExtension.js","../node_modules/libphonenumber-js/source/parseIncompletePhoneNumber.js","../node_modules/libphonenumber-js/source/helpers/extractPhoneContext.js","../node_modules/libphonenumber-js/source/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js","../node_modules/libphonenumber-js/source/parse.js","../node_modules/libphonenumber-js/source/parsePhoneNumber_.js","../node_modules/libphonenumber-js/source/parsePhoneNumberWithError_.js","../node_modules/libphonenumber-js/metadata.min.json.js","../node_modules/libphonenumber-js/min/exports/withMetadataArgument.js","../node_modules/ufo/dist/index.mjs","../node_modules/ofetch/dist/shared/ofetch.03887fc3.mjs","../node_modules/goober/dist/goober.modern.js","../node_modules/react-hot-toast/src/core/types.ts","../node_modules/react-hot-toast/src/core/utils.ts","../node_modules/react-hot-toast/src/core/store.ts","../node_modules/react-hot-toast/src/core/toast.ts","../node_modules/react-hot-toast/src/core/use-toaster.ts","../node_modules/react-hot-toast/src/components/error.tsx","../node_modules/react-hot-toast/src/components/loader.tsx","../node_modules/react-hot-toast/src/components/checkmark.tsx","../node_modules/react-hot-toast/src/components/toast-icon.tsx","../node_modules/react-hot-toast/src/components/toast-bar.tsx","../node_modules/react-hot-toast/src/components/toaster.tsx","../node_modules/react-hot-toast/src/index.ts","../node_modules/swr/dist/_internal/index.mjs","../node_modules/swr/dist/core/index.mjs","../node_modules/tinycolor2/esm/tinycolor.js","../node_modules/viem/accounts/utils/parseAccount.ts","../node_modules/abitype/src/human-readable/runtime/signatures.ts","../node_modules/abitype/src/errors.ts","../node_modules/abitype/src/human-readable/errors/abiItem.ts","../node_modules/abitype/src/human-readable/errors/abiParameter.ts","../node_modules/abitype/src/human-readable/errors/signature.ts","../node_modules/abitype/src/human-readable/errors/struct.ts","../node_modules/abitype/src/human-readable/errors/splitParameters.ts","../node_modules/abitype/src/human-readable/runtime/cache.ts","../node_modules/abitype/src/human-readable/runtime/utils.ts","../node_modules/abitype/src/human-readable/runtime/structs.ts","../node_modules/abitype/src/human-readable/parseAbi.ts","../node_modules/viem/constants/contract.ts","../node_modules/viem/actions/public/call.ts","../node_modules/viem/utils/errors/getCallError.ts","../node_modules/viem/actions/public/estimateFeesPerGas.ts","../node_modules/viem/errors/estimateGas.ts","../node_modules/viem/actions/public/estimateGas.ts","../node_modules/viem/utils/errors/getEstimateGasError.ts","../node_modules/viem/actions/public/estimateMaxPriorityFeePerGas.ts","../node_modules/viem/actions/public/getBalance.ts","../node_modules/viem/actions/public/getBlock.ts","../node_modules/viem/actions/public/getChainId.ts","../node_modules/viem/actions/public/getGasPrice.ts","../node_modules/viem/actions/public/getTransactionCount.ts","../node_modules/viem/actions/wallet/prepareTransactionRequest.ts","../node_modules/viem/actions/wallet/sendRawTransaction.ts","../node_modules/viem/chains/definitions/mainnet.ts","../node_modules/viem/chains/definitions/optimismSepolia.ts","../node_modules/viem/clients/createClient.ts","../node_modules/viem/clients/createPublicClient.ts","../node_modules/viem/errors/account.ts","../node_modules/viem/utils/chain/assertCurrentChain.ts","../node_modules/viem/actions/wallet/sendTransaction.ts","../node_modules/viem/utils/errors/getTransactionError.ts","../node_modules/viem/clients/decorators/wallet.ts","../node_modules/viem/actions/wallet/addChain.ts","../node_modules/viem/actions/wallet/deployContract.ts","../node_modules/viem/actions/wallet/getAddresses.ts","../node_modules/viem/actions/wallet/getPermissions.ts","../node_modules/viem/actions/wallet/requestAddresses.ts","../node_modules/viem/actions/wallet/requestPermissions.ts","../node_modules/viem/actions/wallet/signMessage.ts","../node_modules/viem/actions/wallet/signTransaction.ts","../node_modules/viem/actions/wallet/signTypedData.ts","../node_modules/viem/actions/wallet/switchChain.ts","../node_modules/viem/actions/wallet/watchAsset.ts","../node_modules/viem/actions/wallet/writeContract.ts","../node_modules/viem/clients/createWalletClient.ts","../node_modules/viem/utils/ens/errors.ts","../node_modules/viem/utils/ens/encodedLabelToLabelhash.ts","../node_modules/viem/utils/ens/namehash.ts","../node_modules/viem/utils/ens/labelhash.ts","../node_modules/viem/utils/ens/packetToBytes.ts","../node_modules/viem/utils/ens/encodeLabelhash.ts","../node_modules/viem/actions/public/readContract.ts","../node_modules/viem/errors/ens.ts","../node_modules/viem/utils/ens/avatar/utils.ts","../node_modules/viem/utils/ens/avatar/parseAvatarRecord.ts","../node_modules/viem/actions/ens/getEnsText.ts","../node_modules/viem/utils/filters/createFilterRequestScope.ts","../node_modules/viem/errors/log.ts","../node_modules/viem/utils/abi/encodeEventTopics.ts","../node_modules/viem/actions/public/createContractEventFilter.ts","../node_modules/viem/actions/public/createEventFilter.ts","../node_modules/viem/actions/public/createPendingTransactionFilter.ts","../node_modules/viem/utils/promise/withCache.ts","../node_modules/viem/actions/public/getBlockNumber.ts","../node_modules/viem/actions/public/getCode.ts","../node_modules/viem/utils/abi/decodeEventLog.ts","../node_modules/viem/utils/abi/parseEventLogs.ts","../node_modules/viem/actions/public/getLogs.ts","../node_modules/viem/actions/public/getContractEvents.ts","../node_modules/viem/errors/eip712.ts","../node_modules/viem/actions/public/getEip712Domain.ts","../node_modules/viem/actions/public/getFeeHistory.ts","../node_modules/viem/utils/formatters/feeHistory.ts","../node_modules/viem/actions/public/getFilterChanges.ts","../node_modules/viem/actions/public/getProof.ts","../node_modules/viem/utils/formatters/proof.ts","../node_modules/viem/actions/public/getTransaction.ts","../node_modules/viem/actions/public/getTransactionReceipt.ts","../node_modules/viem/actions/public/uninstallFilter.ts","../node_modules/viem/constants/strings.ts","../node_modules/viem/utils/signature/hashMessage.ts","../node_modules/viem/utils/signature/toPrefixedMessage.ts","../node_modules/viem/constants/bytes.ts","../node_modules/viem/actions/public/verifyHash.ts","../node_modules/viem/utils/signature/serializeSignature.ts","../node_modules/viem/utils/signature/isErc6492Signature.ts","../node_modules/viem/utils/signature/serializeErc6492Signature.ts","../node_modules/viem/utils/signature/hashTypedData.ts","../node_modules/viem/utils/observe.ts","../node_modules/viem/utils/poll.ts","../node_modules/viem/actions/public/watchBlockNumber.ts","../node_modules/viem/utils/siwe/parseSiweMessage.ts","../node_modules/viem/actions/siwe/verifySiweMessage.ts","../node_modules/viem/utils/siwe/validateSiweMessage.ts","../node_modules/viem/clients/decorators/public.ts","../node_modules/viem/actions/public/createBlockFilter.ts","../node_modules/viem/actions/public/estimateContractGas.ts","../node_modules/viem/actions/public/getBlobBaseFee.ts","../node_modules/viem/actions/public/getBlockTransactionCount.ts","../node_modules/viem/actions/ens/getEnsAddress.ts","../node_modules/viem/actions/ens/getEnsAvatar.ts","../node_modules/viem/actions/ens/getEnsName.ts","../node_modules/viem/actions/ens/getEnsResolver.ts","../node_modules/viem/actions/public/getFilterLogs.ts","../node_modules/viem/actions/public/getStorageAt.ts","../node_modules/viem/actions/public/getTransactionConfirmations.ts","../node_modules/viem/actions/public/multicall.ts","../node_modules/viem/actions/public/simulateContract.ts","../node_modules/viem/actions/public/verifyMessage.ts","../node_modules/viem/actions/public/verifyTypedData.ts","../node_modules/viem/actions/public/waitForTransactionReceipt.ts","../node_modules/viem/actions/public/watchBlocks.ts","../node_modules/viem/actions/public/watchContractEvent.ts","../node_modules/viem/actions/public/watchEvent.ts","../node_modules/viem/actions/public/watchPendingTransactions.ts","../node_modules/viem/utils/promise/withDedupe.ts","../node_modules/viem/utils/buildRequest.ts","../node_modules/viem/clients/transports/createTransport.ts","../node_modules/viem/clients/transports/custom.ts","../node_modules/viem/errors/transport.ts","../node_modules/viem/utils/rpc/id.ts","../node_modules/viem/utils/rpc/http.ts","../node_modules/viem/utils/promise/withTimeout.ts","../node_modules/viem/clients/transports/http.ts","../node_modules/viem/constants/abis.ts","../node_modules/viem/constants/contracts.ts","../node_modules/viem/constants/kzg.ts","../node_modules/viem/constants/number.ts","../node_modules/viem/constants/solidity.ts","../node_modules/viem/constants/unit.ts","../node_modules/viem/errors/abi.ts","../node_modules/viem/errors/address.ts","../node_modules/viem/errors/version.ts","../node_modules/viem/errors/base.ts","../node_modules/viem/errors/blob.ts","../node_modules/viem/errors/block.ts","../node_modules/viem/errors/chain.ts","../node_modules/viem/utils/abi/formatAbiItemWithArgs.ts","../node_modules/viem/errors/contract.ts","../node_modules/viem/errors/cursor.ts","../node_modules/viem/errors/data.ts","../node_modules/viem/errors/encoding.ts","../node_modules/viem/errors/fee.ts","../node_modules/viem/errors/node.ts","../node_modules/viem/errors/request.ts","../node_modules/viem/errors/rpc.ts","../node_modules/viem/errors/stateOverride.ts","../node_modules/viem/errors/transaction.ts","../node_modules/viem/errors/utils.ts","../node_modules/viem/experimental/eip7702/utils/hashAuthorization.ts","../node_modules/viem/experimental/eip7702/utils/recoverAuthorizationAddress.ts","../node_modules/viem/op-stack/formatters.ts","../node_modules/viem/utils/transaction/assertTransaction.ts","../node_modules/viem/utils/transaction/serializeAccessList.ts","../node_modules/viem/utils/transaction/serializeTransaction.ts","../node_modules/viem/experimental/eip7702/utils/serializeAuthorizationList.ts","../node_modules/viem/op-stack/chainConfig.ts","../node_modules/viem/op-stack/contracts.ts","../node_modules/viem/op-stack/serializers.ts","../node_modules/viem/utils/encoding/fromBytes.ts","../node_modules/viem/utils/abi/decodeAbiParameters.ts","../node_modules/viem/utils/abi/decodeErrorResult.ts","../node_modules/viem/utils/abi/decodeFunctionResult.ts","../node_modules/viem/utils/abi/encodeAbiParameters.ts","../node_modules/viem/utils/abi/encodeDeployData.ts","../node_modules/viem/utils/abi/prepareEncodeFunctionData.ts","../node_modules/viem/utils/abi/encodeFunctionData.ts","../node_modules/viem/utils/abi/formatAbiItem.ts","../node_modules/viem/utils/abi/getAbiItem.ts","../node_modules/viem/utils/address/getAddress.ts","../node_modules/viem/utils/address/isAddress.ts","../node_modules/viem/utils/address/isAddressEqual.ts","../node_modules/viem/utils/blob/blobsToCommitments.ts","../node_modules/viem/utils/blob/blobsToProofs.ts","../node_modules/viem/utils/blob/commitmentToVersionedHash.ts","../node_modules/viem/utils/hash/sha256.ts","../node_modules/viem/utils/blob/commitmentsToVersionedHashes.ts","../node_modules/viem/constants/blob.ts","../node_modules/viem/utils/blob/toBlobSidecars.ts","../node_modules/viem/utils/blob/toBlobs.ts","../node_modules/viem/utils/chain/defineChain.ts","../node_modules/viem/utils/chain/getChainContractAddress.ts","../node_modules/viem/utils/cursor.ts","../node_modules/viem/utils/data/concat.ts","../node_modules/viem/utils/data/isHex.ts","../node_modules/viem/utils/data/pad.ts","../node_modules/viem/utils/data/size.ts","../node_modules/viem/utils/data/slice.ts","../node_modules/viem/utils/data/trim.ts","../node_modules/viem/utils/encoding/fromHex.ts","../node_modules/viem/utils/encoding/toBytes.ts","../node_modules/viem/utils/encoding/toHex.ts","../node_modules/viem/utils/encoding/toRlp.ts","../node_modules/viem/utils/errors/getContractError.ts","../node_modules/viem/utils/errors/getNodeError.ts","../node_modules/viem/utils/formatters/block.ts","../node_modules/viem/utils/formatters/extract.ts","../node_modules/viem/utils/formatters/formatter.ts","../node_modules/viem/utils/formatters/log.ts","../node_modules/viem/utils/formatters/transaction.ts","../node_modules/viem/utils/formatters/transactionReceipt.ts","../node_modules/viem/utils/formatters/transactionRequest.ts","../node_modules/viem/utils/getAction.ts","../node_modules/@noble/hashes/src/_u64.ts","../node_modules/@noble/hashes/src/sha3.ts","../node_modules/viem/utils/hash/keccak256.ts","../node_modules/viem/utils/hash/toEventSelector.ts","../node_modules/viem/utils/hash/toFunctionSelector.ts","../node_modules/viem/utils/hash/hashSignature.ts","../node_modules/abitype/src/human-readable/formatAbiParameter.ts","../node_modules/abitype/src/human-readable/formatAbiParameters.ts","../node_modules/viem/utils/hash/toSignature.ts","../node_modules/viem/utils/hash/normalizeSignature.ts","../node_modules/abitype/src/human-readable/formatAbiItem.ts","../node_modules/viem/utils/hash/toSignatureHash.ts","../node_modules/viem/utils/lru.ts","../node_modules/viem/utils/promise/createBatchScheduler.ts","../node_modules/viem/utils/promise/withResolvers.ts","../node_modules/viem/utils/promise/withRetry.ts","../node_modules/viem/utils/signature/recoverPublicKey.ts","../node_modules/viem/utils/signature/recoverAddress.ts","../node_modules/viem/accounts/utils/publicKeyToAddress.ts","../node_modules/viem/utils/stateOverride.ts","../node_modules/viem/utils/stringify.ts","../node_modules/viem/utils/transaction/assertRequest.ts","../node_modules/viem/utils/transaction/getTransactionType.ts","../node_modules/viem/errors/typedData.ts","../node_modules/viem/utils/regex.ts","../node_modules/viem/utils/typedData.ts","../node_modules/viem/utils/uid.ts","../node_modules/viem/utils/unit/formatEther.ts","../node_modules/viem/utils/unit/formatGwei.ts","../node_modules/viem/utils/unit/formatUnits.ts","../node_modules/viem/utils/wait.ts","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","../webpack/runtime/nonce","../node_modules/@sentry/src/integration.ts","../node_modules/@sentry/src/instrument/_handlers.ts","../node_modules/@sentry/src/instrument/console.ts","../node_modules/@sentry/src/severity.ts","../node_modules/@sentry/browser/node_modules/src/captureconsole.ts","../node_modules/@sentry/src/buildPolyfills/_optionalChain.ts","../node_modules/@sentry/src/utils/isSentryRequestUrl.ts","../node_modules/@sentry/src/dsn.ts","../node_modules/@sentry/src/envelope.ts","../node_modules/@sentry/src/error.ts","../node_modules/@sentry/src/api.ts","../node_modules/@sentry/src/metrics/envelope.ts","../node_modules/@sentry/src/metrics/utils.ts","../node_modules/@sentry/src/baseclient.ts","../node_modules/@sentry/src/instrument/xhr.ts","../node_modules/@sentry/src/supports.ts","../node_modules/@sentry/src/instrument/fetch.ts","../node_modules/@sentry/src/instrument/dom.ts","../node_modules/@sentry/src/vendor/supportsHistory.ts","../node_modules/@sentry/src/instrument/history.ts","../node_modules/@sentry/src/ratelimit.ts","../node_modules/@sentry/src/isBrowser.ts","../node_modules/@sentry-internal/src/common/debug-build.ts","../node_modules/@sentry-internal/src/browser/types.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/getNavigationEntry.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/getActivationStart.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/onHidden.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/getVisibilityWatcher.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/observe.ts","../node_modules/@sentry-internal/src/browser/web-vitals/getLCP.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/initMetric.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/generateUniqueID.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/bindReporter.ts","../node_modules/@sentry-internal/src/browser/instrument.ts","../node_modules/src/constants.ts","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/utils.js","../node_modules/@sentry/src/buildPolyfills/_nullishCoalesce.ts","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/types/dist/rrweb-types.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/error-handler.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/processed-node-manager.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/index.js","../node_modules/src/util/timestamp.ts","../node_modules/src/coreHandlers/util/addBreadcrumbEvent.ts","../node_modules/src/coreHandlers/util/domUtils.ts","../node_modules/src/coreHandlers/util/onWindowOpen.ts","../node_modules/src/coreHandlers/handleClick.ts","../node_modules/src/types/rrweb.ts","../node_modules/src/util/createBreadcrumb.ts","../../node_modules/@sentry-internal/rrweb-snapshot/es/rrweb-snapshot.js","../node_modules/src/coreHandlers/util/getAttributesToRecord.ts","../node_modules/src/coreHandlers/handleDom.ts","../node_modules/src/coreHandlers/handleKeyboardEvent.ts","../node_modules/src/util/createPerformanceEntries.ts","../node_modules/src/coreHandlers/performanceObserver.ts","../node_modules/src/debug-build.ts","../node_modules/src/util/log.ts","../node_modules/src/eventBuffer/error.ts","../node_modules/src/eventBuffer/EventBufferArray.ts","../node_modules/src/eventBuffer/WorkerHandler.ts","../node_modules/src/eventBuffer/EventBufferCompressionWorker.ts","../node_modules/src/eventBuffer/EventBufferProxy.ts","../node_modules/src/eventBuffer/index.ts","../replay-worker/build/npm/esm/index.js","../replay-worker/build/npm/esm/worker.ts","../node_modules/src/util/hasSessionStorage.ts","../node_modules/src/session/clearSession.ts","../node_modules/src/util/isSampled.ts","../node_modules/src/session/Session.ts","../node_modules/src/session/saveSession.ts","../node_modules/src/session/createSession.ts","../node_modules/src/util/isExpired.ts","../node_modules/src/util/isSessionExpired.ts","../node_modules/src/session/shouldRefreshSession.ts","../node_modules/src/session/loadOrCreateSession.ts","../node_modules/src/session/fetchSession.ts","../node_modules/src/util/addEvent.ts","../node_modules/src/util/eventUtils.ts","../node_modules/src/coreHandlers/handleAfterSendEvent.ts","../node_modules/src/coreHandlers/handleBeforeSendEvent.ts","../node_modules/src/coreHandlers/handleGlobalEvent.ts","../node_modules/src/coreHandlers/util/addFeedbackBreadcrumb.ts","../node_modules/src/util/isRrwebError.ts","../node_modules/src/coreHandlers/util/shouldSampleForBufferEvent.ts","../node_modules/src/util/createPerformanceSpans.ts","../node_modules/src/coreHandlers/handleHistory.ts","../node_modules/src/coreHandlers/util/addNetworkBreadcrumb.ts","../node_modules/src/util/shouldFilterRequest.ts","../node_modules/src/coreHandlers/handleXhr.ts","../node_modules/src/coreHandlers/util/networkUtils.ts","../node_modules/src/coreHandlers/util/fetchUtils.ts","../node_modules/src/coreHandlers/util/xhrUtils.ts","../node_modules/src/coreHandlers/handleNetworkBreadcrumbs.ts","../node_modules/src/coreHandlers/handleFetch.ts","../node_modules/src/coreHandlers/handleScope.ts","../node_modules/src/util/addGlobalListeners.ts","../node_modules/src/util/addMemoryEntry.ts","../node_modules/src/util/handleRecordingEmit.ts","../node_modules/src/util/sendReplayRequest.ts","../node_modules/src/util/prepareRecordingData.ts","../node_modules/src/util/prepareReplayEvent.ts","../node_modules/src/util/createReplayEnvelope.ts","../node_modules/src/util/sendReplay.ts","../node_modules/src/util/throttle.ts","../node_modules/src/replay.ts","../node_modules/src/util/debounce.ts","../node_modules/@sentry/src/semanticAttributes.ts","../node_modules/src/util/getPrivacyOptions.ts","../node_modules/src/integration.ts","../node_modules/src/util/maskAttribute.ts","../node_modules/@sentry/src/integrations/inboundfilters.ts","../node_modules/@sentry/src/integrations/functiontostring.ts","../node_modules/@sentry/src/sdk.ts","../node_modules/@sentry/src/utils/sdkMetadata.ts","../node_modules/src/eventbuilder.ts","../node_modules/src/helpers.ts","../node_modules/src/client.ts","../node_modules/src/userfeedback.ts","../node_modules/@sentry/src/clientreport.ts","../node_modules/@sentry/src/url.ts","../node_modules/src/integrations/breadcrumbs.ts","../node_modules/src/integrations/dedupe.ts","../node_modules/@sentry/src/instrument/globalError.ts","../node_modules/@sentry/src/instrument/globalUnhandledRejection.ts","../node_modules/src/integrations/globalhandlers.ts","../node_modules/src/integrations/httpcontext.ts","../node_modules/@sentry/src/aggregate-errors.ts","../node_modules/src/integrations/linkederrors.ts","../node_modules/src/integrations/trycatch.ts","../node_modules/src/stack-parsers.ts","../node_modules/@sentry/src/promisebuffer.ts","../node_modules/@sentry/src/transports/base.ts","../node_modules/src/transports/utils.ts","../node_modules/src/transports/fetch.ts","../node_modules/src/transports/xhr.ts","../node_modules/src/sdk.ts","../node_modules/@sentry/src/errorboundary.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/@mui/private-theming/useTheme/ThemeContext.js","../node_modules/@mui/private-theming/useTheme/useTheme.js","../node_modules/@mui/private-theming/ThemeProvider/nested.js","../node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js","../node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js","../node_modules/@mui/material/styles/ThemeProvider.js","../node_modules/@mui/material/CssBaseline/CssBaseline.js","../node_modules/@mui/material/TableCell/tableCellClasses.js","theme/base/create-components.js","theme/dark/create-components.js","theme/colors.js","theme/utils.js","theme/dark/create-options.js","theme/dark/create-palette.js","theme/dark/create-shadows.js","theme/light/create-options.js","theme/light/create-palette.js","theme/light/create-components.js","theme/light/create-shadows.js","theme/index.js","theme/base/create-options.js","theme/base/create-typography.js","../node_modules/@mui/material/styles/responsiveFontSizes.js","pages/Core/dialog-wrapper.js","pages/Core/routes.js","pages/Core/webhook-event-handler.js","pages/Core/content.js","pages/Core/index.js","utils/intercom.js","redux/reducer.js","redux/store.js","utils/hidescrollbar.js","index.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"loadingOverlayDiv\":\"styles_loadingOverlayDiv__SxA8u\",\"loadingCenterWrapper\":\"styles_loadingCenterWrapper__ZYtWt\",\"loadingCenterWithText\":\"styles_loadingCenterWithText__r8PxP\",\"ui\":\"styles_ui__f0vaw\",\"inline\":\"styles_inline__pPnl1\",\"loader\":\"styles_loader__PprnU\",\"text\":\"styles_text__AQ1Ky\"};","import React from \"react\";\n\nimport { CircularProgress, useTheme } from \"@mui/material\";\nimport PropTypes from \"prop-types\";\n\nimport styles from \"./styles.module.less\";\n\nconst style = theme => ({\n margin : \"0px\",\n position : \"fixed\",\n top : \"calc(50% - 24px)\",\n left : \"calc(50% - 24px)\",\n color : theme.palette.action.active,\n});\n\nconst View = ({ text }) => {\n const theme = useTheme();\n\n return (\n <div className={styles.loadingOverlayDiv}>\n {!text && (\n <div className={styles.loadingCenterWrapper}>\n <CircularProgress style={style(theme)} />\n </div>\n )}\n {text && (\n <div className={styles.loadingCenterWithText}>\n <CircularProgress style={style(theme)} />\n <span className=\"text\">{text}</span>\n </div>\n )}\n </div>\n );\n};\n\nView.propTypes = {\n text: PropTypes.string\n};\n\nexport default View;\n","import { mainnet, optimismSepolia } from \"viem/chains\";\n\nimport { APP_STAGE } from \"src/constants\";\n\nconst { REACT_APP_DOMAIN, REACT_APP_STAGE, REACT_APP_DEVELOPMENT } = process.env;\n\nlet domain;\nif (REACT_APP_DOMAIN) {\n domain = REACT_APP_DOMAIN;\n}\nelse if (window.location.hostname.includes(\"amplifyapp.com\")) {\n // PR preview works on https://dev.series.fairmint.co/\n domain = \"dev.series.fairmint.co\";\n}\nelse if (REACT_APP_STAGE === APP_STAGE.DEV) {\n domain = window.location.hostname.includes(\"investors.local.fairmint.co\")\n ? \"dev.series.fairmint.co\"\n : window.location.hostname;\n}\nelse {\n domain = window.location.hostname.includes(\"investors.fairmint.com\")\n ? \"circles.fairmint.com\"\n : window.location.hostname;\n}\n\nconst config = {\n dev: {\n privyAppId : \"clge6cxv5001ajy08n329vdx7\",\n apiEndpoint : \"https://api.series-dev.fairmint.co\",\n wsEndpoint : \"wss://ws.series-dev.fairmint.co\",\n gtmId : \"GTM-WKQQRQB8\",\n intercomAppId : \"v7e5s2ll\",\n investorAppUrl : \"https://investors.dev.fairmint.co\",\n USDC : {\n chain : optimismSepolia,\n address : \"0xf74eBB85fADE9FDB1085194335b58823B98DCd47\"\n },\n },\n staging: {\n privyAppId : \"clmi1x42400d9l50fqa9doz8d\",\n apiEndpoint : \"https://api.series-staging.fairmint.co\",\n wsEndpoint : \"wss://ws.series-staging.fairmint.co\",\n gtmId : \"GTM-WKQQRQB8\",\n intercomAppId : \"v7e5s2ll\",\n investorAppUrl : \"https://investors.dev.fairmint.co\",\n USDC : {\n chain : optimismSepolia,\n address : \"0xf74eBB85fADE9FDB1085194335b58823B98DCd47\"\n },\n },\n production: {\n privyAppId : \"clm7wfbpp001pmj0fd93ahj9k\",\n apiEndpoint : \"https://api.series.fairmint.co\",\n wsEndpoint : \"wss://ws.series.fairmint.co\",\n gtmId : \"GTM-TVJJFD2J\",\n intercomAppId : \"zvhi5494\",\n investorAppUrl : \"https://investors.fairmint.com\",\n USDC : {\n chain : mainnet,\n address : \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\"\n },\n },\n common: {\n domain,\n sentryDSN: \"https://e300360bb0ec189a4a4f143eef63e1af@o320781.ingest.us.sentry.io/4507261222125568\",\n }\n};\n\nconst configuration = {\n ...config.common,\n ...config[REACT_APP_STAGE],\n};\n\n// disable console.log() and console.debug() in production\nif (config[REACT_APP_STAGE] === \"production\") {\n console.log = () => {};\n console.debug = () => {};\n}\n\n// common config variables\nexport const config_REACT_APP_STAGE = REACT_APP_STAGE;\nexport const config_REACT_APP_DOMAIN = REACT_APP_DOMAIN;\nexport const config_REACT_APP_DEVELOPMENT = REACT_APP_DEVELOPMENT;\nexport const config_domain = configuration.domain;\nexport const config_sentryDSN = configuration.sentryDSN;\nexport const config_privyAppId = configuration.privyAppId;\nexport const config_intercomAppId = configuration.intercomAppId;\nexport const config_apiEndpoint = configuration.apiEndpoint;\nexport const config_gtmId = configuration.gtmId;\nexport const config_wsEndpoint = configuration.wsEndpoint;\nexport const config_USDC = configuration.USDC;\nexport const config_investorAppUrl = configuration.investorAppUrl;\n","export const ROUTE_PATH = {\n ROOT : \"\",\n US : \"us\",\n INTERNATIONAL : \"international\",\n START : \"start\",\n AUTH : \"auth\",\n AUTH_WITH_SERIES : \"auth-with-series\",\n KYB_FLOW : \"kyb-flow\",\n INVITE_DISABLED : \"invite-disabled\",\n SERIES_NOT_PUBLISHED : \"series-not-published\",\n INVALID_INVITE : \"invalid-invite\",\n INVITE_REQUIRED : \"invite-required\",\n ACCEPT_GRANT : \"accept\",\n SYNDICATE : \"join\",\n PUBLIC : \"public\",\n INVEST : \"invest\",\n};\n\nexport const AUTH_LEVEL = {\n FREE : \"FREE\",\n PUBLIC : \"PUBLIC\",\n SIGN_IN : \"SIGN_IN\",\n DASHBOARD : \"DASHBOARD\",\n};\n\nexport const CUSTOMER_SUPPORT = {\n INTERCOM : \"intercom\",\n ERXES : \"erxes\"\n};\n\nexport const APP_STAGE = {\n DEV : \"dev\",\n STAGE : \"stage\",\n PRODUCTION : \"production\",\n};\n\nexport const ORGANIZATION = {\n FAIRMINT : \"fairmint\",\n QUARTZ : \"quartz\",\n};\n\nexport const COMPANY_TYPE = {\n LLC : \"Limited Liability Company\",\n LP : \"Limited Partnership\",\n C_COPR : \"C Corporation\",\n S_COPR : \"S Corporation\",\n GP : \"General Partnership\",\n FE : \"Foreign Entity\",\n TRUST : \"Trust\",\n FUND : \"Investment company or fund\",\n};\n\nexport const COMPANY_TRUST_TYPE = {\n REVOCABLE : \"Revocable\",\n IRREVOCABLE : \"Irrevocable\",\n};\n\nexport const COMPANY_FUND_TYPE = {\n INVESTMENT_COMPANY : \"An investment company\",\n A_3_C_1_FUND : \"A 3(c)(1) fund\",\n A_3_C_7_FUND : \"A 3(c)(7) fund\",\n ANOTHER_TYPE_OF_FUND : \"Another type of fund\",\n};\n\nexport const COMPANY_STATUS_ACTION = {\n ACCEPT : \"accept\",\n REJECT : \"reject\",\n};\n\nexport const ACCREDITATION_ACTION = {\n ACCEPT : \"accept\",\n REJECT : \"reject\",\n};\n\nexport const KYC_ACTION = {\n ACCEPT : \"accept\",\n REJECT : \"reject\",\n REVIEW : \"review\",\n};\n\nexport const AML_ACTION = {\n ACCEPT : \"accept\",\n REJECT : \"reject\",\n SKIP : \"skip\",\n};\n\nexport const VERIFICATION_STATUS = {\n PROHIBITED : \"PROHIBITED\",\n BLOCKED : \"BLOCKED\",\n SANCTIONED : \"SANCTIONED\",\n ERROR : \"ERROR\",\n KYC_NOT_SUBMITTED : \"KYC_NOT_SUBMITTED\",\n KYC_NEED : \"KYC_NEED\",\n KYC_REJECTED : \"KYC_REJECTED\",\n KYC_IN_REVIEW : \"KYC_IN_REVIEW\",\n AML_NEED : \"AML_NEED\",\n AML_REJECTED : \"AML_REJECTED\",\n TAX_MISSING : \"TAX_MISSING\",\n KYB_NEED : \"KYB_NEED\",\n KYB_ID_NEED : \"KYB_ID_NEED\",\n KYB_IN_REVIEW : \"KYB_IN_REVIEW\",\n KYB_REJECTED : \"KYB_REJECTED\",\n ACCREDITATION_NEED : \"ACCREDITATION_NEED\",\n NON_ACCREDITED : \"NON_ACCREDITED\",\n NON_ACCREDITED_BUT : \"NON_ACCREDITED_BUT\",\n ROW_VERIFIED : \"ROW_VERIFIED\",\n ACCREDITED_NOT_VERIFIED : \"ACCREDITED_NOT_VERIFIED\",\n ACCREDITED_IN_REVIEW : \"ACCREDITED_IN_REVIEW\",\n ACCREDITED_VERIFIED : \"ACCREDITED_VERIFIED\",\n ACCREDITED_REJECTED : \"ACCREDITED_REJECTED\",\n VISITOR : \"VISITOR\",\n};\n\nexport const WEBSOCKET_EVENT = {\n ACCOUNT_BLOCKED : \"account_blocked\",\n ACCOUNT_UNBLOCKED : \"account_unblocked\",\n ACCOUNT_UPDATED : \"account_updated\",\n ADMIN_TOKEN_ISSUE_FAILED : \"admin_token_issue_failed\",\n ADMIN_TOKEN_ISSUE_SUCCESS : \"admin_token_issue_success\",\n BENEFICIAL_OWNER_UPDATED : \"beneficial_owner_updated\",\n FUNDS_RECEIVED : \"funds_received\",\n RESET_COUNTRY : \"reset_country\",\n RESET_KYC : \"reset_kyc\",\n TOKEN_ISSUED : \"token_issued\",\n TRANSACTION_UPDATED : \"transaction_updated\",\n USER_UPDATED : \"user_updated\",\n GRANT_SIGNED : \"grant_signed\",\n VESTING : \"vesting\",\n VESTED : \"vested\"\n};\n\nexport const ACCREDITATION_STATUS = {\n NO : \"no\",\n NO_BUT : \"no but\", // for 506(b) exception for 35 non-accredited investors\n INCOME : \"income\",\n ASSETS : \"assets\",\n LICENSE : \"license\",\n};\n\nexport const COMPANY_ACCREDITATION_STATUS = {\n NO : \"no\",\n OWNERS : \"owners\",\n ASSETS : \"assets\",\n BUSINESS : \"business\",\n FUND : \"fund\",\n};\n\nexport const EXEMPTION = {\n PROHIBITED : \"prohibited\",\n REGS : \"regS\",\n REGD506C : \"regD506C\",\n REGD506B : \"regD506B\",\n};\n\nexport const INVESTMENT_STATUS = {\n SIGN_NEEDED : \"SIGN_NEEDED\",\n SIGNED : \"SIGNED\",\n FUNDS_SENT : \"FUNDS_SENT\",\n AWAITING_SIGNATURE : \"AWAITING_SIGNATURE\",\n FUNDS_RECEIVED : \"FUNDS_RECEIVED\",\n ADMIN_REFUSED : \"ADMIN_REFUSED\",\n TOKENS_ISSUED : \"TOKENS_ISSUED\",\n CANCELED : \"CANCELED\",\n COMMITTED : \"COMMITTED\",\n};\n\nexport const DIALOG_NAME = {\n WALLET_SETTINGS : \"WALLET_SETTINGS\",\n KYC_RESET : \"KYC_RESET\",\n KYC_FLOW : \"KYC_FLOW\",\n KYC_FINISHED : \"KYC_FINISHED\",\n KYC_STATUS : \"KYC_STATUS\",\n KYB_REVIEW : \"KYB_REVIEW\",\n COUNTRY_RESET : \"COUNTRY_RESET\",\n ACCOUNT_BLOCKED : \"ACCOUNT_BLOCKED\",\n ACCOUNT_UNBLOCKED : \"ACCOUNT_UNBLOCKED\",\n ACCESS_UNAVAILABLE : \"ACCESS_UNAVAILABLE\",\n VPN_BLOCKED : \"VPN_BLOCKED\",\n SERIES_PAUSED : \"SERIES_PAUSED\",\n MAX_AMOUNT_REACHED : \"MAX_AMOUNT_REACHED\",\n UNLINK_WALLET : \"UNLINK_WALLET\",\n GRANT_ACCEPT_SUCCESS : \"GRANT_ACCEPT_SUCCESS\"\n};\n\nexport const FUNDING_TYPE = {\n BANK_TRANSFER : \"bank_transfer\",\n USDC_TRANSFER : \"usdc_transfer\",\n SOLANA_TRANSFER : \"solana_transfer\",\n ETHEREUM_TRANSFER : \"ethereum_transfer\",\n};\n\nexport const TX_STATUS = {\n QUEUED : \"queued\",\n PENDING : \"pending\",\n CONFIRMED : \"confirmed\",\n STUCK : \"stuck\",\n FAILED : \"failed\",\n DROPPED : \"dropped\",\n};\n\nexport const FILING_STATUS = {\n FILED : \"filed\",\n PENDING : \"pending\",\n NOT_FILED : \"not_filed\",\n};\n\nexport const SERIES_STATUS = {\n SETUP : \"setup\",\n READY : \"ready\",\n LIVE : \"live\",\n PAUSED : \"paused\",\n CLOSED : \"closed\",\n DELETED : \"deleted\",\n SOFT_COMMITMENT : \"soft_commitment\",\n};\n\nexport const SERIES_TYPE = {\n FUNDRAISING : \"fundraising\",\n GRANT : \"grant\",\n SHARES : \"shares\",\n ROLLUP : \"rollup\",\n WARRANT : \"warrant\", // for shares warrants (not for warrants on tokens)\n TOKEN : \"token\", // for token warrants and plain tokens\n SPV : \"spv\",\n};\n\nexport const SERIES_ROOT = {\n fundraising : \"/series\",\n grants : \"/grants\",\n community : \"/circle\",\n shares : \"/series\",\n token : \"/token\",\n guest : \"/guest\",\n spv : \"/spv\", // NOT YET IMPLEMENTED\n};\n\nexport const CONTEXT = {\n SYNDICATE : \"circle\",\n SERIES : \"series\",\n GRANTS : \"grants\",\n INVITATION : \"invitation\",\n TOKEN : \"token\",\n ROLLUP : \"rollup\",\n GUEST : \"guest\",\n};\n\nexport const CONTRACT_EXEC_TRIGGER = {\n FUNDS : \"funds\",\n TOKENS : \"tokens\",\n};\n\nexport const S3_ASSET_TYPE = {\n KYC : \"kyc\",\n ACCREDITATION_PROOF : \"accreditation_proof\",\n CUSTOM_LEGAL_DOC : \"custom_legal_doc\",\n COMPANY_DOC : \"company_doc\",\n CAP_TABLE : \"cap_table\",\n};\n\nexport const CONTRACT_SECURITIES_TYPE = {\n CONVERTIBLE : \"convertible\",\n SHARE : \"share\",\n TOKEN : \"token\",\n};\n\nexport const COMPENSATION_TYPE = {\n OPTION : \"OPTION\",\n RSU : \"RSU\",\n OPTION_ISO : \"OPTION_ISO\",\n OPTION_NSO : \"OPTION_NSO\",\n};\n\nexport const CONTRACT_SUBTYPE = {\n RSU : \"rsu\",\n OPTIONS : \"options\",\n GRANT : \"grant\",\n ROLLUP : \"rollup\",\n WARRANT : \"warrant\",\n SOFT_COMMITMENT : \"soft_commitment\",\n};\n\nexport const GRANT_STATUS = {\n PENDING_TAX : \"PENDING_TAX\",\n PENDING_SIGNATURE : \"PENDING_SIGNATURE\",\n USER_DECLINED : \"USER_DECLINED\",\n CLIFF_PERIOD : \"CLIFF_PERIOD\",\n READY_TO_ISSUE : \"READY_TO_ISSUE\",\n READY_TO_EXERCISE : \"READY_TO_EXERCISE\",\n ISSUED : \"ISSUED\",\n CANCELED : \"CANCELED\",\n // Grants for V2 customers status below.\n SIGN_NEEDED : \"SIGN_NEEDED\",\n VESTING : \"VESTING\",\n VESTED : \"VESTED\",\n EXERCISED : \"EXERCISED\",\n};\n\nexport const SYNDICATE = {\n FARCASTER : \"farcaster\",\n DRAPER : \"draper\",\n APECHAIN : \"apechain\",\n BASE : \"base\",\n SOLANA : \"solana\",\n};\n\nexport const INVITATION_LINK = {\n DEFAULT: \"Default\"\n};\n\nexport const NON_ACCREDITED_USERS_ALLOWED = {\n DEFAULT: 35\n};\n\nexport const INVESTOR_URLS = {\n dev : \"https://investors.dev.fairmint.co/login\",\n production : \"https://investors.fairmint.com/login\"\n};\n","import { useEffect, useMemo } from \"react\";\n\nimport { useLocation } from \"react-router-dom\";\nimport useSWR from \"swr\";\n\nimport { SERIES_ROOT } from \"src/constants\";\nimport useSlug from \"src/redux/hooks/useSlug\";\nimport { SERVICE_1, callLambda } from \"src/utils/lambda\";\n\nconst SERIES_ROOT_PATHS = [...new Set(Object.values(SERIES_ROOT))];\n\nexport default () => {\n const location = useLocation();\n const { setData: setSlug } = useSlug();\n const slug = useMemo(() => {\n if (!SERIES_ROOT_PATHS.some(dir => location.pathname.startsWith(dir))) {\n return null;\n }\n return location.pathname.split(\"/\")[2];\n }, [location]);\n\n useEffect(() => {\n setSlug(slug);\n }, [slug, setSlug]);\n\n return useSWR(\n [slug, \"portalItem\"],\n () => (slug ? callLambda({\n method : \"get\",\n service : SERVICE_1,\n url : \"getPortalInfo\",\n unauthed : true\n }) : null)\n );\n};\n","import { usePrivy } from \"@privy-io/react-auth\";\nimport useWebSocket from \"react-use-websocket\";\n\nimport { config_wsEndpoint } from \"src/config\";\n\nexport default () => {\n const { user } = usePrivy();\n\n const { sendMessage, lastMessage, readyState } = useWebSocket(\n config_wsEndpoint, {\n queryParams: {\n userId: user && user.id\n },\n shouldReconnect : () => true,\n reconnectInterval : 5000,\n }, !!user\n );\n\n return { sendMessage, lastMessage, readyState };\n};\n","import React from \"react\";\n\nconst AppContext = React.createContext({ context: null, value: null });\n\nexport default function useAppContext() {\n const context = React.useContext(AppContext);\n if (context === undefined) {\n throw new Error(\"useAppContext must be used within a AppContext.Provider\");\n }\n return context;\n}\n\nexport { AppContext };\n","var _g, _path, _path2, _g2, _g3, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgReload(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 128,\n height: 114,\n viewBox: \"0 0 128 114\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.5,\n filter: \"url(#filter0_f_18498_35208)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M87.3666 25.1211C77.1851 25.1211 68.9219 33.4644 68.9219 43.7405C68.9219 54.0202 77.1851 62.3598 87.3666 62.3598C97.5665 62.3598 105.811 54.0202 105.811 43.7405C105.811 33.4644 97.5665 25.1211 87.3666 25.1211Z\",\n fill: \"#0062FF\"\n }))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.5 62.1869C0.5 34.4594 22.7955 11.9546 50.2564 11.9546C77.7673 11.9546 100.013 34.4591 100.013 62.1869C100.013 89.9248 77.7673 112.419 50.2564 112.419C22.7954 112.419 0.5 89.9245 0.5 62.1869Z\",\n fill: \"#3EA0FE\",\n fillOpacity: 0.35,\n stroke: \"url(#paint0_linear_18498_35208)\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.7695 12.966C69.5575 7.36286 78.2298 4 87.6753 4C109.455 4 127.06 21.8154 127.06 43.7576C127.06 62.6048 114.081 78.3977 96.6236 82.4862C99.3125 76.2702 100.803 69.4052 100.803 62.1893C100.803 38.4383 84.6387 18.4766 62.7695 12.966Z\",\n fill: \"#4096FE\"\n })), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.5,\n filter: \"url(#filter1_f_18498_35208)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96.3329 82.2172C99.0218 76.0012 100.513 69.1362 100.513 61.9203C100.513 38.1694 84.348 18.2077 62.4789 12.697C53.6431 19.9904 48 31.0796 48 43.4886C48 65.4388 65.6443 83.2462 87.3846 83.2462C90.4635 83.2462 93.4589 82.8903 96.3329 82.2172Z\",\n fill: \"#4096FE\"\n }))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#filter2_d_18498_35208)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.8472 38.7878C47.4973 38.7878 45.5391 40.8125 45.5391 43.231V65.5478C45.5391 67.9764 47.4973 69.9405 49.8472 69.9405C52.1971 69.9405 54.1064 67.9764 54.1064 65.5478V43.231C54.1064 40.8125 52.1971 38.7878 49.8472 38.7878Z\",\n fill: \"url(#paint1_linear_18498_35208)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5871 81.5568C45.5871 83.9803 47.4964 86 49.8952 86C52.2451 86 54.1544 83.9803 54.1544 81.5568C54.1544 79.1332 52.2451 77.1641 49.8463 77.1641C47.4964 77.1641 45.5871 79.1332 45.5871 81.5568Z\",\n fill: \"url(#paint2_linear_18498_35208)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.7391 43.231C45.7391 40.917 47.6137 38.9878 49.8472 38.9878C52.0778 38.9878 53.9064 40.9139 53.9064 43.231V65.5478C53.9064 67.8717 52.081 69.7405 49.8472 69.7405C47.6105 69.7405 45.7391 67.8687 45.7391 65.5478V43.231ZM49.8952 85.8C47.6141 85.8 45.7871 83.8772 45.7871 81.5568C45.7871 79.2378 47.6126 77.3641 49.8463 77.3641C52.1304 77.3641 53.9544 79.2393 53.9544 81.5568C53.9544 83.8788 52.126 85.8 49.8952 85.8Z\",\n stroke: \"url(#paint3_linear_18498_35208)\",\n strokeWidth: 0.4\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"filter\", {\n id: \"filter0_f_18498_35208\",\n x: 50.9219,\n y: 7.12109,\n width: 72.8906,\n height: 73.2388,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"BackgroundImageFix\",\n result: \"shape\"\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 9,\n result: \"effect1_foregroundBlur_18498_35208\"\n })), /*#__PURE__*/React.createElement(\"filter\", {\n id: \"filter1_f_18498_35208\",\n x: 36,\n y: 0.697021,\n width: 76.5117,\n height: 94.5491,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"BackgroundImageFix\",\n result: \"shape\"\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 6,\n result: \"effect1_foregroundBlur_18498_35208\"\n })), /*#__PURE__*/React.createElement(\"filter\", {\n id: \"filter2_d_18498_35208\",\n x: 40.5391,\n y: 33.7878,\n width: 28.6172,\n height: 67.2122,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", {\n dx: 5,\n dy: 5\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 5\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0.25098 0 0 0 0 0.588235 0 0 0 0 0.996078 0 0 0 1 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_18498_35208\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_18498_35208\",\n result: \"shape\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_18498_35208\",\n x1: 16,\n y1: 23.2754,\n x2: 80.8496,\n y2: 102.84,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"white\",\n stopOpacity: 0.25\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"white\",\n stopOpacity: 0\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint1_linear_18498_35208\",\n x1: 49.8477,\n y1: 41.4509,\n x2: 41.916,\n y2: 40.8437,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"white\",\n stopOpacity: 0.75\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"white\",\n stopOpacity: 0.2\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint2_linear_18498_35208\",\n x1: 49.8477,\n y1: 41.4509,\n x2: 41.916,\n y2: 40.8437,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"white\",\n stopOpacity: 0.75\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"white\",\n stopOpacity: 0.2\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint3_linear_18498_35208\",\n x1: 46.9105,\n y1: 44.2881,\n x2: 60.1595,\n y2: 47.2825,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"white\",\n stopOpacity: 0.25\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"white\",\n stopOpacity: 0\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgReload);\nexport default __webpack_public_path__ + \"static/media/reload.f5f67a9e0ef26b3d86564105299ed354.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\n\nimport Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport Container from \"@mui/material/Container\";\nimport Typography from \"@mui/material/Typography\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\n\nimport ReloadSVG from \"src/assets/errors/reload.svg\";\n\nconst ReloadPage = () => {\n const mdUp = useMediaQuery(theme => theme.breakpoints.down(\"md\"));\n\n return (\n <Box\n component=\"main\"\n sx={{ alignItems: \"center\", display: \"flex\", flexGrow: 1, py: \"80px\" }}\n >\n <Container maxWidth=\"lg\">\n <Box sx={{ display: \"flex\", justifyContent: \"center\", mb: 3 }}>\n <Box\n alt=\"Not found\"\n component=\"img\"\n src={ReloadSVG}\n sx={{\n height : \"auto\",\n maxWidth : \"100%\",\n width : 100,\n }}\n />\n </Box>\n <Typography align=\"center\" variant={mdUp ? \"h1\" : \"h5\"}>\n New Updates Available\n </Typography>\n <Typography align=\"center\" color=\"text.secondary\" sx={{ mt: 0.5 }}>\n Life is like a box of chocolates. You never know what you’re gonna get.\n </Typography>\n <Box sx={{ display: \"flex\", justifyContent: \"center\", mt: 3 }}>\n <Button variant=\"contained\" onClick={() => window.location.reload()}>\n Refresh now\n </Button>\n </Box>\n </Container>\n </Box>\n );\n};\n\nexport default ReloadPage;\n","import { useCallback } from \"react\";\n\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { setCurrentDialog } from \"src/redux/slices/global\";\n\nconst useGlobalDialog = () => {\n const data = useSelector(store => store.global?.currentDialog);\n const dispatch = useDispatch();\n\n const setData = useCallback((name, props) => {\n dispatch(setCurrentDialog({ name, props }));\n }, [dispatch]);\n\n return { data, setData };\n};\n\nexport default useGlobalDialog;\n","import { useCallback } from \"react\";\n\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { setPrivyLogin } from \"src/redux/slices/global\";\n\nconst usePrivyLoginMethod = () => {\n const data = useSelector(store => store.global?.privyLogin);\n const dispatch = useDispatch();\n\n const setData = useCallback((payload) => {\n dispatch(setPrivyLogin(payload));\n }, [dispatch]);\n\n return { data, setData };\n};\n\nexport default usePrivyLoginMethod;\n","import { useCallback } from \"react\";\n\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { setSlug } from \"src/redux/slices/global\";\n\nconst useSlug = () => {\n const data = useSelector(store => store.global?.slug);\n const dispatch = useDispatch();\n\n const setData = useCallback((payload) => {\n dispatch(setSlug(payload));\n }, [dispatch]);\n\n return { data, setData };\n};\n\nexport default useSlug;\n","import { createSlice } from \"@reduxjs/toolkit\";\n\nconst initialState = {\n privyLogin : [\"email\"],\n currentDialog : {\n name : null,\n props : null,\n },\n slug: null,\n};\n\nconst slice = createSlice({\n name : \"global\",\n initialState,\n reducers : {\n setPrivyLogin : (state, action) => ({ ...state, privyLogin: action.payload }),\n setCurrentDialog : (state, action) => ({ ...state, currentDialog: action.payload }),\n setSlug : (state, action) => ({ ...state, slug: action.payload }),\n },\n});\n\nexport const { setPrivyLogin, setCurrentDialog, setSlug } = slice.actions;\n\nexport default slice.reducer;\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.7\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import { getAccessToken } from \"@privy-io/react-auth\";\nimport axios from \"axios\";\n\nimport { config_domain, config_apiEndpoint } from \"src/config\";\n\nexport const SERVICE_1 = \"service1\";\nexport const SERVICE_2 = \"service2\";\nexport const SERVICE_ADMIN = \"admin\";\nexport const SERVICE_ADMIN_2 = \"admin2\";\n\nexport const callLambda = async ({ method, service, url, body = {}, queryStringParameters = {}, unauthed = false }) => {\n const accessToken = await getAccessToken();\n if (!accessToken && !unauthed) return null;\n const headers = unauthed ? {} : { Authorization: `Bearer ${accessToken}` };\n let slug = \"/\";\n if (window.location.pathname.match(/\\//g).length > 1) {\n // if 2 slashes or more are found in the path, then it means that a slug is present\n slug = window.location.pathname.split(\"/\")[2];\n }\n const { data } = await axios({\n url : `${config_apiEndpoint}/${service}/${url}`,\n method,\n headers,\n params : {\n ...queryStringParameters,\n domain : config_domain,\n slug,\n t : Date.now()\n },\n data: body,\n });\n return data;\n};\n\nexport const fetchAllResult = async ({ service, url }) => {\n const result = [];\n let lastItemKey;\n\n do {\n const response = await callLambda({\n method : \"POST\",\n service,\n url,\n body : {\n pageLimit : 10000,\n ExclusiveStartKey : lastItemKey\n }\n });\n\n result.push(...response.Items);\n lastItemKey = response.LastEvaluatedKey;\n } while (lastItemKey);\n\n return result;\n};\n\nexport const addNewPrivateAsset = async (portalId, type, data, name, contentType = \"image/png\") => {\n const { signedUrl, id } = await callLambda({\n method : \"post\",\n service : SERVICE_1,\n url : \"addNewPrivateAsset\",\n body : { type, name, contentType },\n queryStringParameters : { portalId }\n });\n await axios({\n data,\n method : \"PUT\",\n url : signedUrl,\n headers : { \"Content-Type\": contentType }\n });\n return id;\n};\n\nexport const uploadFileToS3BySlug = async (slug, data, name, contentType = \"application/pdf\") => {\n const { signedUrl, id } = await callLambda({\n method : \"post\",\n service : SERVICE_1,\n url : \"getUserPreSignedUrlBySlug\",\n body : { contentType, name, slug },\n unauthed : true\n });\n\n await axios({\n data,\n method : \"PUT\",\n url : signedUrl,\n headers : { \"Content-Type\": contentType }\n });\n\n return id;\n};\n\nexport const getS3AssetURLRedirect = (token, id) => `${config_apiEndpoint}/${SERVICE_1}/getPreSignedReadUrlRedirect?id=${id}&authToken=${token}`;\nexport const getS3AssetURLImagesRedirect = (token, portalId, id, key) => `${config_apiEndpoint}/${SERVICE_1}/getPreSignedReadUrlImagesRedirect?id=${id}&authToken=${token}&portalId=${portalId}&key=${key}`;\n","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil â¤ï¸\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function\n /*: EmotionCache */\ncreateCache(options\n/*: Options */\n) {\n var key = options.key;\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node\n /*: HTMLStyleElement */\n ) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n /* : Node */\n\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node\n /*: HTMLStyleElement */\n ) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n /*: (\n selector: string,\n serialized: SerializedStyles,\n sheet: StyleSheet,\n shouldCache: boolean\n ) => string | void */\n\n\n var omnipresentPlugins = [compat, removeLabel];\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function\n /*: void */\n insert(selector\n /*: string */\n , serialized\n /*: SerializedStyles */\n , sheet\n /*: StyleSheet */\n , shouldCache\n /*: boolean */\n ) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache\n /*: EmotionCache */\n = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\n/* import { type EmotionCache } from '@emotion/utils' */\nvar EmotionCacheContext\n/*: React.Context<EmotionCache | null> */\n= /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache()\n/*: EmotionCache | null*/\n{\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache\n/* <Props, Ref: React.Ref<*>> */\n(func\n/*: (props: Props, cache: EmotionCache, ref: Ref) => React.Node */\n)\n/*: React.AbstractComponent<Props> */\n{\n return /*#__PURE__*/forwardRef(function (props\n /*: Props */\n , ref\n /*: Ref */\n ) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme\n/*: Object */\n, theme\n/*: Object | (Object => Object) */\n) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\n/*\ntype ThemeProviderProps = {\n theme: Object | (Object => Object),\n children: React.Node\n}\n*/\n\nvar ThemeProvider = function ThemeProvider(props\n/*: ThemeProviderProps */\n) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme\n/* <Config: {}> */\n(Component\n/*: React.AbstractComponent<Config> */\n)\n/*: React.AbstractComponent<$Diff<Config, { theme: Object }>> */\n{\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n };\n\n var WithTheme = /*#__PURE__*/React.forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type\n/*: React.ElementType */\n, props\n/*: Object */\n) {\n\n var newProps\n /*: any */\n = {};\n\n for (var key in props) {\n if (hasOwn.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(\n/* <any, any> */\nfunction (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwn.call(props, key) && key !== 'css' && key !== typePropName && (!isDevelopment )) {\n newProps[key] = props[key];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isDevelopment as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isDevelopment } from './emotion-element-5486c51c.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-5486c51c.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar jsx\n/*: typeof React.createElement */\n= function jsx\n/*: typeof React.createElement */\n(type\n/*: React.ElementType */\n, props\n/*: Object */\n) {\n var args = arguments;\n\n if (props == null || !hasOwn.call(props, 'css')) {\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global\n/*: React.AbstractComponent<\nGlobalProps\n> */\n= /* #__PURE__ */withEmotionCache(function (props\n/*: GlobalProps */\n, cache) {\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false;\n var node\n /*: HTMLStyleElement | null*/\n = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\n/* import type { Interpolation, SerializedStyles } from '@emotion/utils' */\n\nfunction css()\n/*: SerializedStyles */\n{\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\n/*\ntype Keyframes = {|\n name: string,\n styles: string,\n anim: 1,\n toString: () => string\n|} & string\n*/\n\nvar keyframes = function\n /*: Keyframes */\nkeyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name;\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\n/*\ntype ClassNameArg =\n | string\n | boolean\n | { [key: string]: boolean }\n | Array<ClassNameArg>\n | null\n | void\n*/\n\nvar classnames = function\n /*: string */\nclassnames(args\n/*: Array<ClassNameArg> */\n) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered\n/*: Object */\n, css\n/*: (...args: Array<any>) => string */\n, className\n/*: string */\n) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n/*\ntype Props = {\n children: ({\n css: (...args: any) => string,\n cx: (...args: Array<ClassNameArg>) => string,\n theme: Object\n }) => React.Node\n} */\n\n\nvar ClassNames\n/*: React.AbstractComponent<Props>*/\n= /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && isDevelopment) {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && isDevelopment) {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n }\n\n break;\n }\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g;\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n styles += templateStringsArr[i];\n }\n }\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n}\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else if (className) {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getBackdropUtilityClass(slot) {\n return generateUtilityClass('MuiBackdrop', slot);\n}\nconst backdropClasses = generateUtilityClasses('MuiBackdrop', ['root', 'invisible']);\nexport default backdropClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport styled from '@mui/styled-engine';\nimport styleFunctionSx, { extendSxProp } from './styleFunctionSx';\nimport useTheme from './useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createBox(options = {}) {\n const {\n themeId,\n defaultTheme,\n defaultClassName = 'MuiBox-root',\n generateClassName\n } = options;\n const BoxRoot = styled('div', {\n shouldForwardProp: prop => prop !== 'theme' && prop !== 'sx' && prop !== 'as'\n })(styleFunctionSx);\n const Box = /*#__PURE__*/React.forwardRef(function Box(inProps, ref) {\n const theme = useTheme(defaultTheme);\n const _extendSxProp = extendSxProp(inProps),\n {\n className,\n component = 'div'\n } = _extendSxProp,\n other = _objectWithoutPropertiesLoose(_extendSxProp, _excluded);\n return /*#__PURE__*/_jsx(BoxRoot, _extends({\n as: component,\n ref: ref,\n className: clsx(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),\n theme: themeId ? theme[themeId] || theme : theme\n }, other));\n });\n return Box;\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nconst boxClasses = generateUtilityClasses('MuiBox', ['root']);\nexport default boxClasses;","'use client';\n\nimport { createBox } from '@mui/system';\nimport PropTypes from 'prop-types';\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '../className';\nimport { createTheme } from '../styles';\nimport THEME_ID from '../styles/identifier';\nimport boxClasses from './boxClasses';\nconst defaultTheme = createTheme();\nconst Box = createBox({\n themeId: THEME_ID,\n defaultTheme,\n defaultClassName: boxClasses.root,\n generateClassName: ClassNameGenerator.generate\n});\nprocess.env.NODE_ENV !== \"production\" ? Box.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────â”\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Box;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonUtilityClass(slot) {\n return generateUtilityClass('MuiButton', slot);\n}\nconst buttonClasses = generateUtilityClasses('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'textSuccess', 'textError', 'textInfo', 'textWarning', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'outlinedSuccess', 'outlinedError', 'outlinedInfo', 'outlinedWarning', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'containedSuccess', 'containedError', 'containedInfo', 'containedWarning', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorError', 'colorInfo', 'colorWarning', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'icon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);\nexport default buttonClasses;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst ButtonGroupButtonContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n ButtonGroupButtonContext.displayName = 'ButtonGroupButtonContext';\n}\nexport default ButtonGroupButtonContext;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"color\", \"component\", \"className\", \"disabled\", \"disableElevation\", \"disableFocusRipple\", \"endIcon\", \"focusVisibleClassName\", \"fullWidth\", \"size\", \"startIcon\", \"type\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport resolveProps from '@mui/utils/resolveProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport buttonClasses, { getButtonUtilityClass } from './buttonClasses';\nimport ButtonGroupContext from '../ButtonGroup/ButtonGroupContext';\nimport ButtonGroupButtonContext from '../ButtonGroup/ButtonGroupButtonContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n color,\n disableElevation,\n fullWidth,\n size,\n variant,\n classes\n } = ownerState;\n const slots = {\n root: ['root', variant, `${variant}${capitalize(color)}`, `size${capitalize(size)}`, `${variant}Size${capitalize(size)}`, `color${capitalize(color)}`, disableElevation && 'disableElevation', fullWidth && 'fullWidth'],\n label: ['label'],\n startIcon: ['icon', 'startIcon', `iconSize${capitalize(size)}`],\n endIcon: ['icon', 'endIcon', `iconSize${capitalize(size)}`]\n };\n const composedClasses = composeClasses(slots, getButtonUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst commonIconStyles = ownerState => _extends({}, ownerState.size === 'small' && {\n '& > *:nth-of-type(1)': {\n fontSize: 18\n }\n}, ownerState.size === 'medium' && {\n '& > *:nth-of-type(1)': {\n fontSize: 20\n }\n}, ownerState.size === 'large' && {\n '& > *:nth-of-type(1)': {\n fontSize: 22\n }\n});\nconst ButtonRoot = styled(ButtonBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiButton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], styles[`${ownerState.variant}${capitalize(ownerState.color)}`], styles[`size${capitalize(ownerState.size)}`], styles[`${ownerState.variant}Size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, ownerState.disableElevation && styles.disableElevation, ownerState.fullWidth && styles.fullWidth];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _theme$palette$getCon, _theme$palette;\n const inheritContainedBackgroundColor = theme.palette.mode === 'light' ? theme.palette.grey[300] : theme.palette.grey[800];\n const inheritContainedHoverBackgroundColor = theme.palette.mode === 'light' ? theme.palette.grey.A100 : theme.palette.grey[700];\n return _extends({}, theme.typography.button, {\n minWidth: 64,\n padding: '6px 16px',\n borderRadius: (theme.vars || theme).shape.borderRadius,\n transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color', 'color'], {\n duration: theme.transitions.duration.short\n }),\n '&:hover': _extends({\n textDecoration: 'none',\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }, ownerState.variant === 'outlined' && ownerState.color !== 'inherit' && {\n border: `1px solid ${(theme.vars || theme).palette[ownerState.color].main}`,\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }, ownerState.variant === 'contained' && {\n backgroundColor: theme.vars ? theme.vars.palette.Button.inheritContainedHoverBg : inheritContainedHoverBackgroundColor,\n boxShadow: (theme.vars || theme).shadows[4],\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n boxShadow: (theme.vars || theme).shadows[2],\n backgroundColor: (theme.vars || theme).palette.grey[300]\n }\n }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].dark,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n }\n }),\n '&:active': _extends({}, ownerState.variant === 'contained' && {\n boxShadow: (theme.vars || theme).shadows[8]\n }),\n [`&.${buttonClasses.focusVisible}`]: _extends({}, ownerState.variant === 'contained' && {\n boxShadow: (theme.vars || theme).shadows[6]\n }),\n [`&.${buttonClasses.disabled}`]: _extends({\n color: (theme.vars || theme).palette.action.disabled\n }, ownerState.variant === 'outlined' && {\n border: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`\n }, ownerState.variant === 'contained' && {\n color: (theme.vars || theme).palette.action.disabled,\n boxShadow: (theme.vars || theme).shadows[0],\n backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n })\n }, ownerState.variant === 'text' && {\n padding: '6px 8px'\n }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n color: (theme.vars || theme).palette[ownerState.color].main\n }, ownerState.variant === 'outlined' && {\n padding: '5px 15px',\n border: '1px solid currentColor'\n }, ownerState.variant === 'outlined' && ownerState.color !== 'inherit' && {\n color: (theme.vars || theme).palette[ownerState.color].main,\n border: theme.vars ? `1px solid rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.5)` : `1px solid ${alpha(theme.palette[ownerState.color].main, 0.5)}`\n }, ownerState.variant === 'contained' && {\n color: theme.vars ?\n // this is safe because grey does not change between default light/dark mode\n theme.vars.palette.text.primary : (_theme$palette$getCon = (_theme$palette = theme.palette).getContrastText) == null ? void 0 : _theme$palette$getCon.call(_theme$palette, theme.palette.grey[300]),\n backgroundColor: theme.vars ? theme.vars.palette.Button.inheritContainedBg : inheritContainedBackgroundColor,\n boxShadow: (theme.vars || theme).shadows[2]\n }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n color: (theme.vars || theme).palette[ownerState.color].contrastText,\n backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n }, ownerState.color === 'inherit' && {\n color: 'inherit',\n borderColor: 'currentColor'\n }, ownerState.size === 'small' && ownerState.variant === 'text' && {\n padding: '4px 5px',\n fontSize: theme.typography.pxToRem(13)\n }, ownerState.size === 'large' && ownerState.variant === 'text' && {\n padding: '8px 11px',\n fontSize: theme.typography.pxToRem(15)\n }, ownerState.size === 'small' && ownerState.variant === 'outlined' && {\n padding: '3px 9px',\n fontSize: theme.typography.pxToRem(13)\n }, ownerState.size === 'large' && ownerState.variant === 'outlined' && {\n padding: '7px 21px',\n fontSize: theme.typography.pxToRem(15)\n }, ownerState.size === 'small' && ownerState.variant === 'contained' && {\n padding: '4px 10px',\n fontSize: theme.typography.pxToRem(13)\n }, ownerState.size === 'large' && ownerState.variant === 'contained' && {\n padding: '8px 22px',\n fontSize: theme.typography.pxToRem(15)\n }, ownerState.fullWidth && {\n width: '100%'\n });\n}, ({\n ownerState\n}) => ownerState.disableElevation && {\n boxShadow: 'none',\n '&:hover': {\n boxShadow: 'none'\n },\n [`&.${buttonClasses.focusVisible}`]: {\n boxShadow: 'none'\n },\n '&:active': {\n boxShadow: 'none'\n },\n [`&.${buttonClasses.disabled}`]: {\n boxShadow: 'none'\n }\n});\nconst ButtonStartIcon = styled('span', {\n name: 'MuiButton',\n slot: 'StartIcon',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.startIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'inherit',\n marginRight: 8,\n marginLeft: -4\n}, ownerState.size === 'small' && {\n marginLeft: -2\n}, commonIconStyles(ownerState)));\nconst ButtonEndIcon = styled('span', {\n name: 'MuiButton',\n slot: 'EndIcon',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.endIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'inherit',\n marginRight: -4,\n marginLeft: 8\n}, ownerState.size === 'small' && {\n marginRight: -2\n}, commonIconStyles(ownerState)));\nconst Button = /*#__PURE__*/React.forwardRef(function Button(inProps, ref) {\n // props priority: `inProps` > `contextProps` > `themeDefaultProps`\n const contextProps = React.useContext(ButtonGroupContext);\n const buttonGroupButtonContextPositionClassName = React.useContext(ButtonGroupButtonContext);\n const resolvedProps = resolveProps(contextProps, inProps);\n const props = useDefaultProps({\n props: resolvedProps,\n name: 'MuiButton'\n });\n const {\n children,\n color = 'primary',\n component = 'button',\n className,\n disabled = false,\n disableElevation = false,\n disableFocusRipple = false,\n endIcon: endIconProp,\n focusVisibleClassName,\n fullWidth = false,\n size = 'medium',\n startIcon: startIconProp,\n type,\n variant = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n component,\n disabled,\n disableElevation,\n disableFocusRipple,\n fullWidth,\n size,\n type,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const startIcon = startIconProp && /*#__PURE__*/_jsx(ButtonStartIcon, {\n className: classes.startIcon,\n ownerState: ownerState,\n children: startIconProp\n });\n const endIcon = endIconProp && /*#__PURE__*/_jsx(ButtonEndIcon, {\n className: classes.endIcon,\n ownerState: ownerState,\n children: endIconProp\n });\n const positionClassName = buttonGroupButtonContextPositionClassName || '';\n return /*#__PURE__*/_jsxs(ButtonRoot, _extends({\n ownerState: ownerState,\n className: clsx(contextProps.className, classes.root, className, positionClassName),\n component: component,\n disabled: disabled,\n focusRipple: !disableFocusRipple,\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n ref: ref,\n type: type\n }, other, {\n classes: classes,\n children: [startIcon, children, endIcon]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Button.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────â”\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'success', 'error', 'info', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, no elevation is used.\n * @default false\n */\n disableElevation: PropTypes.bool,\n /**\n * If `true`, the keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n /**\n * If `true`, the ripple effect is disabled.\n *\n * âš ï¸ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n * @default false\n */\n disableRipple: PropTypes.bool,\n /**\n * Element placed after the children.\n */\n endIcon: PropTypes.node,\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * If `true`, the button will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The URL to link to when the button is clicked.\n * If defined, an `a` element will be used as the root node.\n */\n href: PropTypes.string,\n /**\n * The size of the component.\n * `small` is equivalent to the dense button styling.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n /**\n * Element placed before the children.\n */\n startIcon: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * @ignore\n */\n type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string]),\n /**\n * The variant to use.\n * @default 'text'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['contained', 'outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default Button;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction Ripple(props) {\n const {\n className,\n classes,\n pulsate = false,\n rippleX,\n rippleY,\n rippleSize,\n in: inProp,\n onExited,\n timeout\n } = props;\n const [leaving, setLeaving] = React.useState(false);\n const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n const rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n if (!inProp && !leaving) {\n setLeaving(true);\n }\n React.useEffect(() => {\n if (!inProp && onExited != null) {\n // react-transition-group#onExited\n const timeoutId = setTimeout(onExited, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n }\n return undefined;\n }, [onExited, inProp, timeout]);\n return /*#__PURE__*/_jsx(\"span\", {\n className: rippleClassName,\n style: rippleStyles,\n children: /*#__PURE__*/_jsx(\"span\", {\n className: childClassName\n })\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTouchRippleUtilityClass(slot) {\n return generateUtilityClass('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = generateUtilityClasses('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\nexport default touchRippleClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"center\", \"classes\", \"className\"];\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport { keyframes } from '@mui/system';\nimport useTimeout from '@mui/utils/useTimeout';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport Ripple from './Ripple';\nimport touchRippleClasses from './touchRippleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes(_t || (_t = _`\n 0% {\n transform: scale(0);\n opacity: 0.1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 0.3;\n }\n`));\nconst exitKeyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n`));\nconst pulsateKeyframe = keyframes(_t3 || (_t3 = _`\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.92);\n }\n\n 100% {\n transform: scale(1);\n }\n`));\nexport const TouchRippleRoot = styled('span', {\n name: 'MuiTouchRipple',\n slot: 'Root'\n})({\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n});\n\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nexport const TouchRippleRipple = styled(Ripple, {\n name: 'MuiTouchRipple',\n slot: 'Ripple'\n})(_t4 || (_t4 = _`\n opacity: 0;\n position: absolute;\n\n &.${0} {\n opacity: 0.3;\n transform: scale(1);\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n &.${0} {\n animation-duration: ${0}ms;\n }\n\n & .${0} {\n opacity: 1;\n display: block;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: currentColor;\n }\n\n & .${0} {\n opacity: 0;\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n & .${0} {\n position: absolute;\n /* @noflip */\n left: 0px;\n top: 0;\n animation-name: ${0};\n animation-duration: 2500ms;\n animation-timing-function: ${0};\n animation-iteration-count: infinite;\n animation-delay: 200ms;\n }\n`), touchRippleClasses.rippleVisible, enterKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.ripplePulsate, ({\n theme\n}) => theme.transitions.duration.shorter, touchRippleClasses.child, touchRippleClasses.childLeaving, exitKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.childPulsate, pulsateKeyframe, ({\n theme\n}) => theme.transitions.easing.easeInOut);\n\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiTouchRipple'\n });\n const {\n center: centerProp = false,\n classes = {},\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [ripples, setRipples] = React.useState([]);\n const nextKey = React.useRef(0);\n const rippleCallback = React.useRef(null);\n React.useEffect(() => {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]);\n\n // Used to filter out mouse emulated events on mobile.\n const ignoringMouseDown = React.useRef(false);\n // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n const startTimer = useTimeout();\n\n // This is the hook called once the previous timeout is ready.\n const startTimerCommit = React.useRef(null);\n const container = React.useRef(null);\n const startCommit = React.useCallback(params => {\n const {\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n } = params;\n setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n classes: {\n ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n child: clsx(classes.child, touchRippleClasses.child),\n childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n },\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n }, nextKey.current)]);\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n const start = React.useCallback((event = {}, options = {}, cb = () => {}) => {\n const {\n pulsate = false,\n center = centerProp || options.pulsate,\n fakeElement = false // For test purposes\n } = options;\n if ((event == null ? void 0 : event.type) === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n if ((event == null ? void 0 : event.type) === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n const element = fakeElement ? null : container.current;\n const rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n };\n\n // Get the size of the ripple\n let rippleX;\n let rippleY;\n let rippleSize;\n if (center || event === undefined || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n const {\n clientX,\n clientY\n } = event.touches && event.touches.length > 0 ? event.touches[0] : event;\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n if (center) {\n rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n\n // For some reason the animation is broken on Mobile Chrome if the size is even.\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n }\n\n // Touche devices\n if (event != null && event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = () => {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n };\n // Delay the execution of the ripple effect.\n // We have to make a tradeoff with this delay value.\n startTimer.start(DELAY_RIPPLE, () => {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n });\n }\n } else {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n }\n }, [centerProp, startCommit, startTimer]);\n const pulsate = React.useCallback(() => {\n start({}, {\n pulsate: true\n });\n }, [start]);\n const stop = React.useCallback((event, cb) => {\n startTimer.clear();\n\n // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n if ((event == null ? void 0 : event.type) === 'touchend' && startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.start(0, () => {\n stop(event, cb);\n });\n return;\n }\n startTimerCommit.current = null;\n setRipples(oldRipples => {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, [startTimer]);\n React.useImperativeHandle(ref, () => ({\n pulsate,\n start,\n stop\n }), [pulsate, start, stop]);\n return /*#__PURE__*/_jsx(TouchRippleRoot, _extends({\n className: clsx(touchRippleClasses.root, classes.root, className),\n ref: container\n }, other, {\n children: /*#__PURE__*/_jsx(TransitionGroup, {\n component: null,\n exit: true,\n children: ripples\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default TouchRipple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonBaseUtilityClass(slot) {\n return generateUtilityClass('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = generateUtilityClasses('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\nexport default buttonBaseClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"action\", \"centerRipple\", \"children\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"LinkComponent\", \"onBlur\", \"onClick\", \"onContextMenu\", \"onDragLeave\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"tabIndex\", \"TouchRippleProps\", \"touchRippleRef\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from './buttonBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n focusVisible,\n focusVisibleClassName,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n };\n const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n if (focusVisible && focusVisibleClassName) {\n composedClasses.root += ` ${focusVisibleClassName}`;\n }\n return composedClasses;\n};\nexport const ButtonBaseRoot = styled('button', {\n name: 'MuiButtonBase',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native <a /> element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n },\n [`&.${buttonBaseClasses.disabled}`]: {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n});\n\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiButtonBase'\n });\n const {\n action,\n centerRipple = false,\n children,\n className,\n component = 'button',\n disabled = false,\n disableRipple = false,\n disableTouchRipple = false,\n focusRipple = false,\n LinkComponent = 'a',\n onBlur,\n onClick,\n onContextMenu,\n onDragLeave,\n onFocus,\n onFocusVisible,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onMouseUp,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n tabIndex = 0,\n TouchRippleProps,\n touchRippleRef,\n type\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const buttonRef = React.useRef(null);\n const rippleRef = React.useRef(null);\n const handleRippleRef = useForkRef(rippleRef, touchRippleRef);\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n const [focusVisible, setFocusVisible] = React.useState(false);\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n React.useImperativeHandle(action, () => ({\n focusVisible: () => {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n }), []);\n const [mountedState, setMountedState] = React.useState(false);\n React.useEffect(() => {\n setMountedState(true);\n }, []);\n const enableTouchRipple = mountedState && !disableRipple && !disabled;\n React.useEffect(() => {\n if (focusVisible && focusRipple && !disableRipple && mountedState) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible, mountedState]);\n function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n return useEventCallback(event => {\n if (eventCallback) {\n eventCallback(event);\n }\n const ignore = skipRippleAction;\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n return true;\n });\n }\n const handleMouseDown = useRippleHandler('start', onMouseDown);\n const handleContextMenu = useRippleHandler('stop', onContextMenu);\n const handleDragLeave = useRippleHandler('stop', onDragLeave);\n const handleMouseUp = useRippleHandler('stop', onMouseUp);\n const handleMouseLeave = useRippleHandler('stop', event => {\n if (focusVisible) {\n event.preventDefault();\n }\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n const handleTouchStart = useRippleHandler('start', onTouchStart);\n const handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n const handleTouchMove = useRippleHandler('stop', onTouchMove);\n const handleBlur = useRippleHandler('stop', event => {\n handleBlurVisible(event);\n if (isFocusVisibleRef.current === false) {\n setFocusVisible(false);\n }\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n const handleFocus = useEventCallback(event => {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n handleFocusVisible(event);\n if (isFocusVisibleRef.current === true) {\n setFocusVisible(true);\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n if (onFocus) {\n onFocus(event);\n }\n });\n const isNonNativeButton = () => {\n const button = buttonRef.current;\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n\n /**\n * IE11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n const keydownRef = React.useRef(false);\n const handleKeyDown = useEventCallback(event => {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n rippleRef.current.stop(event, () => {\n rippleRef.current.start(event);\n });\n }\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n\n // Keyboard accessibility for non interactive elements\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n if (onClick) {\n onClick(event);\n }\n }\n });\n const handleKeyUp = useEventCallback(event => {\n // calling preventDefault in keyUp on a <button> will not dispatch a click event if Space is pressed\n // https://codesandbox.io/p/sandbox/button-keyup-preventdefault-dn7f0\n if (focusRipple && event.key === ' ' && rippleRef.current && focusVisible && !event.defaultPrevented) {\n keydownRef.current = false;\n rippleRef.current.stop(event, () => {\n rippleRef.current.pulsate(event);\n });\n }\n if (onKeyUp) {\n onKeyUp(event);\n }\n\n // Keyboard accessibility for non interactive elements\n if (onClick && event.target === event.currentTarget && isNonNativeButton() && event.key === ' ' && !event.defaultPrevented) {\n onClick(event);\n }\n });\n let ComponentProp = component;\n if (ComponentProp === 'button' && (other.href || other.to)) {\n ComponentProp = LinkComponent;\n }\n const buttonProps = {};\n if (ComponentProp === 'button') {\n buttonProps.type = type === undefined ? 'button' : type;\n buttonProps.disabled = disabled;\n } else {\n if (!other.href && !other.to) {\n buttonProps.role = 'button';\n }\n if (disabled) {\n buttonProps['aria-disabled'] = disabled;\n }\n }\n const handleRef = useForkRef(ref, focusVisibleRef, buttonRef);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (enableTouchRipple && !rippleRef.current) {\n console.error(['MUI: The `component` prop provided to ButtonBase is invalid.', 'Please make sure the children prop is rendered in this custom component.'].join('\\n'));\n }\n }, [enableTouchRipple]);\n }\n const ownerState = _extends({}, props, {\n centerRipple,\n component,\n disabled,\n disableRipple,\n disableTouchRipple,\n focusRipple,\n tabIndex,\n focusVisible\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(ButtonBaseRoot, _extends({\n as: ComponentProp,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n onBlur: handleBlur,\n onClick: onClick,\n onContextMenu: handleContextMenu,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n onMouseDown: handleMouseDown,\n onMouseLeave: handleMouseLeave,\n onMouseUp: handleMouseUp,\n onDragLeave: handleDragLeave,\n onTouchEnd: handleTouchEnd,\n onTouchMove: handleTouchMove,\n onTouchStart: handleTouchStart,\n ref: handleRef,\n tabIndex: disabled ? -1 : tabIndex,\n type: type\n }, buttonProps, other, {\n children: [children, enableTouchRipple ?\n /*#__PURE__*/\n /* TouchRipple is only needed client-side, x2 boost on the server. */\n _jsx(TouchRipple, _extends({\n ref: handleRippleRef,\n center: centerRipple\n }, TouchRippleProps)) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? ButtonBase.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────â”\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * A ref for imperative actions.\n * It currently only supports `focusVisible()` action.\n */\n action: refType,\n /**\n * If `true`, the ripples are centered.\n * They won't start at the cursor interaction position.\n * @default false\n */\n centerRipple: PropTypes.bool,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: elementTypeAcceptingRef,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the ripple effect is disabled.\n *\n * âš ï¸ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n * @default false\n */\n disableRipple: PropTypes.bool,\n /**\n * If `true`, the touch ripple effect is disabled.\n * @default false\n */\n disableTouchRipple: PropTypes.bool,\n /**\n * If `true`, the base button will have a keyboard focus ripple.\n * @default false\n */\n focusRipple: PropTypes.bool,\n /**\n * This prop can help identify which element has keyboard focus.\n * The class name will be applied when the element gains the focus through keyboard interaction.\n * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n * if needed.\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * @ignore\n */\n href: PropTypes /* @typescript-to-proptypes-ignore */.any,\n /**\n * The component used to render a link when the `href` prop is provided.\n * @default 'a'\n */\n LinkComponent: PropTypes.elementType,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * @ignore\n */\n onContextMenu: PropTypes.func,\n /**\n * @ignore\n */\n onDragLeave: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * Callback fired when the component is focused with a keyboard.\n * We trigger a `onFocus` callback too.\n */\n onFocusVisible: PropTypes.func,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * @ignore\n */\n onKeyUp: PropTypes.func,\n /**\n * @ignore\n */\n onMouseDown: PropTypes.func,\n /**\n * @ignore\n */\n onMouseLeave: PropTypes.func,\n /**\n * @ignore\n */\n onMouseUp: PropTypes.func,\n /**\n * @ignore\n */\n onTouchEnd: PropTypes.func,\n /**\n * @ignore\n */\n onTouchMove: PropTypes.func,\n /**\n * @ignore\n */\n onTouchStart: PropTypes.func,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * @default 0\n */\n tabIndex: PropTypes.number,\n /**\n * Props applied to the `TouchRipple` element.\n */\n TouchRippleProps: PropTypes.object,\n /**\n * A ref that points to the `TouchRipple` element.\n */\n touchRippleRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.shape({\n pulsate: PropTypes.func.isRequired,\n start: PropTypes.func.isRequired,\n stop: PropTypes.func.isRequired\n })\n })]),\n /**\n * @ignore\n */\n type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string])\n} : void 0;\nexport default ButtonBase;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst ButtonGroupContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n ButtonGroupContext.displayName = 'ButtonGroupContext';\n}\nexport default ButtonGroupContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"disableShrink\", \"size\", \"style\", \"thickness\", \"value\", \"variant\"];\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled from '../styles/styled';\nimport { getCircularProgressUtilityClass } from './circularProgressClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes(_t || (_t = _`\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n`));\nconst circularDashKeyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n stroke-dasharray: 1px, 200px;\n stroke-dashoffset: 0;\n }\n\n 50% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -15px;\n }\n\n 100% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -125px;\n }\n`));\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n color,\n disableShrink\n } = ownerState;\n const slots = {\n root: ['root', variant, `color${capitalize(color)}`],\n svg: ['svg'],\n circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n };\n return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n name: 'MuiCircularProgress',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n display: 'inline-block'\n}, ownerState.variant === 'determinate' && {\n transition: theme.transitions.create('transform')\n}, ownerState.color !== 'inherit' && {\n color: (theme.vars || theme).palette[ownerState.color].main\n}), ({\n ownerState\n}) => ownerState.variant === 'indeterminate' && css(_t3 || (_t3 = _`\n animation: ${0} 1.4s linear infinite;\n `), circularRotateKeyframe));\nconst CircularProgressSVG = styled('svg', {\n name: 'MuiCircularProgress',\n slot: 'Svg',\n overridesResolver: (props, styles) => styles.svg\n})({\n display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n name: 'MuiCircularProgress',\n slot: 'Circle',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n stroke: 'currentColor'\n}, ownerState.variant === 'determinate' && {\n transition: theme.transitions.create('stroke-dashoffset')\n}, ownerState.variant === 'indeterminate' && {\n // Some default value that looks fine waiting for the animation to kicks in.\n strokeDasharray: '80px, 200px',\n strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n}), ({\n ownerState\n}) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink && css(_t4 || (_t4 = _`\n animation: ${0} 1.4s ease-in-out infinite;\n `), circularDashKeyframe));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiCircularProgress'\n });\n const {\n className,\n color = 'primary',\n disableShrink = false,\n size = 40,\n style,\n thickness = 3.6,\n value = 0,\n variant = 'indeterminate'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n disableShrink,\n size,\n thickness,\n value,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const circleStyle = {};\n const rootStyle = {};\n const rootProps = {};\n if (variant === 'determinate') {\n const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n circleStyle.strokeDasharray = circumference.toFixed(3);\n rootProps['aria-valuenow'] = Math.round(value);\n circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n rootStyle.transform = 'rotate(-90deg)';\n }\n return /*#__PURE__*/_jsx(CircularProgressRoot, _extends({\n className: clsx(classes.root, className),\n style: _extends({\n width: size,\n height: size\n }, rootStyle, style),\n ownerState: ownerState,\n ref: ref,\n role: \"progressbar\"\n }, rootProps, other, {\n children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n className: classes.svg,\n ownerState: ownerState,\n viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n className: classes.circle,\n style: circleStyle,\n ownerState: ownerState,\n cx: SIZE,\n cy: SIZE,\n r: (SIZE - thickness) / 2,\n fill: \"none\",\n strokeWidth: thickness\n })\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────â”\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the shrink animation is disabled.\n * This only works if variant is `indeterminate`.\n * @default false\n */\n disableShrink: chainPropTypes(PropTypes.bool, props => {\n if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n }\n return null;\n }),\n /**\n * The size of the component.\n * If using a number, the pixel unit is assumed.\n * If using a string, you need to provide the CSS unit, for example '3rem'.\n * @default 40\n */\n size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The thickness of the circle.\n * @default 3.6\n */\n thickness: PropTypes.number,\n /**\n * The value of the progress indicator for the determinate variant.\n * Value between 0 and 100.\n * @default 0\n */\n value: PropTypes.number,\n /**\n * The variant to use.\n * Use indeterminate when there is no progress value.\n * @default 'indeterminate'\n */\n variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"component\", \"disableGutters\", \"fixed\", \"maxWidth\", \"classes\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '@mui/utils/capitalize';\nimport useThemePropsSystem from '../useThemeProps';\nimport systemStyled from '../styled';\nimport createTheme from '../createTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\nconst defaultCreateStyledComponent = systemStyled('div', {\n name: 'MuiContainer',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n }\n});\nconst useThemePropsDefault = inProps => useThemePropsSystem({\n props: inProps,\n name: 'MuiContainer',\n defaultTheme\n});\nconst useUtilityClasses = (ownerState, componentName) => {\n const getContainerUtilityClass = slot => {\n return generateUtilityClass(componentName, slot);\n };\n const {\n classes,\n fixed,\n disableGutters,\n maxWidth\n } = ownerState;\n const slots = {\n root: ['root', maxWidth && `maxWidth${capitalize(String(maxWidth))}`, fixed && 'fixed', disableGutters && 'disableGutters']\n };\n return composeClasses(slots, getContainerUtilityClass, classes);\n};\nexport default function createContainer(options = {}) {\n const {\n // This will allow adding custom styled fn (for example for custom sx style function)\n createStyledComponent = defaultCreateStyledComponent,\n useThemeProps = useThemePropsDefault,\n componentName = 'MuiContainer'\n } = options;\n const ContainerRoot = createStyledComponent(({\n theme,\n ownerState\n }) => _extends({\n width: '100%',\n marginLeft: 'auto',\n boxSizing: 'border-box',\n marginRight: 'auto',\n display: 'block'\n }, !ownerState.disableGutters && {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n // @ts-ignore module augmentation fails if custom breakpoints are used\n [theme.breakpoints.up('sm')]: {\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3)\n }\n }), ({\n theme,\n ownerState\n }) => ownerState.fixed && Object.keys(theme.breakpoints.values).reduce((acc, breakpointValueKey) => {\n const breakpoint = breakpointValueKey;\n const value = theme.breakpoints.values[breakpoint];\n if (value !== 0) {\n // @ts-ignore\n acc[theme.breakpoints.up(breakpoint)] = {\n maxWidth: `${value}${theme.breakpoints.unit}`\n };\n }\n return acc;\n }, {}), ({\n theme,\n ownerState\n }) => _extends({}, ownerState.maxWidth === 'xs' && {\n // @ts-ignore module augmentation fails if custom breakpoints are used\n [theme.breakpoints.up('xs')]: {\n // @ts-ignore module augmentation fails if custom breakpoints are used\n maxWidth: Math.max(theme.breakpoints.values.xs, 444)\n }\n }, ownerState.maxWidth &&\n // @ts-ignore module augmentation fails if custom breakpoints are used\n ownerState.maxWidth !== 'xs' && {\n // @ts-ignore module augmentation fails if custom breakpoints are used\n [theme.breakpoints.up(ownerState.maxWidth)]: {\n // @ts-ignore module augmentation fails if custom breakpoints are used\n maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`\n }\n }));\n const Container = /*#__PURE__*/React.forwardRef(function Container(inProps, ref) {\n const props = useThemeProps(inProps);\n const {\n className,\n component = 'div',\n disableGutters = false,\n fixed = false,\n maxWidth = 'lg'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component,\n disableGutters,\n fixed,\n maxWidth\n });\n\n // @ts-ignore module augmentation fails if custom breakpoints are used\n const classes = useUtilityClasses(ownerState, componentName);\n return (\n /*#__PURE__*/\n // @ts-ignore theme is injected by the styled util\n _jsx(ContainerRoot, _extends({\n as: component\n // @ts-ignore module augmentation fails if custom breakpoints are used\n ,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other))\n );\n });\n process.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n children: PropTypes.node,\n classes: PropTypes.object,\n className: PropTypes.string,\n component: PropTypes.elementType,\n disableGutters: PropTypes.bool,\n fixed: PropTypes.bool,\n maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n } : void 0;\n return Container;\n}","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createContainer } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nconst Container = createContainer({\n createStyledComponent: styled('div', {\n name: 'MuiContainer',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n }\n }),\n useThemeProps: inProps => useDefaultProps({\n props: inProps,\n name: 'MuiContainer'\n })\n});\nprocess.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────â”\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the left and right padding is removed.\n * @default false\n */\n disableGutters: PropTypes.bool,\n /**\n * Set the max-width to match the min-width of the current breakpoint.\n * This is useful if you'd prefer to design for a fixed set of sizes\n * instead of trying to accommodate a fully fluid viewport.\n * It's fluid by default.\n * @default false\n */\n fixed: PropTypes.bool,\n /**\n * Determine the max-width of the container.\n * The container width grows with the size of the screen.\n * Set to `false` to disable `maxWidth`.\n * @default 'lg'\n */\n maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Container;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport SystemDefaultPropsProvider, { useDefaultProps as useSystemDefaultProps } from '@mui/system/DefaultPropsProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction DefaultPropsProvider(props) {\n return /*#__PURE__*/_jsx(SystemDefaultPropsProvider, _extends({}, props));\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────â”\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n value: PropTypes.object.isRequired\n} : void 0;\nexport default DefaultPropsProvider;\nexport function useDefaultProps(params) {\n return useSystemDefaultProps(params);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getFilledInputUtilityClass(slot) {\n return generateUtilityClass('MuiFilledInput', slot);\n}\nconst filledInputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiFilledInput', ['root', 'underline', 'input']));\nexport default filledInputClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles as MuiGlobalStyles } from '@mui/styled-engine';\nimport useTheme from '../useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GlobalStyles({\n styles,\n themeId,\n defaultTheme = {}\n}) {\n const upperTheme = useTheme(defaultTheme);\n const globalStyles = typeof styles === 'function' ? styles(themeId ? upperTheme[themeId] || upperTheme : upperTheme) : styles;\n return /*#__PURE__*/_jsx(MuiGlobalStyles, {\n styles: globalStyles\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────â”\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n defaultTheme: PropTypes.object,\n /**\n * @ignore\n */\n styles: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.array, PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.string, PropTypes.bool]),\n /**\n * @ignore\n */\n themeId: PropTypes.string\n} : void 0;\nexport default GlobalStyles;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles as SystemGlobalStyles } from '@mui/system';\nimport defaultTheme from '../styles/defaultTheme';\nimport THEME_ID from '../styles/identifier';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GlobalStyles(props) {\n return /*#__PURE__*/_jsx(SystemGlobalStyles, _extends({}, props, {\n defaultTheme: defaultTheme,\n themeId: THEME_ID\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────â”\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The styles you want to apply globally.\n */\n styles: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.array, PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.string, PropTypes.bool])\n} : void 0;\nexport default GlobalStyles;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getInputBaseUtilityClass(slot) {\n return generateUtilityClass('MuiInputBase', slot);\n}\nconst inputBaseClasses = generateUtilityClasses('MuiInputBase', ['root', 'formControl', 'focused', 'disabled', 'adornedStart', 'adornedEnd', 'error', 'sizeSmall', 'multiline', 'colorSecondary', 'fullWidth', 'hiddenLabel', 'readOnly', 'input', 'inputSizeSmall', 'inputMultiline', 'inputTypeSearch', 'inputAdornedStart', 'inputAdornedEnd', 'inputHiddenLabel']);\nexport default inputBaseClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getInputLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiInputLabel', slot);\n}\nconst inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);\nexport default inputLabelClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getOutlinedInputUtilityClass(slot) {\n return generateUtilityClass('MuiOutlinedInput', slot);\n}\nconst outlinedInputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiOutlinedInput', ['root', 'notchedOutline', 'input']));\nexport default outlinedInputClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getPaperUtilityClass(slot) {\n return generateUtilityClass('MuiPaper', slot);\n}\nconst paperClasses = generateUtilityClasses('MuiPaper', ['root', 'rounded', 'outlined', 'elevation', 'elevation0', 'elevation1', 'elevation2', 'elevation3', 'elevation4', 'elevation5', 'elevation6', 'elevation7', 'elevation8', 'elevation9', 'elevation10', 'elevation11', 'elevation12', 'elevation13', 'elevation14', 'elevation15', 'elevation16', 'elevation17', 'elevation18', 'elevation19', 'elevation20', 'elevation21', 'elevation22', 'elevation23', 'elevation24']);\nexport default paperClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTypographyUtilityClass(slot) {\n return generateUtilityClass('MuiTypography', slot);\n}\nconst typographyClasses = generateUtilityClasses('MuiTypography', ['root', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'inherit', 'button', 'caption', 'overline', 'alignLeft', 'alignRight', 'alignCenter', 'alignJustify', 'noWrap', 'gutterBottom', 'paragraph']);\nexport default typographyClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"align\", \"className\", \"component\", \"gutterBottom\", \"noWrap\", \"paragraph\", \"variant\", \"variantMapping\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { extendSxProp } from '@mui/system/styleFunctionSx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport capitalize from '../utils/capitalize';\nimport { getTypographyUtilityClass } from './typographyClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n align,\n gutterBottom,\n noWrap,\n paragraph,\n variant,\n classes\n } = ownerState;\n const slots = {\n root: ['root', variant, ownerState.align !== 'inherit' && `align${capitalize(align)}`, gutterBottom && 'gutterBottom', noWrap && 'noWrap', paragraph && 'paragraph']\n };\n return composeClasses(slots, getTypographyUtilityClass, classes);\n};\nexport const TypographyRoot = styled('span', {\n name: 'MuiTypography',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.variant && styles[ownerState.variant], ownerState.align !== 'inherit' && styles[`align${capitalize(ownerState.align)}`], ownerState.noWrap && styles.noWrap, ownerState.gutterBottom && styles.gutterBottom, ownerState.paragraph && styles.paragraph];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n margin: 0\n}, ownerState.variant === 'inherit' && {\n // Some elements, like <button> on Chrome have default font that doesn't inherit, reset this.\n font: 'inherit'\n}, ownerState.variant !== 'inherit' && theme.typography[ownerState.variant], ownerState.align !== 'inherit' && {\n textAlign: ownerState.align\n}, ownerState.noWrap && {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n}, ownerState.gutterBottom && {\n marginBottom: '0.35em'\n}, ownerState.paragraph && {\n marginBottom: 16\n}));\nconst defaultVariantMapping = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n subtitle1: 'h6',\n subtitle2: 'h6',\n body1: 'p',\n body2: 'p',\n inherit: 'p'\n};\n\n// TODO v6: deprecate these color values in v5.x and remove the transformation in v6\nconst colorTransformations = {\n primary: 'primary.main',\n textPrimary: 'text.primary',\n secondary: 'secondary.main',\n textSecondary: 'text.secondary',\n error: 'error.main'\n};\nconst transformDeprecatedColors = color => {\n return colorTransformations[color] || color;\n};\nconst Typography = /*#__PURE__*/React.forwardRef(function Typography(inProps, ref) {\n const themeProps = useDefaultProps({\n props: inProps,\n name: 'MuiTypography'\n });\n const color = transformDeprecatedColors(themeProps.color);\n const props = extendSxProp(_extends({}, themeProps, {\n color\n }));\n const {\n align = 'inherit',\n className,\n component,\n gutterBottom = false,\n noWrap = false,\n paragraph = false,\n variant = 'body1',\n variantMapping = defaultVariantMapping\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n align,\n color,\n className,\n component,\n gutterBottom,\n noWrap,\n paragraph,\n variant,\n variantMapping\n });\n const Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(TypographyRoot, _extends({\n as: Component,\n ref: ref,\n ownerState: ownerState,\n className: clsx(classes.root, className)\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Typography.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────â”\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Set the text-align on the component.\n * @default 'inherit'\n */\n align: PropTypes.oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the text will have a bottom margin.\n * @default false\n */\n gutterBottom: PropTypes.bool,\n /**\n * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n *\n * Note that text overflow can only happen with block or inline-block level elements\n * (the element needs to have a width in order to overflow).\n * @default false\n */\n noWrap: PropTypes.bool,\n /**\n * If `true`, the element will be a paragraph element.\n * @default false\n */\n paragraph: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Applies the theme typography styles.\n * @default 'body1'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string]),\n /**\n * The component maps the variant prop to a range of different HTML element types.\n * For instance, subtitle1 to `<h6>`.\n * If you wish to change that mapping, you can provide your own.\n * Alternatively, you can use the `component` prop.\n * @default {\n * h1: 'h1',\n * h2: 'h2',\n * h3: 'h3',\n * h4: 'h4',\n * h5: 'h5',\n * h6: 'h6',\n * subtitle1: 'h6',\n * subtitle2: 'h6',\n * body1: 'p',\n * body2: 'p',\n * inherit: 'p',\n * }\n */\n variantMapping: PropTypes /* @typescript-to-proptypes-ignore */.object\n} : void 0;\nexport default Typography;","const common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","const purple = {\n 50: '#f3e5f5',\n 100: '#e1bee7',\n 200: '#ce93d8',\n 300: '#ba68c8',\n 400: '#ab47bc',\n 500: '#9c27b0',\n 600: '#8e24aa',\n 700: '#7b1fa2',\n 800: '#6a1b9a',\n 900: '#4a148c',\n A100: '#ea80fc',\n A200: '#e040fb',\n A400: '#d500f9',\n A700: '#aa00ff'\n};\nexport default purple;","const red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","const orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","const blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n 50: '#e1f5fe',\n 100: '#b3e5fc',\n 200: '#81d4fa',\n 300: '#4fc3f7',\n 400: '#29b6f6',\n 500: '#03a9f4',\n 600: '#039be5',\n 700: '#0288d1',\n 800: '#0277bd',\n 900: '#01579b',\n A100: '#80d8ff',\n A200: '#40c4ff',\n A400: '#00b0ff',\n A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport { darken, getContrastRatio, lighten } from '@mui/system/colorManipulator';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport purple from '../colors/purple';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport lightBlue from '../colors/lightBlue';\nimport green from '../colors/green';\nexport const light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.6)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: common.white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport const dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: '#121212',\n default: '#121212'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nfunction getDefaultPrimary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: blue[200],\n light: blue[50],\n dark: blue[400]\n };\n }\n return {\n main: blue[700],\n light: blue[400],\n dark: blue[800]\n };\n}\nfunction getDefaultSecondary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: purple[200],\n light: purple[50],\n dark: purple[400]\n };\n }\n return {\n main: purple[500],\n light: purple[300],\n dark: purple[700]\n };\n}\nfunction getDefaultError(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: red[500],\n light: red[300],\n dark: red[700]\n };\n }\n return {\n main: red[700],\n light: red[400],\n dark: red[800]\n };\n}\nfunction getDefaultInfo(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: lightBlue[400],\n light: lightBlue[300],\n dark: lightBlue[700]\n };\n }\n return {\n main: lightBlue[700],\n light: lightBlue[500],\n dark: lightBlue[900]\n };\n}\nfunction getDefaultSuccess(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: green[400],\n light: green[300],\n dark: green[700]\n };\n }\n return {\n main: green[800],\n light: green[500],\n dark: green[900]\n };\n}\nfunction getDefaultWarning(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: orange[400],\n light: orange[300],\n dark: orange[700]\n };\n }\n return {\n main: '#ed6c02',\n // closest to orange[800] that pass 3:1.\n light: orange[500],\n dark: orange[900]\n };\n}\nexport default function createPalette(palette) {\n const {\n mode = 'light',\n contrastThreshold = 3,\n tonalOffset = 0.2\n } = palette,\n other = _objectWithoutPropertiesLoose(palette, _excluded);\n const primary = palette.primary || getDefaultPrimary(mode);\n const secondary = palette.secondary || getDefaultSecondary(mode);\n const error = palette.error || getDefaultError(mode);\n const info = palette.info || getDefaultInfo(mode);\n const success = palette.success || getDefaultSuccess(mode);\n const warning = palette.warning || getDefaultWarning(mode);\n\n // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n function getContrastText(background) {\n const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n if (process.env.NODE_ENV !== 'production') {\n const contrast = getContrastRatio(background, contrastText);\n if (contrast < 3) {\n console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n return contrastText;\n }\n const augmentColor = ({\n color,\n name,\n mainShade = 500,\n lightShade = 300,\n darkShade = 700\n }) => {\n color = _extends({}, color);\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n if (!color.hasOwnProperty('main')) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n }\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n }\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n return color;\n };\n const modes = {\n dark,\n light\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!modes[mode]) {\n console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n }\n }\n const paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: _extends({}, common),\n // prevent mutable object.\n // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: 'primary'\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: 'secondary',\n mainShade: 'A400',\n lightShade: 'A200',\n darkShade: 'A700'\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: 'error'\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: 'warning'\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: 'info'\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: 'success'\n }),\n // The grey colors.\n grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n // Generate a rich color object.\n augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset\n }, modes[mode]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\nimport deepmerge from '@mui/utils/deepmerge';\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n const _ref = typeof typography === 'function' ? typography(palette) : typography,\n {\n fontFamily = defaultFontFamily,\n // The default font size of the Material Specification.\n fontSize = 14,\n // px\n fontWeightLight = 300,\n fontWeightRegular = 400,\n fontWeightMedium = 500,\n fontWeightBold = 700,\n // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16,\n // Apply the CSS properties to all the variants.\n allVariants,\n pxToRem: pxToRem2\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('MUI: `fontSize` is required to be a number.');\n }\n if (typeof htmlFontSize !== 'number') {\n console.error('MUI: `htmlFontSize` is required to be a number.');\n }\n }\n const coef = fontSize / 14;\n const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => _extends({\n fontFamily,\n fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: `${round(letterSpacing / size)}em`\n } : {}, casing, allVariants);\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.\n inherit: {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit'\n }\n };\n return deepmerge(_extends({\n htmlFontSize,\n pxToRem,\n fontFamily,\n fontSize,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport systemCreateTheme from '@mui/system/createTheme';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport createTransitions from './createTransitions';\nimport zIndex from './zIndex';\nfunction createTheme(options = {}, ...args) {\n const {\n mixins: mixinsInput = {},\n palette: paletteInput = {},\n transitions: transitionsInput = {},\n typography: typographyInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (options.vars) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(18));\n }\n const palette = createPalette(paletteInput);\n const systemTheme = systemCreateTheme(options);\n let muiTheme = deepmerge(systemTheme, {\n mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: shadows.slice(),\n typography: createTypography(palette, typographyInput),\n transitions: createTransitions(transitionsInput),\n zIndex: _extends({}, zIndex)\n });\n muiTheme = deepmerge(muiTheme, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n const traverse = (node, component) => {\n let key;\n\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (key in node) {\n const child = node[key];\n if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n const stateClass = generateUtilityClass('', key);\n console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n root: {\n [`&.${stateClass}`]: child\n }\n }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n }\n // Remove the style to prevent global conflicts.\n node[key] = {};\n }\n }\n };\n Object.keys(muiTheme.components).forEach(component => {\n const styleOverrides = muiTheme.components[component].styleOverrides;\n if (styleOverrides && component.indexOf('Mui') === 0) {\n traverse(styleOverrides, component);\n }\n });\n }\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n }\n }\n return createTheme(...args);\n}\nexport default createTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, mixins) {\n return _extends({\n toolbar: {\n minHeight: 56,\n [breakpoints.up('xs')]: {\n '@media (orientation: landscape)': {\n minHeight: 48\n }\n },\n [breakpoints.up('sm')]: {\n minHeight: 64\n }\n }\n }, mixins);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n const constant = height / 36;\n\n // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = _extends({}, easing, inputTransitions.easing);\n const mergedDuration = _extends({}, duration, inputTransitions.duration);\n const create = (props = ['all'], options = {}) => {\n const {\n duration: durationOption = mergedDuration.standard,\n easing: easingOption = mergedEasing.easeInOut,\n delay = 0\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n const isString = value => typeof value === 'string';\n // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n const isNumber = value => !isNaN(parseFloat(value));\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n if (typeof options !== 'object') {\n console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n }\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n }\n }\n return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n };\n return _extends({\n getAutoHeightDuration,\n create\n }, inputTransitions, {\n easing: mergedEasing,\n duration: mergedDuration\n });\n}","export function isUnitless(value) {\n return String(parseFloat(value)).length === String(value).length;\n}\n\n// Ported from Compass\n// https://github.com/Compass/compass/blob/master/core/stylesheets/compass/typography/_units.scss\n// Emulate the sass function \"unit\"\nexport function getUnit(input) {\n return String(input).match(/[\\d.\\-+]*\\s*(.*)/)[1] || '';\n}\n\n// Emulate the sass function \"unitless\"\nexport function toUnitless(length) {\n return parseFloat(length);\n}\n\n// Convert any CSS <length> or <percentage> value to any another.\n// From https://github.com/KyleAMathews/convert-css-length\nexport function convertLength(baseFontSize) {\n return (length, toUnit) => {\n const fromUnit = getUnit(length);\n\n // Optimize for cases where `from` and `to` units are accidentally the same.\n if (fromUnit === toUnit) {\n return length;\n }\n\n // Convert input length to pixels.\n let pxLength = toUnitless(length);\n if (fromUnit !== 'px') {\n if (fromUnit === 'em') {\n pxLength = toUnitless(length) * toUnitless(baseFontSize);\n } else if (fromUnit === 'rem') {\n pxLength = toUnitless(length) * toUnitless(baseFontSize);\n }\n }\n\n // Convert length in pixels to the output unit\n let outputLength = pxLength;\n if (toUnit !== 'px') {\n if (toUnit === 'em') {\n outputLength = pxLength / toUnitless(baseFontSize);\n } else if (toUnit === 'rem') {\n outputLength = pxLength / toUnitless(baseFontSize);\n } else {\n return length;\n }\n }\n return parseFloat(outputLength.toFixed(5)) + toUnit;\n };\n}\nexport function alignProperty({\n size,\n grid\n}) {\n const sizeBelow = size - size % grid;\n const sizeAbove = sizeBelow + grid;\n return size - sizeBelow < sizeAbove - size ? sizeBelow : sizeAbove;\n}\n\n// fontGrid finds a minimal grid (in rem) for the fontSize values so that the\n// lineHeight falls under a x pixels grid, 4px in the case of Material Design,\n// without changing the relative line height\nexport function fontGrid({\n lineHeight,\n pixels,\n htmlFontSize\n}) {\n return pixels / (lineHeight * htmlFontSize);\n}\n\n/**\n * generate a responsive version of a given CSS property\n * @example\n * responsiveProperty({\n * cssProperty: 'fontSize',\n * min: 15,\n * max: 20,\n * unit: 'px',\n * breakpoints: [300, 600],\n * })\n *\n * // this returns\n *\n * {\n * fontSize: '15px',\n * '@media (min-width:300px)': {\n * fontSize: '17.5px',\n * },\n * '@media (min-width:600px)': {\n * fontSize: '20px',\n * },\n * }\n * @param {Object} params\n * @param {string} params.cssProperty - The CSS property to be made responsive\n * @param {number} params.min - The smallest value of the CSS property\n * @param {number} params.max - The largest value of the CSS property\n * @param {string} [params.unit] - The unit to be used for the CSS property\n * @param {Array.number} [params.breakpoints] - An array of breakpoints\n * @param {number} [params.alignStep] - Round scaled value to fall under this grid\n * @returns {Object} responsive styles for {params.cssProperty}\n */\nexport function responsiveProperty({\n cssProperty,\n min,\n max,\n unit = 'rem',\n breakpoints = [600, 900, 1200],\n transform = null\n}) {\n const output = {\n [cssProperty]: `${min}${unit}`\n };\n const factor = (max - min) / breakpoints[breakpoints.length - 1];\n breakpoints.forEach(breakpoint => {\n let value = min + factor * breakpoint;\n if (transform !== null) {\n value = transform(value);\n }\n output[`@media (min-width:${breakpoint}px)`] = {\n [cssProperty]: `${Math.round(value * 10000) / 10000}${unit}`\n };\n });\n return output;\n}","'use client';\n\nimport createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;","export default '$$material';","import slotShouldForwardProp from './slotShouldForwardProp';\nconst rootShouldForwardProp = prop => slotShouldForwardProp(prop) && prop !== 'classes';\nexport default rootShouldForwardProp;","// copied from @mui/system/createStyled\nfunction slotShouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport default slotShouldForwardProp;","'use client';\n\nimport createStyled from '@mui/system/createStyled';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nimport rootShouldForwardProp from './rootShouldForwardProp';\nexport { default as slotShouldForwardProp } from './slotShouldForwardProp';\nexport { default as rootShouldForwardProp } from './rootShouldForwardProp';\nconst styled = createStyled({\n themeId: THEME_ID,\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","'use client';\n\nimport * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useTheme() {\n const theme = useThemeSystem(defaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n return theme[THEME_ID] || theme;\n}","import capitalize from '@mui/utils/capitalize';\nexport default capitalize;","'use client';\n\nimport useEventCallback from '@mui/utils/useEventCallback';\nexport default useEventCallback;","'use client';\n\nimport useForkRef from '@mui/utils/useForkRef';\nexport default useForkRef;","'use client';\n\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport { Timeout } from '../useTimeout/useTimeout';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nconst hadFocusVisibleRecentlyTimeout = new Timeout();\nconst inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n const {\n type,\n tagName\n } = node;\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n if (node.isContentEditable) {\n return true;\n }\n return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n const {\n target\n } = event;\n try {\n return target.matches(':focus-visible');\n } catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n\n // No need for validFocusTarget check. The user does that by attaching it to\n // focusable events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n const ref = React.useCallback(node => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n const isFocusVisibleRef = React.useRef(false);\n\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef.current) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n hadFocusVisibleRecentlyTimeout.start(100, () => {\n hadFocusVisibleRecently = false;\n });\n isFocusVisibleRef.current = false;\n return true;\n }\n return false;\n }\n\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event) {\n if (isFocusVisible(event)) {\n isFocusVisibleRef.current = true;\n return true;\n }\n return false;\n }\n return {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref\n };\n}","'use client';\n\nimport useIsFocusVisible from '@mui/utils/useIsFocusVisible';\nexport default useIsFocusVisible;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Global } from '@emotion/react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction isEmpty(obj) {\n return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\nexport default function GlobalStyles(props) {\n const {\n styles,\n defaultTheme = {}\n } = props;\n const globalStyles = typeof styles === 'function' ? themeInput => styles(isEmpty(themeInput) ? defaultTheme : themeInput) : styles;\n return /*#__PURE__*/_jsx(Global, {\n styles: globalStyles\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes = {\n defaultTheme: PropTypes.object,\n styles: PropTypes.oneOfType([PropTypes.array, PropTypes.string, PropTypes.object, PropTypes.func])\n} : void 0;","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\n/* import type {\n ElementType,\n StatelessFunctionalComponent,\n AbstractComponent\n} from 'react' */\n/*\nexport type Interpolations = Array<any>\n\nexport type StyledElementType<Props> =\n | string\n | AbstractComponent<{ ...Props, className: string }, mixed>\n\nexport type StyledOptions = {\n label?: string,\n shouldForwardProp?: string => boolean,\n target?: string\n}\n\nexport type StyledComponent<Props> = StatelessFunctionalComponent<Props> & {\n defaultProps: any,\n toString: () => string,\n withComponent: (\n nextTag: StyledElementType<Props>,\n nextOptions?: StyledOptions\n ) => StyledComponent<Props>\n}\n\nexport type PrivateStyledComponent<Props> = StyledComponent<Props> & {\n __emotion_real: StyledComponent<Props>,\n __emotion_base: any,\n __emotion_styles: any,\n __emotion_forwardProp: any\n}\n*/\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key\n/*: string */\n) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag\n/*: ElementType */\n) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag\n/*: PrivateStyledComponent<any> */\n, options\n/*: StyledOptions | void */\n, isReal\n/*: boolean */\n) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName\n /*: string */\n ) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n/*\nexport type CreateStyledComponent = <Props>(\n ...args: Interpolations\n) => StyledComponent<Props>\n\nexport type CreateStyled = {\n <Props>(\n tag: StyledElementType<Props>,\n options?: StyledOptions\n ): (...args: Interpolations) => StyledComponent<Props>,\n [key: string]: CreateStyledComponent,\n bind: () => CreateStyled\n}\n*/\n\nvar isDevelopment = false;\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar createStyled\n/*: CreateStyled */\n= function createStyled\n/*: CreateStyled */\n(tag\n/*: any */\n, options\n/* ?: StyledOptions */\n) {\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n /* return function<Props>(): PrivateStyledComponent<Props> { */\n\n return function () {\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n styles.push.apply(styles, args);\n } else {\n\n styles.push(args[0][0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n\n styles.push(args[i], args[0][i]);\n }\n }\n\n var Styled\n /*: PrivateStyledComponent<Props> */\n = withEmotionCache(function (props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = React.useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if (finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === 'string'\n }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && isDevelopment) {\n return 'NO_COMPONENT_SELECTOR';\n }\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag\n /*: StyledElementType<Props> */\n , nextOptions\n /* ?: StyledOptions */\n ) {\n return createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n })).apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport { createStyled as default };\n","import createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport 'react';\nimport '@emotion/is-prop-valid';\nimport '@emotion/react';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nvar newStyled = createStyled.bind();\ntags.forEach(function (tagName) {\n newStyled[tagName] = newStyled(tagName);\n});\n\nexport { newStyled as default };\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\n\n// prepend: true moves MUI styles to the top of the <head> so they're loaded first.\n// It allows developers to easily override MUI styles with other styling solutions, like CSS modules.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nlet cache;\nif (typeof document === 'object') {\n cache = createCache({\n key: 'css',\n prepend: true\n });\n}\nexport default function StyledEngineProvider(props) {\n const {\n injectFirst,\n children\n } = props;\n return injectFirst && cache ? /*#__PURE__*/_jsx(CacheProvider, {\n value: cache,\n children: children\n }) : children;\n}\nprocess.env.NODE_ENV !== \"production\" ? StyledEngineProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n /**\n * By default, the styles are injected last in the <head> element of the page.\n * As a result, they gain more specificity than any other style sheet.\n * If you want to override MUI's styles, set this prop.\n */\n injectFirst: PropTypes.bool\n} : void 0;","/**\n * @mui/styled-engine v5.16.6\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use client';\n\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nexport default function styled(tag, options) {\n const stylesFactory = emStyled(tag, options);\n if (process.env.NODE_ENV !== 'production') {\n return (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n return stylesFactory(...styles);\n };\n }\n return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const internal_processStyles = (tag, processor) => {\n // Emotion attaches all the styles as `__emotion_styles`.\n // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n if (Array.isArray(tag.__emotion_styles)) {\n tag.__emotion_styles = processor(tag.__emotion_styles);\n }\n};\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from './StyledEngineProvider';\nexport { default as GlobalStyles } from './GlobalStyles';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.alpha = alpha;\nexports.blend = blend;\nexports.colorChannel = void 0;\nexports.darken = darken;\nexports.decomposeColor = decomposeColor;\nexports.emphasize = emphasize;\nexports.getContrastRatio = getContrastRatio;\nexports.getLuminance = getLuminance;\nexports.hexToRgb = hexToRgb;\nexports.hslToRgb = hslToRgb;\nexports.lighten = lighten;\nexports.private_safeAlpha = private_safeAlpha;\nexports.private_safeColorChannel = void 0;\nexports.private_safeDarken = private_safeDarken;\nexports.private_safeEmphasize = private_safeEmphasize;\nexports.private_safeLighten = private_safeLighten;\nexports.recomposeColor = recomposeColor;\nexports.rgbToHex = rgbToHex;\nvar _formatMuiErrorMessage2 = _interopRequireDefault(require(\"@mui/utils/formatMuiErrorMessage\"));\nvar _clamp = _interopRequireDefault(require(\"@mui/utils/clamp\"));\n/* eslint-disable @typescript-eslint/naming-convention */\n\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return (0, _clamp.default)(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nfunction hexToRgb(color) {\n color = color.slice(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nfunction decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : (0, _formatMuiErrorMessage2.default)(9, color));\n }\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].slice(1);\n }\n if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : (0, _formatMuiErrorMessage2.default)(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nconst colorChannel = color => {\n const decomposedColor = decomposeColor(color);\n return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexports.colorChannel = colorChannel;\nconst private_safeColorChannel = (color, warning) => {\n try {\n return colorChannel(color);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexports.private_safeColorChannel = private_safeColorChannel;\nfunction recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.indexOf('color') !== -1) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nfunction rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nfunction hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nfunction getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nfunction getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction alpha(color, value) {\n color = decomposeColor(color);\n value = clampWrapper(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n return recomposeColor(color);\n}\nfunction private_safeAlpha(color, value, warning) {\n try {\n return alpha(color, value);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\nfunction private_safeDarken(color, coefficient, warning) {\n try {\n return darken(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\nfunction private_safeLighten(color, coefficient, warning) {\n try {\n return lighten(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nfunction private_safeEmphasize(color, coefficient, warning) {\n try {\n return emphasize(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nfunction blend(background, overlay, opacity, gamma = 1.0) {\n const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n const backgroundColor = decomposeColor(background);\n const overlayColor = decomposeColor(overlay);\n const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n return recomposeColor({\n type: 'rgb',\n values: rgb\n });\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createStyled;\nexports.shouldForwardProp = shouldForwardProp;\nexports.systemDefaultTheme = void 0;\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\nvar _styledEngine = _interopRequireWildcard(require(\"@mui/styled-engine\"));\nvar _deepmerge = require(\"@mui/utils/deepmerge\");\nvar _capitalize = _interopRequireDefault(require(\"@mui/utils/capitalize\"));\nvar _getDisplayName = _interopRequireDefault(require(\"@mui/utils/getDisplayName\"));\nvar _createTheme = _interopRequireDefault(require(\"./createTheme\"));\nvar _styleFunctionSx = _interopRequireDefault(require(\"./styleFunctionSx\"));\nconst _excluded = [\"ownerState\"],\n _excluded2 = [\"variants\"],\n _excluded3 = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n return typeof tag === 'string' &&\n // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96;\n}\n\n// Update /system/styled/#api in case if this changes\nfunction shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nconst systemDefaultTheme = exports.systemDefaultTheme = (0, _createTheme.default)();\nconst lowercaseFirstLetter = string => {\n if (!string) {\n return string;\n }\n return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n defaultTheme,\n theme,\n themeId\n}) {\n return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nfunction defaultOverridesResolver(slot) {\n if (!slot) {\n return null;\n }\n return (props, styles) => styles[slot];\n}\nfunction processStyleArg(callableStyle, _ref) {\n let {\n ownerState\n } = _ref,\n props = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);\n const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle((0, _extends2.default)({\n ownerState\n }, props)) : callableStyle;\n if (Array.isArray(resolvedStylesArg)) {\n return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, (0, _extends2.default)({\n ownerState\n }, props)));\n }\n if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {\n const {\n variants = []\n } = resolvedStylesArg,\n otherStyles = (0, _objectWithoutPropertiesLoose2.default)(resolvedStylesArg, _excluded2);\n let result = otherStyles;\n variants.forEach(variant => {\n let isMatch = true;\n if (typeof variant.props === 'function') {\n isMatch = variant.props((0, _extends2.default)({\n ownerState\n }, props, ownerState));\n } else {\n Object.keys(variant.props).forEach(key => {\n if ((ownerState == null ? void 0 : ownerState[key]) !== variant.props[key] && props[key] !== variant.props[key]) {\n isMatch = false;\n }\n });\n }\n if (isMatch) {\n if (!Array.isArray(result)) {\n result = [result];\n }\n result.push(typeof variant.style === 'function' ? variant.style((0, _extends2.default)({\n ownerState\n }, props, ownerState)) : variant.style);\n }\n });\n return result;\n }\n return resolvedStylesArg;\n}\nfunction createStyled(input = {}) {\n const {\n themeId,\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n const systemSx = props => {\n return (0, _styleFunctionSx.default)((0, _extends2.default)({}, props, {\n theme: resolveTheme((0, _extends2.default)({}, props, {\n defaultTheme,\n themeId\n }))\n }));\n };\n systemSx.__mui_systemSx = true;\n return (tag, inputOptions = {}) => {\n // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n (0, _styledEngine.internal_processStyles)(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))\n } = inputOptions,\n options = (0, _objectWithoutPropertiesLoose2.default)(inputOptions, _excluded3);\n\n // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n const skipSx = inputSkipSx || false;\n let label;\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n let shouldForwardPropOption = shouldForwardProp;\n\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n if (componentSlot === 'Root' || componentSlot === 'root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n } else if (isStringTag(tag)) {\n // for string (html) tag, preserve the behavior in emotion & styled-components.\n shouldForwardPropOption = undefined;\n }\n const defaultStyledResolver = (0, _styledEngine.default)(tag, (0, _extends2.default)({\n shouldForwardProp: shouldForwardPropOption,\n label\n }, options));\n const transformStyleArg = stylesArg => {\n // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || (0, _deepmerge.isPlainObject)(stylesArg)) {\n return props => processStyleArg(stylesArg, (0, _extends2.default)({}, props, {\n theme: resolveTheme({\n theme: props.theme,\n defaultTheme,\n themeId\n })\n }));\n }\n return stylesArg;\n };\n const muiStyledResolver = (styleArg, ...expressions) => {\n let transformedStyleArg = transformStyleArg(styleArg);\n const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n if (componentName && overridesResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = resolveTheme((0, _extends2.default)({}, props, {\n defaultTheme,\n themeId\n }));\n if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n return null;\n }\n const styleOverrides = theme.components[componentName].styleOverrides;\n const resolvedStyleOverrides = {};\n // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, (0, _extends2.default)({}, props, {\n theme\n }));\n });\n return overridesResolver(props, resolvedStyleOverrides);\n });\n }\n if (componentName && !skipVariantsResolver) {\n expressionsWithDefaultTheme.push(props => {\n var _theme$components;\n const theme = resolveTheme((0, _extends2.default)({}, props, {\n defaultTheme,\n themeId\n }));\n const themeVariants = theme == null || (_theme$components = theme.components) == null || (_theme$components = _theme$components[componentName]) == null ? void 0 : _theme$components.variants;\n return processStyleArg({\n variants: themeVariants\n }, (0, _extends2.default)({}, props, {\n theme\n }));\n });\n }\n if (!skipSx) {\n expressionsWithDefaultTheme.push(systemSx);\n }\n const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n const placeholders = new Array(numOfCustomFnsApplied).fill('');\n // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n transformedStyleArg = [...styleArg, ...placeholders];\n transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n }\n const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n let displayName;\n if (componentName) {\n displayName = `${componentName}${(0, _capitalize.default)(componentSlot || '')}`;\n }\n if (displayName === undefined) {\n displayName = `Styled(${(0, _getDisplayName.default)(tag)})`;\n }\n Component.displayName = displayName;\n }\n if (tag.muiName) {\n Component.muiName = tag.muiName;\n }\n return Component;\n };\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n return muiStyledResolver;\n };\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport resolveProps from '@mui/utils/resolveProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PropsContext = /*#__PURE__*/React.createContext(undefined);\nfunction DefaultPropsProvider({\n value,\n children\n}) {\n return /*#__PURE__*/_jsx(PropsContext.Provider, {\n value: value,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────â”\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n value: PropTypes.object\n} : void 0;\nfunction getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name]) {\n return props;\n }\n const config = theme.components[name];\n if (config.defaultProps) {\n // compatible with v5 signature\n return resolveProps(config.defaultProps, props);\n }\n if (!config.styleOverrides && !config.variants) {\n // v6 signature, no property 'defaultProps'\n return resolveProps(config, props);\n }\n return props;\n}\nexport function useDefaultProps({\n props,\n name\n}) {\n const ctx = React.useContext(PropsContext);\n return getThemeProps({\n props,\n name,\n theme: {\n components: ctx\n }\n });\n}\nexport default DefaultPropsProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RtlContext = /*#__PURE__*/React.createContext();\nfunction RtlProvider(_ref) {\n let {\n value\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n return /*#__PURE__*/_jsx(RtlContext.Provider, _extends({\n value: value != null ? value : true\n }, props));\n}\nprocess.env.NODE_ENV !== \"production\" ? RtlProvider.propTypes = {\n children: PropTypes.node,\n value: PropTypes.bool\n} : void 0;\nexport const useRtl = () => {\n const value = React.useContext(RtlContext);\n return value != null ? value : false;\n};\nexport default RtlProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from './merge';\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n // key is breakpoint\n if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme\n }, props[key]));\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n var _breakpointsInput$key;\n const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/experimental-api/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n *\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * <Box sx={theme => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars && typeof theme.getColorSchemeSelector === 'function') {\n // If CssVarsProvider is used as a provider,\n // returns '* :where([data-mui-color-scheme=\"light|dark\"]) &'\n const selector = theme.getColorSchemeSelector(key).replace(/(\\[[^\\]]+\\])/, '*:where($1)');\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return _extends({}, acc, {\n [obj.key]: obj.val\n });\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5\n } = breakpoints,\n other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return _extends({\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit\n }, other);\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport styleFunctionSx from '../styleFunctionSx/styleFunctionSx';\nimport defaultSxConfig from '../styleFunctionSx/defaultSxConfig';\nimport applyStyles from './applyStyles';\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: _extends({\n mode: 'light'\n }, paletteInput),\n spacing,\n shape: _extends({}, shape, shapeInput)\n }, other);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","import { createUnarySpacing } from '../spacing';\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n\n // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n // Smaller components, such as icons, can align to a 4dp grid.\n // https://m2.material.io/design/layout/understanding-layout.html\n const transform = createUnarySpacing({\n spacing: spacingInput\n });\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n var _getPath;\n const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue;\n if (typeof themeSpacing === 'number') {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n }\n }\n return themeSpacing * abs;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n return themeSpacing[abs];\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n const abs = Math.abs(propValue);\n const transformed = transformer(abs);\n if (propValue >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (keys.indexOf(prop) === -1) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","import merge from './merge';\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n var _props$theme, _props$theme2;\n const breakpoint = ((_props$theme = props.theme) == null || (_props$theme = _props$theme.breakpoints) == null || (_props$theme = _props$theme.values) == null ? void 0 : _props$theme[propValue]) || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (((_props$theme2 = props.theme) == null || (_props$theme2 = _props$theme2.breakpoints) == null ? void 0 : _props$theme2.unit) !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from '../spacing';\nimport { borderRadius, borderTransform } from '../borders';\nimport { gap, rowGap, columnGap } from '../cssGrid';\nimport { paletteTransform } from '../palette';\nimport { maxWidth, sizingTransform } from '../sizing';\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"sx\"];\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport defaultSxConfig from './defaultSxConfig';\nconst splitProps = props => {\n var _props$theme$unstable, _props$theme;\n const result = {\n systemProps: {},\n otherProps: {}\n };\n const config = (_props$theme$unstable = props == null || (_props$theme = props.theme) == null ? void 0 : _props$theme.unstable_sxConfig) != null ? _props$theme$unstable : defaultSxConfig;\n Object.keys(props).forEach(prop => {\n if (config[prop]) {\n result.systemProps[prop] = props[prop];\n } else {\n result.otherProps[prop] = props[prop];\n }\n });\n return result;\n};\nexport default function extendSxProp(props) {\n const {\n sx: inSx\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n systemProps,\n otherProps\n } = splitProps(other);\n let finalSx;\n if (Array.isArray(inSx)) {\n finalSx = [systemProps, ...inSx];\n } else if (typeof inSx === 'function') {\n finalSx = (...args) => {\n const result = inSx(...args);\n if (!isPlainObject(result)) {\n return systemProps;\n }\n return _extends({}, systemProps, result);\n };\n } else {\n finalSx = _extends({}, systemProps, inSx);\n }\n return _extends({}, otherProps, {\n sx: finalSx\n });\n}","import capitalize from '@mui/utils/capitalize';\nimport merge from '../merge';\nimport { getPath, getStyleValue as getValue } from '../style';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\nimport defaultSxConfig from './defaultSxConfig';\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n var _theme$unstable_sxCon;\n const {\n sx,\n theme = {}\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n return removeUnusedBreakpoints(breakpointsKeys, css);\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ownerState\"],\n _excluded2 = [\"variants\"],\n _excluded3 = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nimport styledEngineStyled, { internal_processStyles as processStyles } from '@mui/styled-engine';\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport capitalize from '@mui/utils/capitalize';\nimport getDisplayName from '@mui/utils/getDisplayName';\nimport createTheme from './createTheme';\nimport styleFunctionSx from './styleFunctionSx';\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n return typeof tag === 'string' &&\n // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96;\n}\n\n// Update /system/styled/#api in case if this changes\nexport function shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport const systemDefaultTheme = createTheme();\nconst lowercaseFirstLetter = string => {\n if (!string) {\n return string;\n }\n return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n defaultTheme,\n theme,\n themeId\n}) {\n return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nfunction defaultOverridesResolver(slot) {\n if (!slot) {\n return null;\n }\n return (props, styles) => styles[slot];\n}\nfunction processStyleArg(callableStyle, _ref) {\n let {\n ownerState\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle(_extends({\n ownerState\n }, props)) : callableStyle;\n if (Array.isArray(resolvedStylesArg)) {\n return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, _extends({\n ownerState\n }, props)));\n }\n if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {\n const {\n variants = []\n } = resolvedStylesArg,\n otherStyles = _objectWithoutPropertiesLoose(resolvedStylesArg, _excluded2);\n let result = otherStyles;\n variants.forEach(variant => {\n let isMatch = true;\n if (typeof variant.props === 'function') {\n isMatch = variant.props(_extends({\n ownerState\n }, props, ownerState));\n } else {\n Object.keys(variant.props).forEach(key => {\n if ((ownerState == null ? void 0 : ownerState[key]) !== variant.props[key] && props[key] !== variant.props[key]) {\n isMatch = false;\n }\n });\n }\n if (isMatch) {\n if (!Array.isArray(result)) {\n result = [result];\n }\n result.push(typeof variant.style === 'function' ? variant.style(_extends({\n ownerState\n }, props, ownerState)) : variant.style);\n }\n });\n return result;\n }\n return resolvedStylesArg;\n}\nexport default function createStyled(input = {}) {\n const {\n themeId,\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n const systemSx = props => {\n return styleFunctionSx(_extends({}, props, {\n theme: resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }))\n }));\n };\n systemSx.__mui_systemSx = true;\n return (tag, inputOptions = {}) => {\n // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n processStyles(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))\n } = inputOptions,\n options = _objectWithoutPropertiesLoose(inputOptions, _excluded3);\n\n // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n const skipSx = inputSkipSx || false;\n let label;\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n let shouldForwardPropOption = shouldForwardProp;\n\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n if (componentSlot === 'Root' || componentSlot === 'root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n } else if (isStringTag(tag)) {\n // for string (html) tag, preserve the behavior in emotion & styled-components.\n shouldForwardPropOption = undefined;\n }\n const defaultStyledResolver = styledEngineStyled(tag, _extends({\n shouldForwardProp: shouldForwardPropOption,\n label\n }, options));\n const transformStyleArg = stylesArg => {\n // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || isPlainObject(stylesArg)) {\n return props => processStyleArg(stylesArg, _extends({}, props, {\n theme: resolveTheme({\n theme: props.theme,\n defaultTheme,\n themeId\n })\n }));\n }\n return stylesArg;\n };\n const muiStyledResolver = (styleArg, ...expressions) => {\n let transformedStyleArg = transformStyleArg(styleArg);\n const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n if (componentName && overridesResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }));\n if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n return null;\n }\n const styleOverrides = theme.components[componentName].styleOverrides;\n const resolvedStyleOverrides = {};\n // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, _extends({}, props, {\n theme\n }));\n });\n return overridesResolver(props, resolvedStyleOverrides);\n });\n }\n if (componentName && !skipVariantsResolver) {\n expressionsWithDefaultTheme.push(props => {\n var _theme$components;\n const theme = resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }));\n const themeVariants = theme == null || (_theme$components = theme.components) == null || (_theme$components = _theme$components[componentName]) == null ? void 0 : _theme$components.variants;\n return processStyleArg({\n variants: themeVariants\n }, _extends({}, props, {\n theme\n }));\n });\n }\n if (!skipSx) {\n expressionsWithDefaultTheme.push(systemSx);\n }\n const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n const placeholders = new Array(numOfCustomFnsApplied).fill('');\n // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n transformedStyleArg = [...styleArg, ...placeholders];\n transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n }\n const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n let displayName;\n if (componentName) {\n displayName = `${componentName}${capitalize(componentSlot || '')}`;\n }\n if (displayName === undefined) {\n displayName = `Styled(${getDisplayName(tag)})`;\n }\n Component.displayName = displayName;\n }\n if (tag.muiName) {\n Component.muiName = tag.muiName;\n }\n return Component;\n };\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n return muiStyledResolver;\n };\n}","import createStyled from './createStyled';\nconst styled = createStyled();\nexport default styled;","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport { getThemeProps } from '../useThemeProps';\nimport useTheme from '../useThemeWithoutDefault';\n\n/**\n * @deprecated Not used internally. Use `MediaQueryListEvent` from lib.dom.d.ts instead.\n */\n\n/**\n * @deprecated Not used internally. Use `MediaQueryList` from lib.dom.d.ts instead.\n */\n\n/**\n * @deprecated Not used internally. Use `(event: MediaQueryListEvent) => void` instead.\n */\n\nfunction useMediaQueryOld(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr) {\n const [match, setMatch] = React.useState(() => {\n if (noSsr && matchMedia) {\n return matchMedia(query).matches;\n }\n if (ssrMatchMedia) {\n return ssrMatchMedia(query).matches;\n }\n\n // Once the component is mounted, we rely on the\n // event listeners to return the correct matches value.\n return defaultMatches;\n });\n useEnhancedEffect(() => {\n let active = true;\n if (!matchMedia) {\n return undefined;\n }\n const queryList = matchMedia(query);\n const updateMatch = () => {\n // Workaround Safari wrong implementation of matchMedia\n // TODO can we remove it?\n // https://github.com/mui/material-ui/pull/17315#issuecomment-528286677\n if (active) {\n setMatch(queryList.matches);\n }\n };\n updateMatch();\n // TODO: Use `addEventListener` once support for Safari < 14 is dropped\n queryList.addListener(updateMatch);\n return () => {\n active = false;\n queryList.removeListener(updateMatch);\n };\n }, [query, matchMedia]);\n return match;\n}\n\n// eslint-disable-next-line no-useless-concat -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseSyncExternalStore = React['useSyncExternalStore' + ''];\nfunction useMediaQueryNew(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr) {\n const getDefaultSnapshot = React.useCallback(() => defaultMatches, [defaultMatches]);\n const getServerSnapshot = React.useMemo(() => {\n if (noSsr && matchMedia) {\n return () => matchMedia(query).matches;\n }\n if (ssrMatchMedia !== null) {\n const {\n matches\n } = ssrMatchMedia(query);\n return () => matches;\n }\n return getDefaultSnapshot;\n }, [getDefaultSnapshot, query, ssrMatchMedia, noSsr, matchMedia]);\n const [getSnapshot, subscribe] = React.useMemo(() => {\n if (matchMedia === null) {\n return [getDefaultSnapshot, () => () => {}];\n }\n const mediaQueryList = matchMedia(query);\n return [() => mediaQueryList.matches, notify => {\n // TODO: Use `addEventListener` once support for Safari < 14 is dropped\n mediaQueryList.addListener(notify);\n return () => {\n mediaQueryList.removeListener(notify);\n };\n }];\n }, [getDefaultSnapshot, matchMedia, query]);\n const match = maybeReactUseSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n return match;\n}\nexport default function useMediaQuery(queryInput, options = {}) {\n const theme = useTheme();\n // Wait for jsdom to support the match media feature.\n // All the browsers MUI support have this built-in.\n // This defensive check is here for simplicity.\n // Most of the time, the match media logic isn't central to people tests.\n const supportMatchMedia = typeof window !== 'undefined' && typeof window.matchMedia !== 'undefined';\n const {\n defaultMatches = false,\n matchMedia = supportMatchMedia ? window.matchMedia : null,\n ssrMatchMedia = null,\n noSsr = false\n } = getThemeProps({\n name: 'MuiUseMediaQuery',\n props: options,\n theme\n });\n if (process.env.NODE_ENV !== 'production') {\n if (typeof queryInput === 'function' && theme === null) {\n console.error(['MUI: The `query` argument provided is invalid.', 'You are providing a function without a theme in the context.', 'One of the parent elements needs to use a ThemeProvider.'].join('\\n'));\n }\n }\n let query = typeof queryInput === 'function' ? queryInput(theme) : queryInput;\n query = query.replace(/^@media( ?)/m, '');\n\n // TODO: Drop `useMediaQueryOld` and use `use-sync-external-store` shim in `useMediaQueryNew` once the package is stable\n const useMediaQueryImplementation = maybeReactUseSyncExternalStore !== undefined ? useMediaQueryNew : useMediaQueryOld;\n const match = useMediaQueryImplementation(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue({\n query,\n match\n });\n }\n return match;\n}","'use client';\n\nimport createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","import resolveProps from '@mui/utils/resolveProps';\nexport default function getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n return props;\n }\n return resolveProps(theme.components[name].defaultProps, props);\n}","'use client';\n\nimport getThemeProps from './getThemeProps';\nimport useTheme from '../useTheme';\nexport default function useThemeProps({\n props,\n name,\n defaultTheme,\n themeId\n}) {\n let theme = useTheme(defaultTheme);\n if (themeId) {\n theme = theme[themeId] || theme;\n }\n const mergedProps = getThemeProps({\n theme,\n name,\n props\n });\n return mergedProps;\n}","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","export default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n Object.keys(slots).forEach(\n // `Object.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n slot => {\n output[slot] = slots[slot].reduce((acc, key) => {\n if (key) {\n const utilityClass = getUtilityClass(key);\n if (utilityClass !== '') {\n acc.push(utilityClass);\n }\n if (classes && classes[key]) {\n acc.push(classes[key]);\n }\n }\n return acc;\n }, []).join(' ');\n });\n return output;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (!isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? _extends({}, target) : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n if (isPlainObject(source[key]) &&\n // Avoid prototype pollution\n Object.prototype.hasOwnProperty.call(target, key) && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/internal-babel-macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe if we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n /* eslint-disable prefer-template */\n let url = 'https://mui.com/production-error/?code=' + code;\n for (let i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","import ClassNameGenerator from '../ClassNameGenerator';\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","import { ForwardRef, Memo } from 'react-is';\n\n// Simplified polyfill for IE11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\nconst fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nexport function getFunctionName(fn) {\n const match = `${fn}`.match(fnNameMatchRegex);\n const name = match && match[1];\n return name || '';\n}\nfunction getFunctionComponentName(Component, fallback = '') {\n return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\nfunction getWrappedName(outerType, innerType, wrapperName) {\n const functionName = getFunctionComponentName(innerType);\n return outerType.displayName || (functionName !== '' ? `${wrapperName}(${functionName})` : wrapperName);\n}\n\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE11 support\n */\nexport default function getDisplayName(Component) {\n if (Component == null) {\n return undefined;\n }\n if (typeof Component === 'string') {\n return Component;\n }\n if (typeof Component === 'function') {\n return getFunctionComponentName(Component, 'Component');\n }\n\n // TypeScript can't have components as objects but they exist in the form of `memo` or `Suspense`\n if (typeof Component === 'object') {\n switch (Component.$$typeof) {\n case ForwardRef:\n return getWrappedName(Component, Component.render, 'ForwardRef');\n case Memo:\n return getWrappedName(Component, Component.type, 'memo');\n default:\n return undefined;\n }\n }\n return undefined;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = _extends({}, props);\n Object.keys(defaultProps).forEach(propName => {\n if (propName.toString().match(/^(components|slots)$/)) {\n output[propName] = _extends({}, defaultProps[propName], output[propName]);\n } else if (propName.toString().match(/^(componentsProps|slotProps)$/)) {\n const defaultSlotProps = defaultProps[propName] || {};\n const slotProps = props[propName];\n output[propName] = {};\n if (!slotProps || !Object.keys(slotProps)) {\n // Reduce the iteration if the slot props is empty\n output[propName] = defaultSlotProps;\n } else if (!defaultSlotProps || !Object.keys(defaultSlotProps)) {\n // Reduce the iteration if the default slot props is empty\n output[propName] = slotProps;\n } else {\n output[propName] = _extends({}, slotProps);\n Object.keys(defaultSlotProps).forEach(slotPropName => {\n output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n });\n }\n } else if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n });\n return output;\n}","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '../useEnhancedEffect';\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nimport setRef from '../setRef';\nexport default function useForkRef(...refs) {\n /**\n * This will create a new function if the refs passed to this hook change and are all defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return instance => {\n refs.forEach(ref => {\n setRef(ref, instance);\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from '../useLazyRef/useLazyRef';\nimport useOnMount from '../useOnMount/useOnMount';\nexport class Timeout {\n constructor() {\n this.currentId = null;\n this.clear = () => {\n if (this.currentId !== null) {\n clearTimeout(this.currentId);\n this.currentId = null;\n }\n };\n this.disposeEffect = () => {\n return this.clear;\n };\n }\n static create() {\n return new Timeout();\n }\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(() => {\n this.currentId = null;\n fn();\n }, delay);\n }\n}\nexport default function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","const errors = {\n\t0: \"Illegal state\",\n\t1: \"Immer drafts cannot have computed properties\",\n\t2: \"This object has been frozen and should not be mutated\",\n\t3(data: any) {\n\t\treturn (\n\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\tdata\n\t\t)\n\t},\n\t4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t5: \"Immer forbids circular references\",\n\t6: \"The first or second argument to `produce` must be a function\",\n\t7: \"The third argument to `produce` must be a function or undefined\",\n\t8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t10: \"The given draft is already finalized\",\n\t11: \"Object.defineProperty() cannot be used on an Immer draft\",\n\t12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t13: \"Immer only supports deleting array indices\",\n\t14: \"Immer only supports setting array indices and the 'length' property\",\n\t15(path: string) {\n\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t},\n\t16: 'Sets cannot have \"replace\" patches.',\n\t17(op: string) {\n\t\treturn \"Unsupported patch operation: \" + op\n\t},\n\t18(plugin: string) {\n\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t},\n\t20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n\t21(thing: string) {\n\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t},\n\t22(thing: string) {\n\t\treturn `'current' expects a draft, got: ${thing}`\n\t},\n\t23(thing: string) {\n\t\treturn `'original' expects a draft, got: ${thing}`\n\t},\n\t24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n} as const\n\nexport function die(error: keyof typeof errors, ...args: any[]): never {\n\tif (__DEV__) {\n\t\tconst e = errors[error]\n\t\tconst msg = !e\n\t\t\t? \"unknown error nr: \" + error\n\t\t\t: typeof e === \"function\"\n\t\t\t? e.apply(null, args as any)\n\t\t\t: e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}${\n\t\t\targs.length ? \" \" + args.map(s => `'${s}'`).join(\",\") : \"\"\n\t\t}. Find the full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\thasSet,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\thasMap,\n\tArchtype,\n\tdie\n} from \"../internal\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor?.[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = Object.getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original<T>(value: T): T | undefined\nexport function original(value: Drafted<any>): any {\n\tif (!isDraft(value)) die(23, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/*#__PURE__*/\nexport const ownKeys: (target: AnyObject) => PropertyKey[] =\n\ttypeof Reflect !== \"undefined\" && Reflect.ownKeys\n\t\t? Reflect.ownKeys\n\t\t: typeof Object.getOwnPropertySymbols !== \"undefined\"\n\t\t? obj =>\n\t\t\t\tObject.getOwnPropertyNames(obj).concat(\n\t\t\t\t\tObject.getOwnPropertySymbols(obj) as any\n\t\t\t\t)\n\t\t: /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport const getOwnPropertyDescriptors =\n\tObject.getOwnPropertyDescriptors ||\n\tfunction getOwnPropertyDescriptors(target: any) {\n\t\t// Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n\t\tconst res: any = {}\n\t\townKeys(target).forEach(key => {\n\t\t\tres[key] = Object.getOwnPropertyDescriptor(target, key)\n\t\t})\n\t\treturn res\n\t}\n\nexport function each<T extends Objectish>(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any, enumerableOnly = false) {\n\tif (getArchtype(obj) === Archtype.Object) {\n\t\t;(enumerableOnly ? Object.keys : ownKeys)(obj).forEach(key => {\n\t\t\tif (!enumerableOnly || typeof key !== \"symbol\") iter(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): Archtype {\n\t/* istanbul ignore next */\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_ > 3\n\t\t\t? state.type_ - 4 // cause Object and Array map back from 4 and 5\n\t\t\t: (state.type_ as any) // others are the same\n\t\t: Array.isArray(thing)\n\t\t? Archtype.Array\n\t\t: isMap(thing)\n\t\t? Archtype.Map\n\t\t: isSet(thing)\n\t\t? Archtype.Set\n\t\t: Archtype.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === Archtype.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === Archtype.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === Archtype.Map) thing.set(propOrOldValue, value)\n\telse if (t === Archtype.Set) {\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn hasMap && target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn hasSet && target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any) {\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\tconst descriptors = getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze<T>(obj: T, deep?: boolean): T\nexport function freeze<T>(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (key, value) => freeze(value, true), true)\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\tif (obj == null || typeof obj !== \"object\") return true\n\t// See #600, IE dies on non-objects in Object.isFrozen\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tImmerScope,\n\tDrafted,\n\tAnyObject,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tProxyType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\tbase: any,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_<T>(draft: T, patches: Patch[]): T\n\t}\n\tES5?: {\n\t\twillFinalizeES5_(scope: ImmerScope, result: any, isReplaced: boolean): void\n\t\tcreateES5Proxy_<T>(\n\t\t\tbase: T,\n\t\t\tparent?: ImmerState\n\t\t): Drafted<T, ES5ObjectState | ES5ArrayState>\n\t\thasChanges_(state: ES5ArrayState | ES5ObjectState): boolean\n\t}\n\tMapSet?: {\n\t\tproxyMap_<T extends AnyMap>(target: T, parent?: ImmerState): T\n\t\tproxySet_<T extends AnySet>(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin<K extends keyof Plugins>(\n\tpluginKey: K\n): Exclude<Plugins[K], undefined> {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(18, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin<K extends keyof Plugins>(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n\n/** ES5 Plugin */\n\ninterface ES5BaseState extends ImmerBaseState {\n\tassigned_: {[key: string]: any}\n\tparent_?: ImmerState\n\trevoked_: boolean\n}\n\nexport interface ES5ObjectState extends ES5BaseState {\n\ttype_: ProxyType.ES5Object\n\tdraft_: Drafted<AnyObject, ES5ObjectState>\n\tbase_: AnyObject\n\tcopy_: AnyObject | null\n}\n\nexport interface ES5ArrayState extends ES5BaseState {\n\ttype_: ProxyType.ES5Array\n\tdraft_: Drafted<AnyObject, ES5ArrayState>\n\tbase_: any\n\tcopy_: any\n}\n\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ProxyType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map<any, boolean> | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted<AnyMap, MapState>\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ProxyType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map<any, Drafted> // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted<AnySet, SetState>\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tProxyType,\n\tgetPlugin\n} from \"../internal\"\nimport {die} from \"../utils/errors\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\tif (__DEV__ && !currentScope) die(0)\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (\n\t\tstate.type_ === ProxyType.ProxyObject ||\n\t\tstate.type_ === ProxyType.ProxyArray\n\t)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tProxyType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tshallowCopy\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (!scope.immer_.useProxies_)\n\t\tgetPlugin(\"ES5\").willFinalizeES5_(scope, result, isReplaced)\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumerable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result =\n\t\t\t// For ES5, create a good copy from the draft first, with added keys and without deleted keys.\n\t\t\tstate.type_ === ProxyType.ES5Object || state.type_ === ProxyType.ES5Array\n\t\t\t\t? (state.copy_ = shallowCopy(state.draft_))\n\t\t\t\t: state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ProxyType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath,\n\ttargetIsSet?: boolean\n) {\n\tif (__DEV__ && childValue === targetObject) die(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ProxyType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude<ImmerState, SetState>).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tProxyType\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyObject\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted<AnyObject, ProxyObjectState>\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyArray\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted<AnyArray, ProxyArrayState>\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy<T extends Objectish>(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted<T, ProxyState> {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ProxyType.ProxyArray : (ProxyType.ProxyObject as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler<object | Array<any>> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler<ProxyState> = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(\n\t\t\t\tstate.scope_.immer_,\n\t\t\t\tvalue,\n\t\t\t\tstate\n\t\t\t))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\t// @ts-ignore\n\t\tif (state.copy_) delete state.copy_[prop]\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ProxyType.ProxyArray || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn Object.getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (__DEV__ && isNaN(parseInt(prop as any))) die(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (__DEV__ && prop !== \"length\" && isNaN(parseInt(prop as any))) die(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = Object.getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = Object.getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {base_: any; copy_: any}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(state.base_)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\thasProxies,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tuseProxies_: boolean = hasProxies\n\n\tautoFreeze_: boolean = true\n\n\tconstructor(config?: {useProxies?: boolean; autoFreeze?: boolean}) {\n\t\tif (typeof config?.useProxies === \"boolean\")\n\t\t\tthis.setUseProxies(config!.useProxies)\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(this, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\t\treturn result.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\t\t\t\treturn processResult(result, scope)\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\trevokeScope(scope)\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(21, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): any => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => base(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\n\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\treturn result.then(nextState => [nextState, patches!, inversePatches!])\n\t\t}\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft<T extends Objectish>(base: T): Draft<T> {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(this, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft<D extends Draft<any>>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft<infer T> ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (__DEV__) {\n\t\t\tif (!state || !state.isManual_) die(9)\n\t\t\tif (state.finalized_) die(10)\n\t\t}\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n\t * always faster than using ES5 proxies.\n\t *\n\t * By default, feature detection is used, so calling this is rarely necessary.\n\t */\n\tsetUseProxies(value: boolean) {\n\t\tif (value && !hasProxies) {\n\t\t\tdie(20)\n\t\t}\n\t\tthis.useProxies_ = value\n\t}\n\n\tapplyPatches<T extends Objectish>(base: T, patches: Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy<T extends Objectish>(\n\timmer: Immer,\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted<T, ImmerState> {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: immer.useProxies_\n\t\t? createProxyProxy(value, parent)\n\t\t: getPlugin(\"ES5\").createES5Proxy_(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tget,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tArchtype,\n\tgetArchtype,\n\tgetPlugin\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current<T>(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(22, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tconst archType = getArchtype(value)\n\tif (state) {\n\t\tif (\n\t\t\t!state.modified_ &&\n\t\t\t(state.type_ < 4 || !getPlugin(\"ES5\").hasChanges_(state as any))\n\t\t)\n\t\t\treturn state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = copyHelper(value, archType)\n\t\tstate.finalized_ = false\n\t} else {\n\t\tcopy = copyHelper(value, archType)\n\t}\n\n\teach(copy, (key, childValue) => {\n\t\tif (state && get(state.base_, key) === childValue) return // no need to copy or search in something that didn't change\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\t// In the future, we might consider freezing here, based on the current settings\n\treturn archType === Archtype.Set ? new Set(copy) : copy\n}\n\nfunction copyHelper(value: any, archType: number): any {\n\t// creates a shallow copy, even if it is a map or set\n\tswitch (archType) {\n\t\tcase Archtype.Map:\n\t\t\treturn new Map(value)\n\t\tcase Archtype.Set:\n\t\t\t// Set will be cloned as array temporarily, so that we can replace individual items\n\t\t\treturn Array.from(value)\n\t}\n\treturn shallowCopy(value)\n}\n","import {\n\tImmerState,\n\tDrafted,\n\tES5ArrayState,\n\tES5ObjectState,\n\teach,\n\thas,\n\tisDraft,\n\tlatest,\n\tDRAFT_STATE,\n\tis,\n\tloadPlugin,\n\tImmerScope,\n\tProxyType,\n\tgetCurrentScope,\n\tdie,\n\tmarkChanged,\n\tobjectTraps,\n\townKeys,\n\tgetOwnPropertyDescriptors\n} from \"../internal\"\n\ntype ES5State = ES5ArrayState | ES5ObjectState\n\nexport function enableES5() {\n\tfunction willFinalizeES5_(\n\t\tscope: ImmerScope,\n\t\tresult: any,\n\t\tisReplaced: boolean\n\t) {\n\t\tif (!isReplaced) {\n\t\t\tif (scope.patches_) {\n\t\t\t\tmarkChangesRecursively(scope.drafts_![0])\n\t\t\t}\n\t\t\t// This is faster when we don't care about which attributes changed.\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t\t// When a child draft is returned, look for changes.\n\t\telse if (\n\t\t\tisDraft(result) &&\n\t\t\t(result[DRAFT_STATE] as ES5State).scope_ === scope\n\t\t) {\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t}\n\n\tfunction createES5Draft(isArray: boolean, base: any) {\n\t\tif (isArray) {\n\t\t\tconst draft = new Array(base.length)\n\t\t\tfor (let i = 0; i < base.length; i++)\n\t\t\t\tObject.defineProperty(draft, \"\" + i, proxyProperty(i, true))\n\t\t\treturn draft\n\t\t} else {\n\t\t\tconst descriptors = getOwnPropertyDescriptors(base)\n\t\t\tdelete descriptors[DRAFT_STATE as any]\n\t\t\tconst keys = ownKeys(descriptors)\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst key: any = keys[i]\n\t\t\t\tdescriptors[key] = proxyProperty(\n\t\t\t\t\tkey,\n\t\t\t\t\tisArray || !!descriptors[key].enumerable\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n\t\t}\n\t}\n\n\tfunction createES5Proxy_<T>(\n\t\tbase: T,\n\t\tparent?: ImmerState\n\t): Drafted<T, ES5ObjectState | ES5ArrayState> {\n\t\tconst isArray = Array.isArray(base)\n\t\tconst draft = createES5Draft(isArray, base)\n\n\t\tconst state: ES5ObjectState | ES5ArrayState = {\n\t\t\ttype_: isArray ? ProxyType.ES5Array : (ProxyType.ES5Object as any),\n\t\t\tscope_: parent ? parent.scope_ : getCurrentScope(),\n\t\t\tmodified_: false,\n\t\t\tfinalized_: false,\n\t\t\tassigned_: {},\n\t\t\tparent_: parent,\n\t\t\t// base is the object we are drafting\n\t\t\tbase_: base,\n\t\t\t// draft is the draft object itself, that traps all reads and reads from either the base (if unmodified) or copy (if modified)\n\t\t\tdraft_: draft,\n\t\t\tcopy_: null,\n\t\t\trevoked_: false,\n\t\t\tisManual_: false\n\t\t}\n\n\t\tObject.defineProperty(draft, DRAFT_STATE, {\n\t\t\tvalue: state,\n\t\t\t// enumerable: false <- the default\n\t\t\twritable: true\n\t\t})\n\t\treturn draft\n\t}\n\n\t// property descriptors are recycled to make sure we don't create a get and set closure per property,\n\t// but share them all instead\n\tconst descriptors: {[prop: string]: PropertyDescriptor} = {}\n\n\tfunction proxyProperty(\n\t\tprop: string | number,\n\t\tenumerable: boolean\n\t): PropertyDescriptor {\n\t\tlet desc = descriptors[prop]\n\t\tif (desc) {\n\t\t\tdesc.enumerable = enumerable\n\t\t} else {\n\t\t\tdescriptors[prop] = desc = {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable,\n\t\t\t\tget(this: any) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn objectTraps.get(state, prop)\n\t\t\t\t},\n\t\t\t\tset(this: any, value) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tobjectTraps.set(state, prop, value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn desc\n\t}\n\n\t// This looks expensive, but only proxies are visited, and only objects without known changes are scanned.\n\tfunction markChangesSweep(drafts: Drafted<any, ImmerState>[]) {\n\t\t// The natural order of drafts in the `scope` array is based on when they\n\t\t// were accessed. By processing drafts in reverse natural order, we have a\n\t\t// better chance of processing leaf nodes first. When a leaf node is known to\n\t\t// have changed, we can avoid any traversal of its ancestor nodes.\n\t\tfor (let i = drafts.length - 1; i >= 0; i--) {\n\t\t\tconst state: ES5State = drafts[i][DRAFT_STATE]\n\t\t\tif (!state.modified_) {\n\t\t\t\tswitch (state.type_) {\n\t\t\t\t\tcase ProxyType.ES5Array:\n\t\t\t\t\t\tif (hasArrayChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase ProxyType.ES5Object:\n\t\t\t\t\t\tif (hasObjectChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction markChangesRecursively(object: any) {\n\t\tif (!object || typeof object !== \"object\") return\n\t\tconst state: ES5State | undefined = object[DRAFT_STATE]\n\t\tif (!state) return\n\t\tconst {base_, draft_, assigned_, type_} = state\n\t\tif (type_ === ProxyType.ES5Object) {\n\t\t\t// Look for added keys.\n\t\t\t// probably there is a faster way to detect changes, as sweep + recurse seems to do some\n\t\t\t// unnecessary work.\n\t\t\t// also: probably we can store the information we detect here, to speed up tree finalization!\n\t\t\teach(draft_, key => {\n\t\t\t\tif ((key as any) === DRAFT_STATE) return\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif ((base_ as any)[key] === undefined && !has(base_, key)) {\n\t\t\t\t\tassigned_[key] = true\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t} else if (!assigned_[key]) {\n\t\t\t\t\t// Only untouched properties trigger recursion.\n\t\t\t\t\tmarkChangesRecursively(draft_[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Look for removed keys.\n\t\t\teach(base_, key => {\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif (draft_[key] === undefined && !has(draft_, key)) {\n\t\t\t\t\tassigned_[key] = false\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t}\n\t\t\t})\n\t\t} else if (type_ === ProxyType.ES5Array) {\n\t\t\tif (hasArrayChanges(state as ES5ArrayState)) {\n\t\t\t\tmarkChanged(state)\n\t\t\t\tassigned_.length = true\n\t\t\t}\n\n\t\t\tif (draft_.length < base_.length) {\n\t\t\t\tfor (let i = draft_.length; i < base_.length; i++) assigned_[i] = false\n\t\t\t} else {\n\t\t\t\tfor (let i = base_.length; i < draft_.length; i++) assigned_[i] = true\n\t\t\t}\n\n\t\t\t// Minimum count is enough, the other parts has been processed.\n\t\t\tconst min = Math.min(draft_.length, base_.length)\n\n\t\t\tfor (let i = 0; i < min; i++) {\n\t\t\t\t// Only untouched indices trigger recursion.\n\t\t\t\tif (!draft_.hasOwnProperty(i)) {\n\t\t\t\t\tassigned_[i] = true\n\t\t\t\t}\n\t\t\t\tif (assigned_[i] === undefined) markChangesRecursively(draft_[i])\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasObjectChanges(state: ES5ObjectState) {\n\t\tconst {base_, draft_} = state\n\n\t\t// Search for added keys and changed keys. Start at the back, because\n\t\t// non-numeric keys are ordered by time of definition on the object.\n\t\tconst keys = ownKeys(draft_)\n\t\tfor (let i = keys.length - 1; i >= 0; i--) {\n\t\t\tconst key: any = keys[i]\n\t\t\tif (key === DRAFT_STATE) continue\n\t\t\tconst baseValue = base_[key]\n\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\tif (baseValue === undefined && !has(base_, key)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Once a base key is deleted, future changes go undetected, because its\n\t\t\t// descriptor is erased. This branch detects any missed changes.\n\t\t\telse {\n\t\t\t\tconst value = draft_[key]\n\t\t\t\tconst state: ImmerState = value && value[DRAFT_STATE]\n\t\t\t\tif (state ? state.base_ !== baseValue : !is(value, baseValue)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// At this point, no keys were added or changed.\n\t\t// Compare key count to determine if keys were deleted.\n\t\tconst baseIsDraft = !!base_[DRAFT_STATE as any]\n\t\treturn keys.length !== ownKeys(base_).length + (baseIsDraft ? 0 : 1) // + 1 to correct for DRAFT_STATE\n\t}\n\n\tfunction hasArrayChanges(state: ES5ArrayState) {\n\t\tconst {draft_} = state\n\t\tif (draft_.length !== state.base_.length) return true\n\t\t// See #116\n\t\t// If we first shorten the length, our array interceptors will be removed.\n\t\t// If after that new items are added, result in the same original length,\n\t\t// those last items will have no intercepting property.\n\t\t// So if there is no own descriptor on the last position, we know that items were removed and added\n\t\t// N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n\t\t// the last one\n\t\t// last descriptor can be not a trap, if the array was extended\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(\n\t\t\tdraft_,\n\t\t\tdraft_.length - 1\n\t\t)\n\t\t// descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\t\tif (descriptor && !descriptor.get) return true\n\t\t// if we miss a property, it has been deleted, so array probobaly changed\n\t\tfor (let i = 0; i < draft_.length; i++) {\n\t\t\tif (!draft_.hasOwnProperty(i)) return true\n\t\t}\n\t\t// For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\t\treturn false\n\t}\n\n\tfunction hasChanges_(state: ES5State) {\n\t\treturn state.type_ === ProxyType.ES5Object\n\t\t\t? hasObjectChanges(state)\n\t\t\t: hasArrayChanges(state)\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tloadPlugin(\"ES5\", {\n\t\tcreateES5Proxy_,\n\t\twillFinalizeES5_,\n\t\thasChanges_\n\t})\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\nexport default produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\nexport const setUseProxies = immer.setUseProxies.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft<T>(value: T): Draft<T> {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable<T>(value: T): Immutable<T> {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enableES5} from \"./plugins/es5\"\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableAllPlugins} from \"./plugins/all\"\n","// Should be no imports here!\n\n// Some things that should be evaluated before all else...\n\n// We only want to know if non-polyfilled symbols are available\nconst hasSymbol =\n\ttypeof Symbol !== \"undefined\" && typeof Symbol(\"x\") === \"symbol\"\nexport const hasMap = typeof Map !== \"undefined\"\nexport const hasSet = typeof Set !== \"undefined\"\nexport const hasProxies =\n\ttypeof Proxy !== \"undefined\" &&\n\ttypeof Proxy.revocable !== \"undefined\" &&\n\ttypeof Reflect !== \"undefined\"\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: Nothing = hasSymbol\n\t? Symbol.for(\"immer-nothing\")\n\t: ({[\"immer-nothing\"]: true} as any)\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-draftable\")\n\t: (\"__$immer_draftable\" as any)\n\nexport const DRAFT_STATE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-state\")\n\t: (\"__$immer_state\" as any)\n\n// Even a polyfilled Symbol might provide Symbol.iterator\nexport const iteratorSymbol: typeof Symbol.iterator =\n\t(typeof Symbol != \"undefined\" && Symbol.iterator) || (\"@@iterator\" as any)\n\n/** Use a class type for `nothing` so its type is unique */\nexport class Nothing {\n\t// This lets us do `Exclude<T, Nothing>`\n\t// @ts-ignore\n\tprivate _!: unique symbol\n}\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","import type { Action, ActionCreator, StoreEnhancer } from 'redux'\r\nimport { compose } from 'redux'\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface DevToolsEnhancerOptions {\r\n /**\r\n * the instance name to be showed on the monitor page. Default value is `document.title`.\r\n * If not specified and there's no document title, it will consist of `tabId` and `instanceId`.\r\n */\r\n name?: string\r\n /**\r\n * action creators functions to be available in the Dispatcher.\r\n */\r\n actionCreators?: ActionCreator<any>[] | { [key: string]: ActionCreator<any> }\r\n /**\r\n * if more than one action is dispatched in the indicated interval, all new actions will be collected and sent at once.\r\n * It is the joint between performance and speed. When set to `0`, all actions will be sent instantly.\r\n * Set it to a higher value when experiencing perf issues (also `maxAge` to a lower value).\r\n *\r\n * @default 500 ms.\r\n */\r\n latency?: number\r\n /**\r\n * (> 1) - maximum allowed actions to be stored in the history tree. The oldest actions are removed once maxAge is reached. It's critical for performance.\r\n *\r\n * @default 50\r\n */\r\n maxAge?: number\r\n /**\r\n * Customizes how actions and state are serialized and deserialized. Can be a boolean or object. If given a boolean, the behavior is the same as if you\r\n * were to pass an object and specify `options` as a boolean. Giving an object allows fine-grained customization using the `replacer` and `reviver`\r\n * functions.\r\n */\r\n serialize?:\r\n | boolean\r\n | {\r\n /**\r\n * - `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).\r\n * - `false` - will handle also circular references.\r\n * - `true` - will handle also date, regex, undefined, error objects, symbols, maps, sets and functions.\r\n * - object, which contains `date`, `regex`, `undefined`, `error`, `symbol`, `map`, `set` and `function` keys.\r\n * For each of them you can indicate if to include (by setting as `true`).\r\n * For `function` key you can also specify a custom function which handles serialization.\r\n * See [`jsan`](https://github.com/kolodny/jsan) for more details.\r\n */\r\n options?:\r\n | undefined\r\n | boolean\r\n | {\r\n date?: true\r\n regex?: true\r\n undefined?: true\r\n error?: true\r\n symbol?: true\r\n map?: true\r\n set?: true\r\n function?: true | ((fn: (...args: any[]) => any) => string)\r\n }\r\n /**\r\n * [JSON replacer function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter) used for both actions and states stringify.\r\n * In addition, you can specify a data type by adding a [`__serializedType__`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/helpers/index.js#L4)\r\n * key. So you can deserialize it back while importing or persisting data.\r\n * Moreover, it will also [show a nice preview showing the provided custom type](https://cloud.githubusercontent.com/assets/7957859/21814330/a17d556a-d761-11e6-85ef-159dd12f36c5.png):\r\n */\r\n replacer?: (key: string, value: unknown) => any\r\n /**\r\n * [JSON `reviver` function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter)\r\n * used for parsing the imported actions and states. See [`remotedev-serialize`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/immutable/serialize.js#L8-L41)\r\n * as an example on how to serialize special data types and get them back.\r\n */\r\n reviver?: (key: string, value: unknown) => any\r\n /**\r\n * Automatically serialize/deserialize immutablejs via [remotedev-serialize](https://github.com/zalmoxisus/remotedev-serialize).\r\n * Just pass the Immutable library. It will support all ImmutableJS structures. You can even export them into a file and get them back.\r\n * The only exception is `Record` class, for which you should pass this in addition the references to your classes in `refs`.\r\n */\r\n immutable?: any\r\n /**\r\n * ImmutableJS `Record` classes used to make possible restore its instances back when importing, persisting...\r\n */\r\n refs?: any\r\n }\r\n /**\r\n * function which takes `action` object and id number as arguments, and should return `action` object back.\r\n */\r\n actionSanitizer?: <A extends Action>(action: A, id: number) => A\r\n /**\r\n * function which takes `state` object and index as arguments, and should return `state` object back.\r\n */\r\n stateSanitizer?: <S>(state: S, index: number) => S\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n * @deprecated Use actionsDenylist instead.\r\n */\r\n actionsBlacklist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n * @deprecated Use actionsAllowlist instead.\r\n */\r\n actionsWhitelist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n */\r\n actionsDenylist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n */\r\n actionsAllowlist?: string | string[]\r\n /**\r\n * called for every action before sending, takes `state` and `action` object, and returns `true` in case it allows sending the current data to the monitor.\r\n * Use it as a more advanced version of `actionsDenylist`/`actionsAllowlist` parameters.\r\n */\r\n predicate?: <S, A extends Action>(state: S, action: A) => boolean\r\n /**\r\n * if specified as `false`, it will not record the changes till clicking on `Start recording` button.\r\n * Available only for Redux enhancer, for others use `autoPause`.\r\n *\r\n * @default true\r\n */\r\n shouldRecordChanges?: boolean\r\n /**\r\n * if specified, whenever clicking on `Pause recording` button and there are actions in the history log, will add this action type.\r\n * If not specified, will commit when paused. Available only for Redux enhancer.\r\n *\r\n * @default \"@@PAUSED\"\"\r\n */\r\n pauseActionType?: string\r\n /**\r\n * auto pauses when the extension’s window is not opened, and so has zero impact on your app when not in use.\r\n * Not available for Redux enhancer (as it already does it but storing the data to be sent).\r\n *\r\n * @default false\r\n */\r\n autoPause?: boolean\r\n /**\r\n * if specified as `true`, it will not allow any non-monitor actions to be dispatched till clicking on `Unlock changes` button.\r\n * Available only for Redux enhancer.\r\n *\r\n * @default false\r\n */\r\n shouldStartLocked?: boolean\r\n /**\r\n * if set to `false`, will not recompute the states on hot reloading (or on replacing the reducers). Available only for Redux enhancer.\r\n *\r\n * @default true\r\n */\r\n shouldHotReload?: boolean\r\n /**\r\n * if specified as `true`, whenever there's an exception in reducers, the monitors will show the error message, and next actions will not be dispatched.\r\n *\r\n * @default false\r\n */\r\n shouldCatchErrors?: boolean\r\n /**\r\n * If you want to restrict the extension, specify the features you allow.\r\n * If not specified, all of the features are enabled. When set as an object, only those included as `true` will be allowed.\r\n * Note that except `true`/`false`, `import` and `export` can be set as `custom` (which is by default for Redux enhancer), meaning that the importing/exporting occurs on the client side.\r\n * Otherwise, you'll get/set the data right from the monitor part.\r\n */\r\n features?: {\r\n /**\r\n * start/pause recording of dispatched actions\r\n */\r\n pause?: boolean\r\n /**\r\n * lock/unlock dispatching actions and side effects\r\n */\r\n lock?: boolean\r\n /**\r\n * persist states on page reloading\r\n */\r\n persist?: boolean\r\n /**\r\n * export history of actions in a file\r\n */\r\n export?: boolean | 'custom'\r\n /**\r\n * import history of actions from a file\r\n */\r\n import?: boolean | 'custom'\r\n /**\r\n * jump back and forth (time travelling)\r\n */\r\n jump?: boolean\r\n /**\r\n * skip (cancel) actions\r\n */\r\n skip?: boolean\r\n /**\r\n * drag and drop actions in the history list\r\n */\r\n reorder?: boolean\r\n /**\r\n * dispatch custom actions or action creators\r\n */\r\n dispatch?: boolean\r\n /**\r\n * generate tests for the selected actions\r\n */\r\n test?: boolean\r\n }\r\n /**\r\n * Set to true or a stacktrace-returning function to record call stack traces for dispatched actions.\r\n * Defaults to false.\r\n */\r\n trace?: boolean | (<A extends Action>(action: A) => string)\r\n /**\r\n * The maximum number of stack trace entries to record per action. Defaults to 10.\r\n */\r\n traceLimit?: number\r\n}\r\n\r\ntype Compose = typeof compose\r\n\r\ninterface ComposeWithDevTools {\r\n (options: DevToolsEnhancerOptions): Compose\r\n <StoreExt>(...funcs: StoreEnhancer<StoreExt>[]): StoreEnhancer<StoreExt>\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const composeWithDevTools: ComposeWithDevTools =\r\n typeof window !== 'undefined' &&\r\n (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n : function () {\r\n if (arguments.length === 0) return undefined\r\n if (typeof arguments[0] === 'object') return compose\r\n return compose.apply(null, arguments as any as Function[])\r\n }\r\n\r\n/**\r\n * @public\r\n */\r\nexport const devToolsEnhancer: {\r\n (options: DevToolsEnhancerOptions): StoreEnhancer<any>\r\n} =\r\n typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n : function () {\r\n return function (noop) {\r\n return noop\r\n }\r\n }\r\n","/**\r\n * Returns true if the passed value is \"plain\" object, i.e. an object whose\r\n * prototype is the root `Object.prototype`. This includes objects created\r\n * using object literals, but not for instance for class instances.\r\n *\r\n * @param {any} value The value to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n *\r\n * @public\r\n */\r\nexport default function isPlainObject(value: unknown): value is object {\r\n if (typeof value !== 'object' || value === null) return false\r\n\r\n let proto = Object.getPrototypeOf(value)\r\n if (proto === null) return true\r\n\r\n let baseProto = proto\r\n while (Object.getPrototypeOf(baseProto) !== null) {\r\n baseProto = Object.getPrototypeOf(baseProto)\r\n }\r\n\r\n return proto === baseProto\r\n}\r\n","import type { Action } from 'redux'\r\nimport type {\r\n IsUnknownOrNonInferrable,\r\n IfMaybeUndefined,\r\n IfVoid,\r\n IsAny,\r\n} from './tsHelpers'\r\nimport { hasMatchFunction } from './tsHelpers'\r\nimport isPlainObject from './isPlainObject'\r\n\r\n/**\r\n * An action with a string type and an associated payload. This is the\r\n * type of action returned by `createAction()` action creators.\r\n *\r\n * @template P The type of the action's payload.\r\n * @template T the type used for the action type.\r\n * @template M The type of the action's meta (optional)\r\n * @template E The type of the action's error (optional)\r\n *\r\n * @public\r\n */\r\nexport type PayloadAction<\r\n P = void,\r\n T extends string = string,\r\n M = never,\r\n E = never\r\n> = {\r\n payload: P\r\n type: T\r\n} & ([M] extends [never]\r\n ? {}\r\n : {\r\n meta: M\r\n }) &\r\n ([E] extends [never]\r\n ? {}\r\n : {\r\n error: E\r\n })\r\n\r\n/**\r\n * A \"prepare\" method to be used as the second parameter of `createAction`.\r\n * Takes any number of arguments and returns a Flux Standard Action without\r\n * type (will be added later) that *must* contain a payload (might be undefined).\r\n *\r\n * @public\r\n */\r\nexport type PrepareAction<P> =\r\n | ((...args: any[]) => { payload: P })\r\n | ((...args: any[]) => { payload: P; meta: any })\r\n | ((...args: any[]) => { payload: P; error: any })\r\n | ((...args: any[]) => { payload: P; meta: any; error: any })\r\n\r\n/**\r\n * Internal version of `ActionCreatorWithPreparedPayload`. Not to be used externally.\r\n *\r\n * @internal\r\n */\r\nexport type _ActionCreatorWithPreparedPayload<\r\n PA extends PrepareAction<any> | void,\r\n T extends string = string\r\n> = PA extends PrepareAction<infer P>\r\n ? ActionCreatorWithPreparedPayload<\r\n Parameters<PA>,\r\n P,\r\n T,\r\n ReturnType<PA> extends {\r\n error: infer E\r\n }\r\n ? E\r\n : never,\r\n ReturnType<PA> extends {\r\n meta: infer M\r\n }\r\n ? M\r\n : never\r\n >\r\n : void\r\n\r\n/**\r\n * Basic type for all action creators.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n */\r\nexport interface BaseActionCreator<P, T extends string, M = never, E = never> {\r\n type: T\r\n match: (action: Action<unknown>) => action is PayloadAction<P, T, M, E>\r\n}\r\n\r\n/**\r\n * An action creator that takes multiple arguments that are passed\r\n * to a `PrepareAction` method to create the final Action.\r\n * @typeParam Args arguments for the action creator function\r\n * @typeParam P `payload` type\r\n * @typeParam T `type` name\r\n * @typeParam E optional `error` type\r\n * @typeParam M optional `meta` type\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPreparedPayload<\r\n Args extends unknown[],\r\n P,\r\n T extends string = string,\r\n E = never,\r\n M = never\r\n> extends BaseActionCreator<P, T, M, E> {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with `Args` will return\r\n * an Action with a payload of type `P` and (depending on the `PrepareAction`\r\n * method used) a `meta`- and `error` property of types `M` and `E` respectively.\r\n */\r\n (...args: Args): PayloadAction<P, T, M, E>\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes an optional payload of type `P`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithOptionalPayload<P, T extends string = string>\r\n extends BaseActionCreator<P, T> {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`.\r\n * Calling it without an argument will return a PayloadAction with a payload of `undefined`.\r\n */\r\n (payload?: P): PayloadAction<P, T>\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes no payload.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithoutPayload<T extends string = string>\r\n extends BaseActionCreator<undefined, T> {\r\n /**\r\n * Calling this {@link redux#ActionCreator} will\r\n * return a {@link PayloadAction} of type `T` with a payload of `undefined`\r\n */\r\n (noArgument: void): PayloadAction<undefined, T>\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that requires a payload of type P.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPayload<P, T extends string = string>\r\n extends BaseActionCreator<P, T> {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`\r\n */\r\n (payload: P): PayloadAction<P, T>\r\n}\r\n\r\n/**\r\n * An action creator of type `T` whose `payload` type could not be inferred. Accepts everything as `payload`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithNonInferrablePayload<\r\n T extends string = string\r\n> extends BaseActionCreator<unknown, T> {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload\r\n * of exactly the type of the argument.\r\n */\r\n <PT extends unknown>(payload: PT): PayloadAction<PT, T>\r\n}\r\n\r\n/**\r\n * An action creator that produces actions with a `payload` attribute.\r\n *\r\n * @typeParam P the `payload` type\r\n * @typeParam T the `type` of the resulting action\r\n * @typeParam PA if the resulting action is preprocessed by a `prepare` method, the signature of said method.\r\n *\r\n * @public\r\n */\r\nexport type PayloadActionCreator<\r\n P = void,\r\n T extends string = string,\r\n PA extends PrepareAction<P> | void = void\r\n> = IfPrepareActionMethodProvided<\r\n PA,\r\n _ActionCreatorWithPreparedPayload<PA, T>,\r\n // else\r\n IsAny<\r\n P,\r\n ActionCreatorWithPayload<any, T>,\r\n IsUnknownOrNonInferrable<\r\n P,\r\n ActionCreatorWithNonInferrablePayload<T>,\r\n // else\r\n IfVoid<\r\n P,\r\n ActionCreatorWithoutPayload<T>,\r\n // else\r\n IfMaybeUndefined<\r\n P,\r\n ActionCreatorWithOptionalPayload<P, T>,\r\n // else\r\n ActionCreatorWithPayload<P, T>\r\n >\r\n >\r\n >\r\n >\r\n>\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overridden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction<P = void, T extends string = string>(\r\n type: T\r\n): PayloadActionCreator<P, T>\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overridden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction<\r\n PA extends PrepareAction<any>,\r\n T extends string = string\r\n>(\r\n type: T,\r\n prepareAction: PA\r\n): PayloadActionCreator<ReturnType<PA>['payload'], T, PA>\r\n\r\nexport function createAction(type: string, prepareAction?: Function): any {\r\n function actionCreator(...args: any[]) {\r\n if (prepareAction) {\r\n let prepared = prepareAction(...args)\r\n if (!prepared) {\r\n throw new Error('prepareAction did not return an object')\r\n }\r\n\r\n return {\r\n type,\r\n payload: prepared.payload,\r\n ...('meta' in prepared && { meta: prepared.meta }),\r\n ...('error' in prepared && { error: prepared.error }),\r\n }\r\n }\r\n return { type, payload: args[0] }\r\n }\r\n\r\n actionCreator.toString = () => `${type}`\r\n\r\n actionCreator.type = type\r\n\r\n actionCreator.match = (action: Action<unknown>): action is PayloadAction =>\r\n action.type === type\r\n\r\n return actionCreator\r\n}\r\n\r\n/**\r\n * Returns true if value is a plain object with a `type` property.\r\n */\r\nexport function isAction(action: unknown): action is Action<unknown> {\r\n return isPlainObject(action) && 'type' in action\r\n}\r\n\r\n/**\r\n * Returns true if value is an RTK-like action creator, with a static type property and match method.\r\n */\r\nexport function isActionCreator(\r\n action: unknown\r\n): action is BaseActionCreator<unknown, string> & Function {\r\n return (\r\n typeof action === 'function' &&\r\n 'type' in action &&\r\n // hasMatchFunction only wants Matchers but I don't see the point in rewriting it\r\n hasMatchFunction(action as any)\r\n )\r\n}\r\n\r\n/**\r\n * Returns true if value is an action with a string type and valid Flux Standard Action keys.\r\n */\r\nexport function isFSA(action: unknown): action is {\r\n type: string\r\n payload?: unknown\r\n error?: unknown\r\n meta?: unknown\r\n} {\r\n return (\r\n isAction(action) &&\r\n typeof action.type === 'string' &&\r\n Object.keys(action).every(isValidKey)\r\n )\r\n}\r\n\r\nfunction isValidKey(key: string) {\r\n return ['type', 'payload', 'error', 'meta'].indexOf(key) > -1\r\n}\r\n\r\n/**\r\n * Returns the action type of the actions created by the passed\r\n * `createAction()`-generated action creator (arbitrary action creators\r\n * are not supported).\r\n *\r\n * @param action The action creator whose action type to get.\r\n * @returns The action type used by the action creator.\r\n *\r\n * @public\r\n */\r\nexport function getType<T extends string>(\r\n actionCreator: PayloadActionCreator<any, T>\r\n): T {\r\n return `${actionCreator}` as T\r\n}\r\n\r\n// helper types for more readable typings\r\n\r\ntype IfPrepareActionMethodProvided<\r\n PA extends PrepareAction<any> | void,\r\n True,\r\n False\r\n> = PA extends (...args: any[]) => any ? True : False\r\n","import createNextState, { isDraftable } from 'immer'\r\nimport type { Middleware, StoreEnhancer } from 'redux'\r\n\r\nexport function getTimeMeasureUtils(maxDelay: number, fnName: string) {\r\n let elapsed = 0\r\n return {\r\n measureTime<T>(fn: () => T): T {\r\n const started = Date.now()\r\n try {\r\n return fn()\r\n } finally {\r\n const finished = Date.now()\r\n elapsed += finished - started\r\n }\r\n },\r\n warnIfExceeded() {\r\n if (elapsed > maxDelay) {\r\n console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \r\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\r\nIt is disabled in production builds, so you don't need to worry about that.`)\r\n }\r\n },\r\n }\r\n}\r\n\r\nexport function delay(ms: number) {\r\n return new Promise((resolve) => setTimeout(resolve, ms))\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class MiddlewareArray<\r\n Middlewares extends Middleware<any, any>[]\r\n> extends Array<Middlewares[number]> {\r\n constructor(...items: Middlewares)\r\n constructor(...args: any[]) {\r\n super(...args)\r\n Object.setPrototypeOf(this, MiddlewareArray.prototype)\r\n }\r\n\r\n static get [Symbol.species]() {\r\n return MiddlewareArray as any\r\n }\r\n\r\n concat<AdditionalMiddlewares extends ReadonlyArray<Middleware<any, any>>>(\r\n items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n\r\n concat<AdditionalMiddlewares extends ReadonlyArray<Middleware<any, any>>>(\r\n ...items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n concat(...arr: any[]) {\r\n return super.concat.apply(this, arr)\r\n }\r\n\r\n prepend<AdditionalMiddlewares extends ReadonlyArray<Middleware<any, any>>>(\r\n items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n prepend<AdditionalMiddlewares extends ReadonlyArray<Middleware<any, any>>>(\r\n ...items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n prepend(...arr: any[]) {\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new MiddlewareArray(...arr[0].concat(this))\r\n }\r\n return new MiddlewareArray(...arr.concat(this))\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class EnhancerArray<\r\n Enhancers extends StoreEnhancer<any, any>[]\r\n> extends Array<Enhancers[number]> {\r\n constructor(...items: Enhancers)\r\n constructor(...args: any[]) {\r\n super(...args)\r\n Object.setPrototypeOf(this, EnhancerArray.prototype)\r\n }\r\n\r\n static get [Symbol.species]() {\r\n return EnhancerArray as any\r\n }\r\n\r\n concat<AdditionalEnhancers extends ReadonlyArray<StoreEnhancer<any, any>>>(\r\n items: AdditionalEnhancers\r\n ): EnhancerArray<[...Enhancers, ...AdditionalEnhancers]>\r\n\r\n concat<AdditionalEnhancers extends ReadonlyArray<StoreEnhancer<any, any>>>(\r\n ...items: AdditionalEnhancers\r\n ): EnhancerArray<[...Enhancers, ...AdditionalEnhancers]>\r\n concat(...arr: any[]) {\r\n return super.concat.apply(this, arr)\r\n }\r\n\r\n prepend<AdditionalEnhancers extends ReadonlyArray<StoreEnhancer<any, any>>>(\r\n items: AdditionalEnhancers\r\n ): EnhancerArray<[...AdditionalEnhancers, ...Enhancers]>\r\n\r\n prepend<AdditionalEnhancers extends ReadonlyArray<StoreEnhancer<any, any>>>(\r\n ...items: AdditionalEnhancers\r\n ): EnhancerArray<[...AdditionalEnhancers, ...Enhancers]>\r\n\r\n prepend(...arr: any[]) {\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new EnhancerArray(...arr[0].concat(this))\r\n }\r\n return new EnhancerArray(...arr.concat(this))\r\n }\r\n}\r\n\r\nexport function freezeDraftable<T>(val: T) {\r\n return isDraftable(val) ? createNextState(val, () => {}) : val\r\n}\r\n","import type { Middleware, AnyAction } from 'redux'\r\nimport type { ThunkMiddleware } from 'redux-thunk'\r\nimport thunkMiddleware from 'redux-thunk'\r\nimport type { ActionCreatorInvariantMiddlewareOptions } from './actionCreatorInvariantMiddleware'\r\nimport { createActionCreatorInvariantMiddleware } from './actionCreatorInvariantMiddleware'\r\nimport type { ImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware'\r\n/* PROD_START_REMOVE_UMD */\r\nimport { createImmutableStateInvariantMiddleware } from './immutableStateInvariantMiddleware'\r\n/* PROD_STOP_REMOVE_UMD */\r\n\r\nimport type { SerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware'\r\nimport { createSerializableStateInvariantMiddleware } from './serializableStateInvariantMiddleware'\r\nimport type { ExcludeFromTuple } from './tsHelpers'\r\nimport { MiddlewareArray } from './utils'\r\n\r\nfunction isBoolean(x: any): x is boolean {\r\n return typeof x === 'boolean'\r\n}\r\n\r\ninterface ThunkOptions<E = any> {\r\n extraArgument: E\r\n}\r\n\r\ninterface GetDefaultMiddlewareOptions {\r\n thunk?: boolean | ThunkOptions\r\n immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions\r\n serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions\r\n actionCreatorCheck?: boolean | ActionCreatorInvariantMiddlewareOptions\r\n}\r\n\r\nexport type ThunkMiddlewareFor<\r\n S,\r\n O extends GetDefaultMiddlewareOptions = {}\r\n> = O extends {\r\n thunk: false\r\n}\r\n ? never\r\n : O extends { thunk: { extraArgument: infer E } }\r\n ? ThunkMiddleware<S, AnyAction, E>\r\n : ThunkMiddleware<S, AnyAction>\r\n\r\nexport type CurriedGetDefaultMiddleware<S = any> = <\r\n O extends Partial<GetDefaultMiddlewareOptions> = {\r\n thunk: true\r\n immutableCheck: true\r\n serializableCheck: true\r\n actionCreatorCheck: true\r\n }\r\n>(\r\n options?: O\r\n) => MiddlewareArray<ExcludeFromTuple<[ThunkMiddlewareFor<S, O>], never>>\r\n\r\nexport function curryGetDefaultMiddleware<\r\n S = any\r\n>(): CurriedGetDefaultMiddleware<S> {\r\n return function curriedGetDefaultMiddleware(options) {\r\n return getDefaultMiddleware(options)\r\n }\r\n}\r\n\r\n/**\r\n * Returns any array containing the default middleware installed by\r\n * `configureStore()`. Useful if you want to configure your store with a custom\r\n * `middleware` array but still keep the default set.\r\n *\r\n * @return The default middleware used by `configureStore()`.\r\n *\r\n * @public\r\n *\r\n * @deprecated Prefer to use the callback notation for the `middleware` option in `configureStore`\r\n * to access a pre-typed `getDefaultMiddleware` instead.\r\n */\r\nexport function getDefaultMiddleware<\r\n S = any,\r\n O extends Partial<GetDefaultMiddlewareOptions> = {\r\n thunk: true\r\n immutableCheck: true\r\n serializableCheck: true\r\n actionCreatorCheck: true\r\n }\r\n>(\r\n options: O = {} as O\r\n): MiddlewareArray<ExcludeFromTuple<[ThunkMiddlewareFor<S, O>], never>> {\r\n const {\r\n thunk = true,\r\n immutableCheck = true,\r\n serializableCheck = true,\r\n actionCreatorCheck = true,\r\n } = options\r\n\r\n let middlewareArray = new MiddlewareArray<Middleware[]>()\r\n\r\n if (thunk) {\r\n if (isBoolean(thunk)) {\r\n middlewareArray.push(thunkMiddleware)\r\n } else {\r\n middlewareArray.push(\r\n thunkMiddleware.withExtraArgument(thunk.extraArgument)\r\n )\r\n }\r\n }\r\n\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (immutableCheck) {\r\n /* PROD_START_REMOVE_UMD */\r\n let immutableOptions: ImmutableStateInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(immutableCheck)) {\r\n immutableOptions = immutableCheck\r\n }\r\n\r\n middlewareArray.unshift(\r\n createImmutableStateInvariantMiddleware(immutableOptions)\r\n )\r\n /* PROD_STOP_REMOVE_UMD */\r\n }\r\n\r\n if (serializableCheck) {\r\n let serializableOptions: SerializableStateInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(serializableCheck)) {\r\n serializableOptions = serializableCheck\r\n }\r\n\r\n middlewareArray.push(\r\n createSerializableStateInvariantMiddleware(serializableOptions)\r\n )\r\n }\r\n if (actionCreatorCheck) {\r\n let actionCreatorOptions: ActionCreatorInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(actionCreatorCheck)) {\r\n actionCreatorOptions = actionCreatorCheck\r\n }\r\n\r\n middlewareArray.unshift(\r\n createActionCreatorInvariantMiddleware(actionCreatorOptions)\r\n )\r\n }\r\n }\r\n\r\n return middlewareArray as any\r\n}\r\n","import type {\r\n Reducer,\r\n ReducersMapObject,\r\n Middleware,\r\n Action,\r\n AnyAction,\r\n StoreEnhancer,\r\n Store,\r\n Dispatch,\r\n PreloadedState,\r\n CombinedState,\r\n} from 'redux'\r\nimport { createStore, compose, applyMiddleware, combineReducers } from 'redux'\r\nimport type { DevToolsEnhancerOptions as DevToolsOptions } from './devtoolsExtension'\r\nimport { composeWithDevTools } from './devtoolsExtension'\r\n\r\nimport isPlainObject from './isPlainObject'\r\nimport type {\r\n ThunkMiddlewareFor,\r\n CurriedGetDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nimport { curryGetDefaultMiddleware } from './getDefaultMiddleware'\r\nimport type {\r\n NoInfer,\r\n ExtractDispatchExtensions,\r\n ExtractStoreExtensions,\r\n ExtractStateExtensions,\r\n} from './tsHelpers'\r\nimport { EnhancerArray } from './utils'\r\n\r\nconst IS_PRODUCTION = process.env.NODE_ENV === 'production'\r\n\r\n/**\r\n * Callback function type, to be used in `ConfigureStoreOptions.enhancers`\r\n *\r\n * @public\r\n */\r\nexport type ConfigureEnhancersCallback<E extends Enhancers = Enhancers> = (\r\n defaultEnhancers: EnhancerArray<[StoreEnhancer<{}, {}>]>\r\n) => E\r\n\r\n/**\r\n * Options for `configureStore()`.\r\n *\r\n * @public\r\n */\r\nexport interface ConfigureStoreOptions<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares<S> = Middlewares<S>,\r\n E extends Enhancers = Enhancers\r\n> {\r\n /**\r\n * A single reducer function that will be used as the root reducer, or an\r\n * object of slice reducers that will be passed to `combineReducers()`.\r\n */\r\n reducer: Reducer<S, A> | ReducersMapObject<S, A>\r\n\r\n /**\r\n * An array of Redux middleware to install. If not supplied, defaults to\r\n * the set of middleware returned by `getDefaultMiddleware()`.\r\n *\r\n * @example `middleware: (gDM) => gDM().concat(logger, apiMiddleware, yourCustomMiddleware)`\r\n * @see https://redux-toolkit.js.org/api/getDefaultMiddleware#intended-usage\r\n */\r\n middleware?: ((getDefaultMiddleware: CurriedGetDefaultMiddleware<S>) => M) | M\r\n\r\n /**\r\n * Whether to enable Redux DevTools integration. Defaults to `true`.\r\n *\r\n * Additional configuration can be done by passing Redux DevTools options\r\n */\r\n devTools?: boolean | DevToolsOptions\r\n\r\n /**\r\n * The initial state, same as Redux's createStore.\r\n * You may optionally specify it to hydrate the state\r\n * from the server in universal apps, or to restore a previously serialized\r\n * user session. If you use `combineReducers()` to produce the root reducer\r\n * function (either directly or indirectly by passing an object as `reducer`),\r\n * this must be an object with the same shape as the reducer map keys.\r\n */\r\n /*\r\n Not 100% correct but the best approximation we can get:\r\n - if S is a `CombinedState` applying a second `CombinedState` on it does not change anything.\r\n - if it is not, there could be two cases:\r\n - `ReducersMapObject<S, A>` is being passed in. In this case, we will call `combineReducers` on it and `CombinedState<S>` is correct\r\n - `Reducer<S, A>` is being passed in. In this case, actually `CombinedState<S>` is wrong and `S` would be correct.\r\n As we cannot distinguish between those two cases without adding another generic parameter,\r\n we just make the pragmatic assumption that the latter almost never happens.\r\n */\r\n preloadedState?: PreloadedState<CombinedState<NoInfer<S>>>\r\n\r\n /**\r\n * The store enhancers to apply. See Redux's `createStore()`.\r\n * All enhancers will be included before the DevTools Extension enhancer.\r\n * If you need to customize the order of enhancers, supply a callback\r\n * function that will receive the original array (ie, `[applyMiddleware]`),\r\n * and should return a new array (such as `[applyMiddleware, offline]`).\r\n * If you only need to add middleware, you can use the `middleware` parameter instead.\r\n */\r\n enhancers?: E | ConfigureEnhancersCallback<E>\r\n}\r\n\r\ntype Middlewares<S> = ReadonlyArray<Middleware<{}, S>>\r\n\r\ntype Enhancers = ReadonlyArray<StoreEnhancer>\r\n\r\nexport interface ToolkitStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares<S> = Middlewares<S>\r\n> extends Store<S, A> {\r\n /**\r\n * The `dispatch` method of your store, enhanced by all its middlewares.\r\n *\r\n * @inheritdoc\r\n */\r\n dispatch: ExtractDispatchExtensions<M> & Dispatch<A>\r\n}\r\n\r\n/**\r\n * A Redux store returned by `configureStore()`. Supports dispatching\r\n * side-effectful _thunks_ in addition to plain actions.\r\n *\r\n * @public\r\n */\r\nexport type EnhancedStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares<S> = Middlewares<S>,\r\n E extends Enhancers = Enhancers\r\n> = ToolkitStore<S & ExtractStateExtensions<E>, A, M> &\r\n ExtractStoreExtensions<E>\r\n\r\n/**\r\n * A friendly abstraction over the standard Redux `createStore()` function.\r\n *\r\n * @param options The store configuration.\r\n * @returns A configured Redux store.\r\n *\r\n * @public\r\n */\r\nexport function configureStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares<S> = [ThunkMiddlewareFor<S>],\r\n E extends Enhancers = [StoreEnhancer]\r\n>(options: ConfigureStoreOptions<S, A, M, E>): EnhancedStore<S, A, M, E> {\r\n const curriedGetDefaultMiddleware = curryGetDefaultMiddleware<S>()\r\n\r\n const {\r\n reducer = undefined,\r\n middleware = curriedGetDefaultMiddleware(),\r\n devTools = true,\r\n preloadedState = undefined,\r\n enhancers = undefined,\r\n } = options || {}\r\n\r\n let rootReducer: Reducer<S, A>\r\n\r\n if (typeof reducer === 'function') {\r\n rootReducer = reducer\r\n } else if (isPlainObject(reducer)) {\r\n rootReducer = combineReducers(reducer) as unknown as Reducer<S, A>\r\n } else {\r\n throw new Error(\r\n '\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers'\r\n )\r\n }\r\n\r\n let finalMiddleware = middleware\r\n if (typeof finalMiddleware === 'function') {\r\n finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware)\r\n\r\n if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\r\n throw new Error(\r\n 'when using a middleware builder function, an array of middleware must be returned'\r\n )\r\n }\r\n }\r\n if (\r\n !IS_PRODUCTION &&\r\n finalMiddleware.some((item: any) => typeof item !== 'function')\r\n ) {\r\n throw new Error(\r\n 'each middleware provided to configureStore must be a function'\r\n )\r\n }\r\n\r\n const middlewareEnhancer: StoreEnhancer = applyMiddleware(...finalMiddleware)\r\n\r\n let finalCompose = compose\r\n\r\n if (devTools) {\r\n finalCompose = composeWithDevTools({\r\n // Enable capture of stack traces for dispatched Redux actions\r\n trace: !IS_PRODUCTION,\r\n ...(typeof devTools === 'object' && devTools),\r\n })\r\n }\r\n\r\n const defaultEnhancers = new EnhancerArray(middlewareEnhancer)\r\n let storeEnhancers: Enhancers = defaultEnhancers\r\n\r\n if (Array.isArray(enhancers)) {\r\n storeEnhancers = [middlewareEnhancer, ...enhancers]\r\n } else if (typeof enhancers === 'function') {\r\n storeEnhancers = enhancers(defaultEnhancers)\r\n }\r\n\r\n const composedEnhancer = finalCompose(...storeEnhancers) as StoreEnhancer<any>\r\n\r\n return createStore(rootReducer, preloadedState, composedEnhancer)\r\n}\r\n","import type { Action, AnyAction } from 'redux'\r\nimport type {\r\n CaseReducer,\r\n CaseReducers,\r\n ActionMatcherDescriptionCollection,\r\n} from './createReducer'\r\nimport type { TypeGuard } from './tsHelpers'\r\n\r\nexport interface TypedActionCreator<Type extends string> {\r\n (...args: any[]): Action<Type>\r\n type: Type\r\n}\r\n\r\n/**\r\n * A builder for an action <-> reducer map.\r\n *\r\n * @public\r\n */\r\nexport interface ActionReducerMapBuilder<State> {\r\n /**\r\n * Adds a case reducer to handle a single exact action type.\r\n * @remarks\r\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\r\n addCase<ActionCreator extends TypedActionCreator<string>>(\r\n actionCreator: ActionCreator,\r\n reducer: CaseReducer<State, ReturnType<ActionCreator>>\r\n ): ActionReducerMapBuilder<State>\r\n /**\r\n * Adds a case reducer to handle a single exact action type.\r\n * @remarks\r\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\r\n addCase<Type extends string, A extends Action<Type>>(\r\n type: Type,\r\n reducer: CaseReducer<State, A>\r\n ): ActionReducerMapBuilder<State>\r\n\r\n /**\r\n * Allows you to match your incoming actions against your own filter function instead of only the `action.type` property.\r\n * @remarks\r\n * If multiple matcher reducers match, all of them will be executed in the order\r\n * they were defined in - even if a case reducer already matched.\r\n * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\r\n * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates)\r\n * function\r\n * @param reducer - The actual case reducer function.\r\n *\r\n * @example\r\n```ts\r\nimport {\r\n createAction,\r\n createReducer,\r\n AsyncThunk,\r\n AnyAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\ntype GenericAsyncThunk = AsyncThunk<unknown, unknown, any>;\r\n\r\ntype PendingAction = ReturnType<GenericAsyncThunk[\"pending\"]>;\r\ntype RejectedAction = ReturnType<GenericAsyncThunk[\"rejected\"]>;\r\ntype FulfilledAction = ReturnType<GenericAsyncThunk[\"fulfilled\"]>;\r\n\r\nconst initialState: Record<string, string> = {};\r\nconst resetAction = createAction(\"reset-tracked-loading-state\");\r\n\r\nfunction isPendingAction(action: AnyAction): action is PendingAction {\r\n return action.type.endsWith(\"/pending\");\r\n}\r\n\r\nconst reducer = createReducer(initialState, (builder) => {\r\n builder\r\n .addCase(resetAction, () => initialState)\r\n // matcher can be defined outside as a type predicate function\r\n .addMatcher(isPendingAction, (state, action) => {\r\n state[action.meta.requestId] = \"pending\";\r\n })\r\n .addMatcher(\r\n // matcher can be defined inline as a type predicate function\r\n (action): action is RejectedAction => action.type.endsWith(\"/rejected\"),\r\n (state, action) => {\r\n state[action.meta.requestId] = \"rejected\";\r\n }\r\n )\r\n // matcher can just return boolean and the matcher can receive a generic argument\r\n .addMatcher<FulfilledAction>(\r\n (action) => action.type.endsWith(\"/fulfilled\"),\r\n (state, action) => {\r\n state[action.meta.requestId] = \"fulfilled\";\r\n }\r\n );\r\n});\r\n```\r\n */\r\n addMatcher<A>(\r\n matcher: TypeGuard<A> | ((action: any) => boolean),\r\n reducer: CaseReducer<State, A extends AnyAction ? A : A & AnyAction>\r\n ): Omit<ActionReducerMapBuilder<State>, 'addCase'>\r\n\r\n /**\r\n * Adds a \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n * @param reducer - The fallback \"default case\" reducer function.\r\n *\r\n * @example\r\n```ts\r\nimport { createReducer } from '@reduxjs/toolkit'\r\nconst initialState = { otherActions: 0 }\r\nconst reducer = createReducer(initialState, builder => {\r\n builder\r\n // .addCase(...)\r\n // .addMatcher(...)\r\n .addDefaultCase((state, action) => {\r\n state.otherActions++\r\n })\r\n})\r\n```\r\n */\r\n addDefaultCase(reducer: CaseReducer<State, AnyAction>): {}\r\n}\r\n\r\nexport function executeReducerBuilderCallback<S>(\r\n builderCallback: (builder: ActionReducerMapBuilder<S>) => void\r\n): [\r\n CaseReducers<S, any>,\r\n ActionMatcherDescriptionCollection<S>,\r\n CaseReducer<S, AnyAction> | undefined\r\n] {\r\n const actionsMap: CaseReducers<S, any> = {}\r\n const actionMatchers: ActionMatcherDescriptionCollection<S> = []\r\n let defaultCaseReducer: CaseReducer<S, AnyAction> | undefined\r\n const builder = {\r\n addCase(\r\n typeOrActionCreator: string | TypedActionCreator<any>,\r\n reducer: CaseReducer<S>\r\n ) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n /*\r\n to keep the definition by the user in line with actual behavior,\r\n we enforce `addCase` to always be called before calling `addMatcher`\r\n as matching cases take precedence over matchers\r\n */\r\n if (actionMatchers.length > 0) {\r\n throw new Error(\r\n '`builder.addCase` should only be called before calling `builder.addMatcher`'\r\n )\r\n }\r\n if (defaultCaseReducer) {\r\n throw new Error(\r\n '`builder.addCase` should only be called before calling `builder.addDefaultCase`'\r\n )\r\n }\r\n }\r\n const type =\r\n typeof typeOrActionCreator === 'string'\r\n ? typeOrActionCreator\r\n : typeOrActionCreator.type\r\n if (!type) {\r\n throw new Error(\r\n '`builder.addCase` cannot be called with an empty action type'\r\n )\r\n }\r\n if (type in actionsMap) {\r\n throw new Error(\r\n '`builder.addCase` cannot be called with two reducers for the same action type'\r\n )\r\n }\r\n actionsMap[type] = reducer\r\n return builder\r\n },\r\n addMatcher<A>(\r\n matcher: TypeGuard<A>,\r\n reducer: CaseReducer<S, A extends AnyAction ? A : A & AnyAction>\r\n ) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (defaultCaseReducer) {\r\n throw new Error(\r\n '`builder.addMatcher` should only be called before calling `builder.addDefaultCase`'\r\n )\r\n }\r\n }\r\n actionMatchers.push({ matcher, reducer })\r\n return builder\r\n },\r\n addDefaultCase(reducer: CaseReducer<S, AnyAction>) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (defaultCaseReducer) {\r\n throw new Error('`builder.addDefaultCase` can only be called once')\r\n }\r\n }\r\n defaultCaseReducer = reducer\r\n return builder\r\n },\r\n }\r\n builderCallback(builder)\r\n return [actionsMap, actionMatchers, defaultCaseReducer]\r\n}\r\n","import type { AnyAction, Reducer } from 'redux'\r\nimport { createNextState } from '.'\r\nimport type {\r\n ActionCreatorWithoutPayload,\r\n PayloadAction,\r\n PayloadActionCreator,\r\n PrepareAction,\r\n _ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type {\r\n CaseReducer,\r\n CaseReducers,\r\n ReducerWithInitialState,\r\n} from './createReducer'\r\nimport { createReducer, NotFunction } from './createReducer'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { freezeDraftable } from './utils'\r\n\r\nlet hasWarnedAboutObjectNotation = false\r\n\r\n/**\r\n * An action creator attached to a slice.\r\n *\r\n * @deprecated please use PayloadActionCreator directly\r\n *\r\n * @public\r\n */\r\nexport type SliceActionCreator<P> = PayloadActionCreator<P>\r\n\r\n/**\r\n * The return value of `createSlice`\r\n *\r\n * @public\r\n */\r\nexport interface Slice<\r\n State = any,\r\n CaseReducers extends SliceCaseReducers<State> = SliceCaseReducers<State>,\r\n Name extends string = string\r\n> {\r\n /**\r\n * The slice name.\r\n */\r\n name: Name\r\n\r\n /**\r\n * The slice's reducer.\r\n */\r\n reducer: Reducer<State>\r\n\r\n /**\r\n * Action creators for the types of actions that are handled by the slice\r\n * reducer.\r\n */\r\n actions: CaseReducerActions<CaseReducers, Name>\r\n\r\n /**\r\n * The individual case reducer functions that were passed in the `reducers` parameter.\r\n * This enables reuse and testing if they were defined inline when calling `createSlice`.\r\n */\r\n caseReducers: SliceDefinedCaseReducers<CaseReducers>\r\n\r\n /**\r\n * Provides access to the initial state value given to the slice.\r\n * If a lazy state initializer was provided, it will be called and a fresh value returned.\r\n */\r\n getInitialState: () => State\r\n}\r\n\r\n/**\r\n * Options for `createSlice()`.\r\n *\r\n * @public\r\n */\r\nexport interface CreateSliceOptions<\r\n State = any,\r\n CR extends SliceCaseReducers<State> = SliceCaseReducers<State>,\r\n Name extends string = string\r\n> {\r\n /**\r\n * The slice's name. Used to namespace the generated action types.\r\n */\r\n name: Name\r\n\r\n /**\r\n * The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n */\r\n initialState: State | (() => State)\r\n\r\n /**\r\n * A mapping from action types to action-type-specific *case reducer*\r\n * functions. For every action type, a matching action creator will be\r\n * generated using `createAction()`.\r\n */\r\n reducers: ValidateSliceCaseReducers<State, CR>\r\n\r\n /**\r\n * A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * \r\n * Alternatively, a mapping from action types to action-type-specific *case reducer*\r\n * functions. These reducers should have existing action types used\r\n * as the keys, and action creators will _not_ be generated.\r\n * \r\n * @example\r\n```ts\r\nimport { createAction, createSlice, Action, AnyAction } from '@reduxjs/toolkit'\r\nconst incrementBy = createAction<number>('incrementBy')\r\nconst decrement = createAction('decrement')\r\n\r\ninterface RejectedAction extends Action {\r\n error: Error\r\n}\r\n\r\nfunction isRejectedAction(action: AnyAction): action is RejectedAction {\r\n return action.type.endsWith('rejected')\r\n}\r\n\r\ncreateSlice({\r\n name: 'counter',\r\n initialState: 0,\r\n reducers: {},\r\n extraReducers: builder => {\r\n builder\r\n .addCase(incrementBy, (state, action) => {\r\n // action is inferred correctly here if using TS\r\n })\r\n // You can chain calls, or have separate `builder.addCase()` lines each time\r\n .addCase(decrement, (state, action) => {})\r\n // You can match a range of action types\r\n .addMatcher(\r\n isRejectedAction,\r\n // `action` will be inferred as a RejectedAction due to isRejectedAction being defined as a type guard\r\n (state, action) => {}\r\n )\r\n // and provide a default case if no other handlers matched\r\n .addDefaultCase((state, action) => {})\r\n }\r\n})\r\n```\r\n */\r\n extraReducers?:\r\n | CaseReducers<NoInfer<State>, any>\r\n | ((builder: ActionReducerMapBuilder<NoInfer<State>>) => void)\r\n}\r\n\r\n/**\r\n * A CaseReducer with a `prepare` method.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerWithPrepare<State, Action extends PayloadAction> = {\r\n reducer: CaseReducer<State, Action>\r\n prepare: PrepareAction<Action['payload']>\r\n}\r\n\r\n/**\r\n * The type describing a slice's `reducers` option.\r\n *\r\n * @public\r\n */\r\nexport type SliceCaseReducers<State> = {\r\n [K: string]:\r\n | CaseReducer<State, PayloadAction<any>>\r\n | CaseReducerWithPrepare<State, PayloadAction<any, string, any, any>>\r\n}\r\n\r\ntype SliceActionType<\r\n SliceName extends string,\r\n ActionName extends keyof any\r\n> = ActionName extends string | number ? `${SliceName}/${ActionName}` : string\r\n\r\n/**\r\n * Derives the slice's `actions` property from the `reducers` options\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerActions<\r\n CaseReducers extends SliceCaseReducers<any>,\r\n SliceName extends string\r\n> = {\r\n [Type in keyof CaseReducers]: CaseReducers[Type] extends { prepare: any }\r\n ? ActionCreatorForCaseReducerWithPrepare<\r\n CaseReducers[Type],\r\n SliceActionType<SliceName, Type>\r\n >\r\n : ActionCreatorForCaseReducer<\r\n CaseReducers[Type],\r\n SliceActionType<SliceName, Type>\r\n >\r\n}\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducerWithPrepare`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducerWithPrepare<\r\n CR extends { prepare: any },\r\n Type extends string\r\n> = _ActionCreatorWithPreparedPayload<CR['prepare'], Type>\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducer`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducer<CR, Type extends string> = CR extends (\r\n state: any,\r\n action: infer Action\r\n) => any\r\n ? Action extends { payload: infer P }\r\n ? PayloadActionCreator<P, Type>\r\n : ActionCreatorWithoutPayload<Type>\r\n : ActionCreatorWithoutPayload<Type>\r\n\r\n/**\r\n * Extracts the CaseReducers out of a `reducers` object, even if they are\r\n * tested into a `CaseReducerWithPrepare`.\r\n *\r\n * @internal\r\n */\r\ntype SliceDefinedCaseReducers<CaseReducers extends SliceCaseReducers<any>> = {\r\n [Type in keyof CaseReducers]: CaseReducers[Type] extends {\r\n reducer: infer Reducer\r\n }\r\n ? Reducer\r\n : CaseReducers[Type]\r\n}\r\n\r\n/**\r\n * Used on a SliceCaseReducers object.\r\n * Ensures that if a CaseReducer is a `CaseReducerWithPrepare`, that\r\n * the `reducer` and the `prepare` function use the same type of `payload`.\r\n *\r\n * Might do additional such checks in the future.\r\n *\r\n * This type is only ever useful if you want to write your own wrapper around\r\n * `createSlice`. Please don't use it otherwise!\r\n *\r\n * @public\r\n */\r\nexport type ValidateSliceCaseReducers<\r\n S,\r\n ACR extends SliceCaseReducers<S>\r\n> = ACR &\r\n {\r\n [T in keyof ACR]: ACR[T] extends {\r\n reducer(s: S, action?: infer A): any\r\n }\r\n ? {\r\n prepare(...a: never[]): Omit<A, 'type'>\r\n }\r\n : {}\r\n }\r\n\r\nfunction getType(slice: string, actionKey: string): string {\r\n return `${slice}/${actionKey}`\r\n}\r\n\r\n/**\r\n * A function that accepts an initial state, an object full of reducer\r\n * functions, and a \"slice name\", and automatically generates\r\n * action creators and action types that correspond to the\r\n * reducers and state.\r\n *\r\n * The `reducer` argument is passed to `createReducer()`.\r\n *\r\n * @public\r\n */\r\nexport function createSlice<\r\n State,\r\n CaseReducers extends SliceCaseReducers<State>,\r\n Name extends string = string\r\n>(\r\n options: CreateSliceOptions<State, CaseReducers, Name>\r\n): Slice<State, CaseReducers, Name> {\r\n const { name } = options\r\n if (!name) {\r\n throw new Error('`name` is a required option for createSlice')\r\n }\r\n\r\n if (\r\n typeof process !== 'undefined' &&\r\n process.env.NODE_ENV === 'development'\r\n ) {\r\n if (options.initialState === undefined) {\r\n console.error(\r\n 'You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`'\r\n )\r\n }\r\n }\r\n\r\n const initialState =\r\n typeof options.initialState == 'function'\r\n ? options.initialState\r\n : freezeDraftable(options.initialState)\r\n\r\n const reducers = options.reducers || {}\r\n\r\n const reducerNames = Object.keys(reducers)\r\n\r\n const sliceCaseReducersByName: Record<string, CaseReducer> = {}\r\n const sliceCaseReducersByType: Record<string, CaseReducer> = {}\r\n const actionCreators: Record<string, Function> = {}\r\n\r\n reducerNames.forEach((reducerName) => {\r\n const maybeReducerWithPrepare = reducers[reducerName]\r\n const type = getType(name, reducerName)\r\n\r\n let caseReducer: CaseReducer<State, any>\r\n let prepareCallback: PrepareAction<any> | undefined\r\n\r\n if ('reducer' in maybeReducerWithPrepare) {\r\n caseReducer = maybeReducerWithPrepare.reducer\r\n prepareCallback = maybeReducerWithPrepare.prepare\r\n } else {\r\n caseReducer = maybeReducerWithPrepare\r\n }\r\n\r\n sliceCaseReducersByName[reducerName] = caseReducer\r\n sliceCaseReducersByType[type] = caseReducer\r\n actionCreators[reducerName] = prepareCallback\r\n ? createAction(type, prepareCallback)\r\n : createAction(type)\r\n })\r\n\r\n function buildReducer() {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (typeof options.extraReducers === 'object') {\r\n if (!hasWarnedAboutObjectNotation) {\r\n hasWarnedAboutObjectNotation = true\r\n console.warn(\r\n \"The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\"\r\n )\r\n }\r\n }\r\n }\r\n const [\r\n extraReducers = {},\r\n actionMatchers = [],\r\n defaultCaseReducer = undefined,\r\n ] =\r\n typeof options.extraReducers === 'function'\r\n ? executeReducerBuilderCallback(options.extraReducers)\r\n : [options.extraReducers]\r\n\r\n const finalCaseReducers = { ...extraReducers, ...sliceCaseReducersByType }\r\n\r\n return createReducer(initialState, (builder) => {\r\n for (let key in finalCaseReducers) {\r\n builder.addCase(key, finalCaseReducers[key] as CaseReducer<any>)\r\n }\r\n for (let m of actionMatchers) {\r\n builder.addMatcher(m.matcher, m.reducer)\r\n }\r\n if (defaultCaseReducer) {\r\n builder.addDefaultCase(defaultCaseReducer)\r\n }\r\n })\r\n }\r\n\r\n let _reducer: ReducerWithInitialState<State>\r\n\r\n return {\r\n name,\r\n reducer(state, action) {\r\n if (!_reducer) _reducer = buildReducer()\r\n\r\n return _reducer(state, action)\r\n },\r\n actions: actionCreators as any,\r\n caseReducers: sliceCaseReducersByName as any,\r\n getInitialState() {\r\n if (!_reducer) _reducer = buildReducer()\r\n\r\n return _reducer.getInitialState()\r\n },\r\n }\r\n}\r\n","import type { Draft } from 'immer'\r\nimport createNextState, { isDraft, isDraftable } from 'immer'\r\nimport type { AnyAction, Action, Reducer } from 'redux'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { freezeDraftable } from './utils'\r\n\r\n/**\r\n * Defines a mapping from action types to corresponding action object shapes.\r\n *\r\n * @deprecated This should not be used manually - it is only used for internal\r\n * inference purposes and should not have any further value.\r\n * It might be removed in the future.\r\n * @public\r\n */\r\nexport type Actions<T extends keyof any = string> = Record<T, Action>\r\n\r\n/**\r\n * @deprecated use `TypeGuard` instead\r\n */\r\nexport interface ActionMatcher<A extends AnyAction> {\r\n (action: AnyAction): action is A\r\n}\r\n\r\nexport type ActionMatcherDescription<S, A extends AnyAction> = {\r\n matcher: ActionMatcher<A>\r\n reducer: CaseReducer<S, NoInfer<A>>\r\n}\r\n\r\nexport type ReadonlyActionMatcherDescriptionCollection<S> = ReadonlyArray<\r\n ActionMatcherDescription<S, any>\r\n>\r\n\r\nexport type ActionMatcherDescriptionCollection<S> = Array<\r\n ActionMatcherDescription<S, any>\r\n>\r\n\r\n/**\r\n * A *case reducer* is a reducer function for a specific action type. Case\r\n * reducers can be composed to full reducers using `createReducer()`.\r\n *\r\n * Unlike a normal Redux reducer, a case reducer is never called with an\r\n * `undefined` state to determine the initial state. Instead, the initial\r\n * state is explicitly specified as an argument to `createReducer()`.\r\n *\r\n * In addition, a case reducer can choose to mutate the passed-in `state`\r\n * value directly instead of returning a new state. This does not actually\r\n * cause the store state to be mutated directly; instead, thanks to\r\n * [immer](https://github.com/mweststrate/immer), the mutations are\r\n * translated to copy operations that result in a new state.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducer<S = any, A extends Action = AnyAction> = (\r\n state: Draft<S>,\r\n action: A\r\n) => NoInfer<S> | void | Draft<NoInfer<S>>\r\n\r\n/**\r\n * A mapping from action types to case reducers for `createReducer()`.\r\n *\r\n * @deprecated This should not be used manually - it is only used\r\n * for internal inference purposes and using it manually\r\n * would lead to type erasure.\r\n * It might be removed in the future.\r\n * @public\r\n */\r\nexport type CaseReducers<S, AS extends Actions> = {\r\n [T in keyof AS]: AS[T] extends Action ? CaseReducer<S, AS[T]> : void\r\n}\r\n\r\nexport type NotFunction<T> = T extends Function ? never : T\r\n\r\nfunction isStateFunction<S>(x: unknown): x is () => S {\r\n return typeof x === 'function'\r\n}\r\n\r\nexport type ReducerWithInitialState<S extends NotFunction<any>> = Reducer<S> & {\r\n getInitialState: () => S\r\n}\r\n\r\nlet hasWarnedAboutObjectNotation = false\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * @remarks\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n *\r\n * @overloadSummary\r\n * This overload accepts a callback function that receives a `builder` object as its argument.\r\n * That builder provides `addCase`, `addMatcher` and `addDefaultCase` functions that may be\r\n * called to define what actions this reducer will handle.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param builderCallback - `(builder: Builder) => void` A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * @example\r\n```ts\r\nimport {\r\n createAction,\r\n createReducer,\r\n AnyAction,\r\n PayloadAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\nconst increment = createAction<number>(\"increment\");\r\nconst decrement = createAction<number>(\"decrement\");\r\n\r\nfunction isActionWithNumberPayload(\r\n action: AnyAction\r\n): action is PayloadAction<number> {\r\n return typeof action.payload === \"number\";\r\n}\r\n\r\nconst reducer = createReducer(\r\n {\r\n counter: 0,\r\n sumOfNumberPayloads: 0,\r\n unhandledActions: 0,\r\n },\r\n (builder) => {\r\n builder\r\n .addCase(increment, (state, action) => {\r\n // action is inferred correctly here\r\n state.counter += action.payload;\r\n })\r\n // You can chain calls, or have separate `builder.addCase()` lines each time\r\n .addCase(decrement, (state, action) => {\r\n state.counter -= action.payload;\r\n })\r\n // You can apply a \"matcher function\" to incoming actions\r\n .addMatcher(isActionWithNumberPayload, (state, action) => {})\r\n // and provide a default case if no other handlers matched\r\n .addDefaultCase((state, action) => {});\r\n }\r\n);\r\n```\r\n * @public\r\n */\r\nexport function createReducer<S extends NotFunction<any>>(\r\n initialState: S | (() => S),\r\n builderCallback: (builder: ActionReducerMapBuilder<S>) => void\r\n): ReducerWithInitialState<S>\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n * \r\n * @overloadSummary\r\n * This overload accepts an object where the keys are string action types, and the values\r\n * are case reducer functions to handle those action types.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param actionsMap - An object mapping from action types to _case reducers_, each of which handles one specific action type.\r\n * @param actionMatchers - An array of matcher definitions in the form `{matcher, reducer}`.\r\n * All matching reducers will be executed in order, independently if a case reducer matched or not.\r\n * @param defaultCaseReducer - A \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n *\r\n * @example\r\n```js\r\nconst counterReducer = createReducer(0, {\r\n increment: (state, action) => state + action.payload,\r\n decrement: (state, action) => state - action.payload\r\n})\r\n\r\n// Alternately, use a \"lazy initializer\" to provide the initial state\r\n// (works with either form of createReducer)\r\nconst initialState = () => 0\r\nconst counterReducer = createReducer(initialState, {\r\n increment: (state, action) => state + action.payload,\r\n decrement: (state, action) => state - action.payload\r\n})\r\n```\r\n \r\n * Action creators that were generated using [`createAction`](./createAction) may be used directly as the keys here, using computed property syntax:\r\n\r\n```js\r\nconst increment = createAction('increment')\r\nconst decrement = createAction('decrement')\r\n\r\nconst counterReducer = createReducer(0, {\r\n [increment]: (state, action) => state + action.payload,\r\n [decrement.type]: (state, action) => state - action.payload\r\n})\r\n```\r\n * @public\r\n */\r\nexport function createReducer<\r\n S extends NotFunction<any>,\r\n CR extends CaseReducers<S, any> = CaseReducers<S, any>\r\n>(\r\n initialState: S | (() => S),\r\n actionsMap: CR,\r\n actionMatchers?: ActionMatcherDescriptionCollection<S>,\r\n defaultCaseReducer?: CaseReducer<S>\r\n): ReducerWithInitialState<S>\r\n\r\nexport function createReducer<S extends NotFunction<any>>(\r\n initialState: S | (() => S),\r\n mapOrBuilderCallback:\r\n | CaseReducers<S, any>\r\n | ((builder: ActionReducerMapBuilder<S>) => void),\r\n actionMatchers: ReadonlyActionMatcherDescriptionCollection<S> = [],\r\n defaultCaseReducer?: CaseReducer<S>\r\n): ReducerWithInitialState<S> {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (typeof mapOrBuilderCallback === 'object') {\r\n if (!hasWarnedAboutObjectNotation) {\r\n hasWarnedAboutObjectNotation = true\r\n console.warn(\r\n \"The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\"\r\n )\r\n }\r\n }\r\n }\r\n\r\n let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] =\r\n typeof mapOrBuilderCallback === 'function'\r\n ? executeReducerBuilderCallback(mapOrBuilderCallback)\r\n : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer]\r\n\r\n // Ensure the initial state gets frozen either way (if draftable)\r\n let getInitialState: () => S\r\n if (isStateFunction(initialState)) {\r\n getInitialState = () => freezeDraftable(initialState())\r\n } else {\r\n const frozenInitialState = freezeDraftable(initialState)\r\n getInitialState = () => frozenInitialState\r\n }\r\n\r\n function reducer(state = getInitialState(), action: any): S {\r\n let caseReducers = [\r\n actionsMap[action.type],\r\n ...finalActionMatchers\r\n .filter(({ matcher }) => matcher(action))\r\n .map(({ reducer }) => reducer),\r\n ]\r\n if (caseReducers.filter((cr) => !!cr).length === 0) {\r\n caseReducers = [finalDefaultCaseReducer]\r\n }\r\n\r\n return caseReducers.reduce((previousState, caseReducer): S => {\r\n if (caseReducer) {\r\n if (isDraft(previousState)) {\r\n // If it's already a draft, we must already be inside a `createNextState` call,\r\n // likely because this is being wrapped in `createReducer`, `createSlice`, or nested\r\n // inside an existing draft. It's safe to just pass the draft to the mutator.\r\n const draft = previousState as Draft<S> // We can assume this is already a draft\r\n const result = caseReducer(draft, action)\r\n\r\n if (result === undefined) {\r\n return previousState\r\n }\r\n\r\n return result as S\r\n } else if (!isDraftable(previousState)) {\r\n // If state is not draftable (ex: a primitive, such as 0), we want to directly\r\n // return the caseReducer func and not wrap it with produce.\r\n const result = caseReducer(previousState as any, action)\r\n\r\n if (result === undefined) {\r\n if (previousState === null) {\r\n return previousState\r\n }\r\n throw Error(\r\n 'A case reducer on a non-draftable value must not return undefined'\r\n )\r\n }\r\n\r\n return result as S\r\n } else {\r\n // @ts-ignore createNextState() produces an Immutable<Draft<S>> rather\r\n // than an Immutable<S>, and TypeScript cannot find out how to reconcile\r\n // these two types.\r\n return createNextState(previousState, (draft: Draft<S>) => {\r\n return caseReducer(draft, action)\r\n })\r\n }\r\n }\r\n\r\n return previousState\r\n }, state)\r\n }\r\n\r\n reducer.getInitialState = getInitialState\r\n\r\n return reducer as ReducerWithInitialState<S>\r\n}\r\n","// Borrowed from https://github.com/ai/nanoid/blob/3.0.2/non-secure/index.js\r\n// This alphabet uses `A-Za-z0-9_-` symbols. A genetic algorithm helped\r\n// optimize the gzip compression for this alphabet.\r\nlet urlAlphabet =\r\n 'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW'\r\n\r\n/**\r\n *\r\n * @public\r\n */\r\nexport let nanoid = (size = 21) => {\r\n let id = ''\r\n // A compact alternative for `for (var i = 0; i < step; i++)`.\r\n let i = size\r\n while (i--) {\r\n // `| 0` is more compact and faster than `Math.floor()`.\r\n id += urlAlphabet[(Math.random() * 64) | 0]\r\n }\r\n return id\r\n}\r\n","import type { Dispatch, AnyAction } from 'redux'\r\nimport type {\r\n PayloadAction,\r\n ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport type { FallbackIfUnknown, Id, IsAny, IsUnknown } from './tsHelpers'\r\nimport { nanoid } from './nanoid'\r\n\r\n// @ts-ignore we need the import of these types due to a bundling issue.\r\ntype _Keep = PayloadAction | ActionCreatorWithPreparedPayload<any, unknown>\r\n\r\nexport type BaseThunkAPI<\r\n S,\r\n E,\r\n D extends Dispatch = Dispatch,\r\n RejectedValue = unknown,\r\n RejectedMeta = unknown,\r\n FulfilledMeta = unknown\r\n> = {\r\n dispatch: D\r\n getState: () => S\r\n extra: E\r\n requestId: string\r\n signal: AbortSignal\r\n abort: (reason?: string) => void\r\n rejectWithValue: IsUnknown<\r\n RejectedMeta,\r\n (value: RejectedValue) => RejectWithValue<RejectedValue, RejectedMeta>,\r\n (\r\n value: RejectedValue,\r\n meta: RejectedMeta\r\n ) => RejectWithValue<RejectedValue, RejectedMeta>\r\n >\r\n fulfillWithValue: IsUnknown<\r\n FulfilledMeta,\r\n <FulfilledValue>(value: FulfilledValue) => FulfilledValue,\r\n <FulfilledValue>(\r\n value: FulfilledValue,\r\n meta: FulfilledMeta\r\n ) => FulfillWithMeta<FulfilledValue, FulfilledMeta>\r\n >\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface SerializedError {\r\n name?: string\r\n message?: string\r\n stack?: string\r\n code?: string\r\n}\r\n\r\nconst commonProperties: Array<keyof SerializedError> = [\r\n 'name',\r\n 'message',\r\n 'stack',\r\n 'code',\r\n]\r\n\r\nclass RejectWithValue<Payload, RejectedMeta> {\r\n /*\r\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\r\n does not exist at runtime\r\n */\r\n private readonly _type!: 'RejectWithValue'\r\n constructor(\r\n public readonly payload: Payload,\r\n public readonly meta: RejectedMeta\r\n ) {}\r\n}\r\n\r\nclass FulfillWithMeta<Payload, FulfilledMeta> {\r\n /*\r\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\r\n does not exist at runtime\r\n */\r\n private readonly _type!: 'FulfillWithMeta'\r\n constructor(\r\n public readonly payload: Payload,\r\n public readonly meta: FulfilledMeta\r\n ) {}\r\n}\r\n\r\n/**\r\n * Serializes an error into a plain object.\r\n * Reworked from https://github.com/sindresorhus/serialize-error\r\n *\r\n * @public\r\n */\r\nexport const miniSerializeError = (value: any): SerializedError => {\r\n if (typeof value === 'object' && value !== null) {\r\n const simpleError: SerializedError = {}\r\n for (const property of commonProperties) {\r\n if (typeof value[property] === 'string') {\r\n simpleError[property] = value[property]\r\n }\r\n }\r\n\r\n return simpleError\r\n }\r\n\r\n return { message: String(value) }\r\n}\r\n\r\ntype AsyncThunkConfig = {\r\n state?: unknown\r\n dispatch?: Dispatch\r\n extra?: unknown\r\n rejectValue?: unknown\r\n serializedErrorType?: unknown\r\n pendingMeta?: unknown\r\n fulfilledMeta?: unknown\r\n rejectedMeta?: unknown\r\n}\r\n\r\ntype GetState<ThunkApiConfig> = ThunkApiConfig extends {\r\n state: infer State\r\n}\r\n ? State\r\n : unknown\r\ntype GetExtra<ThunkApiConfig> = ThunkApiConfig extends { extra: infer Extra }\r\n ? Extra\r\n : unknown\r\ntype GetDispatch<ThunkApiConfig> = ThunkApiConfig extends {\r\n dispatch: infer Dispatch\r\n}\r\n ? FallbackIfUnknown<\r\n Dispatch,\r\n ThunkDispatch<\r\n GetState<ThunkApiConfig>,\r\n GetExtra<ThunkApiConfig>,\r\n AnyAction\r\n >\r\n >\r\n : ThunkDispatch<GetState<ThunkApiConfig>, GetExtra<ThunkApiConfig>, AnyAction>\r\n\r\nexport type GetThunkAPI<ThunkApiConfig> = BaseThunkAPI<\r\n GetState<ThunkApiConfig>,\r\n GetExtra<ThunkApiConfig>,\r\n GetDispatch<ThunkApiConfig>,\r\n GetRejectValue<ThunkApiConfig>,\r\n GetRejectedMeta<ThunkApiConfig>,\r\n GetFulfilledMeta<ThunkApiConfig>\r\n>\r\n\r\ntype GetRejectValue<ThunkApiConfig> = ThunkApiConfig extends {\r\n rejectValue: infer RejectValue\r\n}\r\n ? RejectValue\r\n : unknown\r\n\r\ntype GetPendingMeta<ThunkApiConfig> = ThunkApiConfig extends {\r\n pendingMeta: infer PendingMeta\r\n}\r\n ? PendingMeta\r\n : unknown\r\n\r\ntype GetFulfilledMeta<ThunkApiConfig> = ThunkApiConfig extends {\r\n fulfilledMeta: infer FulfilledMeta\r\n}\r\n ? FulfilledMeta\r\n : unknown\r\n\r\ntype GetRejectedMeta<ThunkApiConfig> = ThunkApiConfig extends {\r\n rejectedMeta: infer RejectedMeta\r\n}\r\n ? RejectedMeta\r\n : unknown\r\n\r\ntype GetSerializedErrorType<ThunkApiConfig> = ThunkApiConfig extends {\r\n serializedErrorType: infer GetSerializedErrorType\r\n}\r\n ? GetSerializedErrorType\r\n : SerializedError\r\n\r\ntype MaybePromise<T> = T | Promise<T> | (T extends any ? Promise<T> : never)\r\n\r\n/**\r\n * A type describing the return value of the `payloadCreator` argument to `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkPayloadCreatorReturnValue<\r\n Returned,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = MaybePromise<\r\n | IsUnknown<\r\n GetFulfilledMeta<ThunkApiConfig>,\r\n Returned,\r\n FulfillWithMeta<Returned, GetFulfilledMeta<ThunkApiConfig>>\r\n >\r\n | RejectWithValue<\r\n GetRejectValue<ThunkApiConfig>,\r\n GetRejectedMeta<ThunkApiConfig>\r\n >\r\n>\r\n/**\r\n * A type describing the `payloadCreator` argument to `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg = void,\r\n ThunkApiConfig extends AsyncThunkConfig = {}\r\n> = (\r\n arg: ThunkArg,\r\n thunkAPI: GetThunkAPI<ThunkApiConfig>\r\n) => AsyncThunkPayloadCreatorReturnValue<Returned, ThunkApiConfig>\r\n\r\n/**\r\n * A ThunkAction created by `createAsyncThunk`.\r\n * Dispatching it returns a Promise for either a\r\n * fulfilled or rejected action.\r\n * Also, the returned value contains an `abort()` method\r\n * that allows the asyncAction to be cancelled from the outside.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkAction<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = (\r\n dispatch: GetDispatch<ThunkApiConfig>,\r\n getState: () => GetState<ThunkApiConfig>,\r\n extra: GetExtra<ThunkApiConfig>\r\n) => Promise<\r\n | ReturnType<AsyncThunkFulfilledActionCreator<Returned, ThunkArg>>\r\n | ReturnType<AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig>>\r\n> & {\r\n abort: (reason?: string) => void\r\n requestId: string\r\n arg: ThunkArg\r\n unwrap: () => Promise<Returned>\r\n}\r\n\r\ntype AsyncThunkActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = IsAny<\r\n ThunkArg,\r\n // any handling\r\n (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>,\r\n // unknown handling\r\n unknown extends ThunkArg\r\n ? (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> // argument not specified or specified as void or undefined\r\n : [ThunkArg] extends [void] | [undefined]\r\n ? () => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> // argument contains void\r\n : [void] extends [ThunkArg] // make optional\r\n ? (arg?: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> // argument contains undefined\r\n : [undefined] extends [ThunkArg]\r\n ? WithStrictNullChecks<\r\n // with strict nullChecks: make optional\r\n (\r\n arg?: ThunkArg\r\n ) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>,\r\n // without strict null checks this will match everything, so don't make it optional\r\n (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>\r\n > // default case: normal argument\r\n : (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>\r\n>\r\n\r\n/**\r\n * Options object for `createAsyncThunk`.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkOptions<\r\n ThunkArg = void,\r\n ThunkApiConfig extends AsyncThunkConfig = {}\r\n> = {\r\n /**\r\n * A method to control whether the asyncThunk should be executed. Has access to the\r\n * `arg`, `api.getState()` and `api.extra` arguments.\r\n *\r\n * @returns `false` if it should be skipped\r\n */\r\n condition?(\r\n arg: ThunkArg,\r\n api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>\r\n ): MaybePromise<boolean | undefined>\r\n /**\r\n * If `condition` returns `false`, the asyncThunk will be skipped.\r\n * This option allows you to control whether a `rejected` action with `meta.condition == false`\r\n * will be dispatched or not.\r\n *\r\n * @default `false`\r\n */\r\n dispatchConditionRejection?: boolean\r\n\r\n serializeError?: (x: unknown) => GetSerializedErrorType<ThunkApiConfig>\r\n\r\n /**\r\n * A function to use when generating the `requestId` for the request sequence.\r\n *\r\n * @default `nanoid`\r\n */\r\n idGenerator?: (arg: ThunkArg) => string\r\n} & IsUnknown<\r\n GetPendingMeta<ThunkApiConfig>,\r\n {\r\n /**\r\n * A method to generate additional properties to be added to `meta` of the pending action.\r\n *\r\n * Using this optional overload will not modify the types correctly, this overload is only in place to support JavaScript users.\r\n * Please use the `ThunkApiConfig` parameter `pendingMeta` to get access to a correctly typed overload\r\n */\r\n getPendingMeta?(\r\n base: {\r\n arg: ThunkArg\r\n requestId: string\r\n },\r\n api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>\r\n ): GetPendingMeta<ThunkApiConfig>\r\n },\r\n {\r\n /**\r\n * A method to generate additional properties to be added to `meta` of the pending action.\r\n */\r\n getPendingMeta(\r\n base: {\r\n arg: ThunkArg\r\n requestId: string\r\n },\r\n api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>\r\n ): GetPendingMeta<ThunkApiConfig>\r\n }\r\n>\r\n\r\nexport type AsyncThunkPendingActionCreator<\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [string, ThunkArg, GetPendingMeta<ThunkApiConfig>?],\r\n undefined,\r\n string,\r\n never,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'pending'\r\n } & GetPendingMeta<ThunkApiConfig>\r\n>\r\n\r\nexport type AsyncThunkRejectedActionCreator<\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [\r\n Error | null,\r\n string,\r\n ThunkArg,\r\n GetRejectValue<ThunkApiConfig>?,\r\n GetRejectedMeta<ThunkApiConfig>?\r\n ],\r\n GetRejectValue<ThunkApiConfig> | undefined,\r\n string,\r\n GetSerializedErrorType<ThunkApiConfig>,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'rejected'\r\n aborted: boolean\r\n condition: boolean\r\n } & (\r\n | ({ rejectedWithValue: false } & {\r\n [K in keyof GetRejectedMeta<ThunkApiConfig>]?: undefined\r\n })\r\n | ({ rejectedWithValue: true } & GetRejectedMeta<ThunkApiConfig>)\r\n )\r\n>\r\n\r\nexport type AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [Returned, string, ThunkArg, GetFulfilledMeta<ThunkApiConfig>?],\r\n Returned,\r\n string,\r\n never,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'fulfilled'\r\n } & GetFulfilledMeta<ThunkApiConfig>\r\n>\r\n\r\n/**\r\n * A type describing the return value of `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = AsyncThunkActionCreator<Returned, ThunkArg, ThunkApiConfig> & {\r\n pending: AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig>\r\n rejected: AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig>\r\n fulfilled: AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >\r\n typePrefix: string\r\n}\r\n\r\ntype OverrideThunkApiConfigs<OldConfig, NewConfig> = Id<\r\n NewConfig & Omit<OldConfig, keyof NewConfig>\r\n>\r\n\r\ntype CreateAsyncThunk<CurriedThunkApiConfig extends AsyncThunkConfig> = {\r\n /**\r\n *\r\n * @param typePrefix\r\n * @param payloadCreator\r\n * @param options\r\n *\r\n * @public\r\n */\r\n // separate signature without `AsyncThunkConfig` for better inference\r\n <Returned, ThunkArg = void>(\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n CurriedThunkApiConfig\r\n >,\r\n options?: AsyncThunkOptions<ThunkArg, CurriedThunkApiConfig>\r\n ): AsyncThunk<Returned, ThunkArg, CurriedThunkApiConfig>\r\n\r\n /**\r\n *\r\n * @param typePrefix\r\n * @param payloadCreator\r\n * @param options\r\n *\r\n * @public\r\n */\r\n <Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig>(\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>\r\n >,\r\n options?: AsyncThunkOptions<\r\n ThunkArg,\r\n OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>\r\n >\r\n ): AsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>\r\n >\r\n\r\n withTypes<ThunkApiConfig extends AsyncThunkConfig>(): CreateAsyncThunk<\r\n OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>\r\n >\r\n}\r\n\r\nexport const createAsyncThunk = (() => {\r\n function createAsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n >(\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >,\r\n options?: AsyncThunkOptions<ThunkArg, ThunkApiConfig>\r\n ): AsyncThunk<Returned, ThunkArg, ThunkApiConfig> {\r\n type RejectedValue = GetRejectValue<ThunkApiConfig>\r\n type PendingMeta = GetPendingMeta<ThunkApiConfig>\r\n type FulfilledMeta = GetFulfilledMeta<ThunkApiConfig>\r\n type RejectedMeta = GetRejectedMeta<ThunkApiConfig>\r\n\r\n const fulfilled: AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n > = createAction(\r\n typePrefix + '/fulfilled',\r\n (\r\n payload: Returned,\r\n requestId: string,\r\n arg: ThunkArg,\r\n meta?: FulfilledMeta\r\n ) => ({\r\n payload,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n requestStatus: 'fulfilled' as const,\r\n },\r\n })\r\n )\r\n\r\n const pending: AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig> =\r\n createAction(\r\n typePrefix + '/pending',\r\n (requestId: string, arg: ThunkArg, meta?: PendingMeta) => ({\r\n payload: undefined,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n requestStatus: 'pending' as const,\r\n },\r\n })\r\n )\r\n\r\n const rejected: AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig> =\r\n createAction(\r\n typePrefix + '/rejected',\r\n (\r\n error: Error | null,\r\n requestId: string,\r\n arg: ThunkArg,\r\n payload?: RejectedValue,\r\n meta?: RejectedMeta\r\n ) => ({\r\n payload,\r\n error: ((options && options.serializeError) || miniSerializeError)(\r\n error || 'Rejected'\r\n ) as GetSerializedErrorType<ThunkApiConfig>,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n rejectedWithValue: !!payload,\r\n requestStatus: 'rejected' as const,\r\n aborted: error?.name === 'AbortError',\r\n condition: error?.name === 'ConditionError',\r\n },\r\n })\r\n )\r\n\r\n let displayedWarning = false\r\n\r\n const AC =\r\n typeof AbortController !== 'undefined'\r\n ? AbortController\r\n : class implements AbortController {\r\n signal = {\r\n aborted: false,\r\n addEventListener() {},\r\n dispatchEvent() {\r\n return false\r\n },\r\n onabort() {},\r\n removeEventListener() {},\r\n reason: undefined,\r\n throwIfAborted() {},\r\n }\r\n abort() {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!displayedWarning) {\r\n displayedWarning = true\r\n console.info(\r\n `This platform does not implement AbortController. \r\nIf you want to use the AbortController to react to \\`abort\\` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'.`\r\n )\r\n }\r\n }\r\n }\r\n }\r\n\r\n function actionCreator(\r\n arg: ThunkArg\r\n ): AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> {\r\n return (dispatch, getState, extra) => {\r\n const requestId = options?.idGenerator\r\n ? options.idGenerator(arg)\r\n : nanoid()\r\n\r\n const abortController = new AC()\r\n let abortReason: string | undefined\r\n\r\n let started = false\r\n function abort(reason?: string) {\r\n abortReason = reason\r\n abortController.abort()\r\n }\r\n\r\n const promise = (async function () {\r\n let finalAction: ReturnType<typeof fulfilled | typeof rejected>\r\n try {\r\n let conditionResult = options?.condition?.(arg, { getState, extra })\r\n if (isThenable(conditionResult)) {\r\n conditionResult = await conditionResult\r\n }\r\n\r\n if (conditionResult === false || abortController.signal.aborted) {\r\n // eslint-disable-next-line no-throw-literal\r\n throw {\r\n name: 'ConditionError',\r\n message: 'Aborted due to condition callback returning false.',\r\n }\r\n }\r\n started = true\r\n\r\n const abortedPromise = new Promise<never>((_, reject) =>\r\n abortController.signal.addEventListener('abort', () =>\r\n reject({\r\n name: 'AbortError',\r\n message: abortReason || 'Aborted',\r\n })\r\n )\r\n )\r\n dispatch(\r\n pending(\r\n requestId,\r\n arg,\r\n options?.getPendingMeta?.(\r\n { requestId, arg },\r\n { getState, extra }\r\n )\r\n )\r\n )\r\n finalAction = await Promise.race([\r\n abortedPromise,\r\n Promise.resolve(\r\n payloadCreator(arg, {\r\n dispatch,\r\n getState,\r\n extra,\r\n requestId,\r\n signal: abortController.signal,\r\n abort,\r\n rejectWithValue: ((\r\n value: RejectedValue,\r\n meta?: RejectedMeta\r\n ) => {\r\n return new RejectWithValue(value, meta)\r\n }) as any,\r\n fulfillWithValue: ((value: unknown, meta?: FulfilledMeta) => {\r\n return new FulfillWithMeta(value, meta)\r\n }) as any,\r\n })\r\n ).then((result) => {\r\n if (result instanceof RejectWithValue) {\r\n throw result\r\n }\r\n if (result instanceof FulfillWithMeta) {\r\n return fulfilled(result.payload, requestId, arg, result.meta)\r\n }\r\n return fulfilled(result as any, requestId, arg)\r\n }),\r\n ])\r\n } catch (err) {\r\n finalAction =\r\n err instanceof RejectWithValue\r\n ? rejected(null, requestId, arg, err.payload, err.meta)\r\n : rejected(err as any, requestId, arg)\r\n }\r\n // We dispatch the result action _after_ the catch, to avoid having any errors\r\n // here get swallowed by the try/catch block,\r\n // per https://twitter.com/dan_abramov/status/770914221638942720\r\n // and https://github.com/reduxjs/redux-toolkit/blob/e85eb17b39a2118d859f7b7746e0f3fee523e089/docs/tutorials/advanced-tutorial.md#async-error-handling-logic-in-thunks\r\n\r\n const skipDispatch =\r\n options &&\r\n !options.dispatchConditionRejection &&\r\n rejected.match(finalAction) &&\r\n (finalAction as any).meta.condition\r\n\r\n if (!skipDispatch) {\r\n dispatch(finalAction)\r\n }\r\n return finalAction\r\n })()\r\n return Object.assign(promise as Promise<any>, {\r\n abort,\r\n requestId,\r\n arg,\r\n unwrap() {\r\n return promise.then<any>(unwrapResult)\r\n },\r\n })\r\n }\r\n }\r\n\r\n return Object.assign(\r\n actionCreator as AsyncThunkActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >,\r\n {\r\n pending,\r\n rejected,\r\n fulfilled,\r\n typePrefix,\r\n }\r\n )\r\n }\r\n createAsyncThunk.withTypes = () => createAsyncThunk\r\n\r\n return createAsyncThunk as CreateAsyncThunk<AsyncThunkConfig>\r\n})()\r\n\r\ninterface UnwrappableAction {\r\n payload: any\r\n meta?: any\r\n error?: any\r\n}\r\n\r\ntype UnwrappedActionPayload<T extends UnwrappableAction> = Exclude<\r\n T,\r\n { error: any }\r\n>['payload']\r\n\r\n/**\r\n * @public\r\n */\r\nexport function unwrapResult<R extends UnwrappableAction>(\r\n action: R\r\n): UnwrappedActionPayload<R> {\r\n if (action.meta && action.meta.rejectedWithValue) {\r\n throw action.payload\r\n }\r\n if (action.error) {\r\n throw action.error\r\n }\r\n return action.payload\r\n}\r\n\r\ntype WithStrictNullChecks<True, False> = undefined extends boolean\r\n ? False\r\n : True\r\n\r\nfunction isThenable(value: any): value is PromiseLike<any> {\r\n return (\r\n value !== null &&\r\n typeof value === 'object' &&\r\n typeof value.then === 'function'\r\n )\r\n}\r\n","import type { Dispatch, AnyAction, MiddlewareAPI } from 'redux'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport { createAction, isAction } from '../createAction'\r\nimport { nanoid } from '../nanoid'\r\n\r\nimport type {\r\n ListenerMiddleware,\r\n ListenerMiddlewareInstance,\r\n AddListenerOverloads,\r\n AnyListenerPredicate,\r\n CreateListenerMiddlewareOptions,\r\n TypedAddListener,\r\n TypedCreateListenerEntry,\r\n FallbackAddListenerOptions,\r\n ListenerEntry,\r\n ListenerErrorHandler,\r\n UnsubscribeListener,\r\n TakePattern,\r\n ListenerErrorInfo,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n TypedRemoveListener,\r\n TaskResult,\r\n AbortSignalWithReason,\r\n UnsubscribeListenerOptions,\r\n ForkOptions,\r\n} from './types'\r\nimport {\r\n abortControllerWithReason,\r\n addAbortSignalListener,\r\n assertFunction,\r\n catchRejection,\r\n} from './utils'\r\nimport {\r\n listenerCancelled,\r\n listenerCompleted,\r\n TaskAbortError,\r\n taskCancelled,\r\n taskCompleted,\r\n} from './exceptions'\r\nimport {\r\n runTask,\r\n validateActive,\r\n createPause,\r\n createDelay,\r\n raceWithSignal,\r\n} from './task'\r\nexport { TaskAbortError } from './exceptions'\r\nexport type {\r\n ListenerEffect,\r\n ListenerMiddleware,\r\n ListenerEffectAPI,\r\n ListenerMiddlewareInstance,\r\n CreateListenerMiddlewareOptions,\r\n ListenerErrorHandler,\r\n TypedStartListening,\r\n TypedAddListener,\r\n TypedStopListening,\r\n TypedRemoveListener,\r\n UnsubscribeListener,\r\n UnsubscribeListenerOptions,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n ForkedTaskAPI,\r\n AsyncTaskExecutor,\r\n SyncTaskExecutor,\r\n TaskCancelled,\r\n TaskRejected,\r\n TaskResolved,\r\n TaskResult,\r\n} from './types'\r\n\r\n//Overly-aggressive byte-shaving\r\nconst { assign } = Object\r\n/**\r\n * @internal\r\n */\r\nconst INTERNAL_NIL_TOKEN = {} as const\r\n\r\nconst alm = 'listenerMiddleware' as const\r\n\r\nconst createFork = (\r\n parentAbortSignal: AbortSignalWithReason<unknown>,\r\n parentBlockingPromises: Promise<any>[]\r\n) => {\r\n const linkControllers = (controller: AbortController) =>\r\n addAbortSignalListener(parentAbortSignal, () =>\r\n abortControllerWithReason(controller, parentAbortSignal.reason)\r\n )\r\n\r\n return <T>(\r\n taskExecutor: ForkedTaskExecutor<T>,\r\n opts?: ForkOptions\r\n ): ForkedTask<T> => {\r\n assertFunction(taskExecutor, 'taskExecutor')\r\n const childAbortController = new AbortController()\r\n\r\n linkControllers(childAbortController)\r\n\r\n const result = runTask<T>(\r\n async (): Promise<T> => {\r\n validateActive(parentAbortSignal)\r\n validateActive(childAbortController.signal)\r\n const result = (await taskExecutor({\r\n pause: createPause(childAbortController.signal),\r\n delay: createDelay(childAbortController.signal),\r\n signal: childAbortController.signal,\r\n })) as T\r\n validateActive(childAbortController.signal)\r\n return result\r\n },\r\n () => abortControllerWithReason(childAbortController, taskCompleted)\r\n )\r\n\r\n if (opts?.autoJoin) {\r\n parentBlockingPromises.push(result)\r\n }\r\n\r\n return {\r\n result: createPause<TaskResult<T>>(parentAbortSignal)(result),\r\n cancel() {\r\n abortControllerWithReason(childAbortController, taskCancelled)\r\n },\r\n }\r\n }\r\n}\r\n\r\nconst createTakePattern = <S>(\r\n startListening: AddListenerOverloads<\r\n UnsubscribeListener,\r\n S,\r\n Dispatch<AnyAction>\r\n >,\r\n signal: AbortSignal\r\n): TakePattern<S> => {\r\n /**\r\n * A function that takes a ListenerPredicate and an optional timeout,\r\n * and resolves when either the predicate returns `true` based on an action\r\n * state combination or when the timeout expires.\r\n * If the parent listener is canceled while waiting, this will throw a\r\n * TaskAbortError.\r\n */\r\n const take = async <P extends AnyListenerPredicate<S>>(\r\n predicate: P,\r\n timeout: number | undefined\r\n ) => {\r\n validateActive(signal)\r\n\r\n // Placeholder unsubscribe function until the listener is added\r\n let unsubscribe: UnsubscribeListener = () => {}\r\n\r\n const tuplePromise = new Promise<[AnyAction, S, S]>((resolve, reject) => {\r\n // Inside the Promise, we synchronously add the listener.\r\n let stopListening = startListening({\r\n predicate: predicate as any,\r\n effect: (action, listenerApi): void => {\r\n // One-shot listener that cleans up as soon as the predicate passes\r\n listenerApi.unsubscribe()\r\n // Resolve the promise with the same arguments the predicate saw\r\n resolve([\r\n action,\r\n listenerApi.getState(),\r\n listenerApi.getOriginalState(),\r\n ])\r\n },\r\n })\r\n unsubscribe = () => {\r\n stopListening()\r\n reject()\r\n }\r\n })\r\n\r\n const promises: (Promise<null> | Promise<[AnyAction, S, S]>)[] = [\r\n tuplePromise,\r\n ]\r\n\r\n if (timeout != null) {\r\n promises.push(\r\n new Promise<null>((resolve) => setTimeout(resolve, timeout, null))\r\n )\r\n }\r\n\r\n try {\r\n const output = await raceWithSignal(signal, Promise.race(promises))\r\n\r\n validateActive(signal)\r\n return output\r\n } finally {\r\n // Always clean up the listener\r\n unsubscribe()\r\n }\r\n }\r\n\r\n return ((predicate: AnyListenerPredicate<S>, timeout: number | undefined) =>\r\n catchRejection(take(predicate, timeout))) as TakePattern<S>\r\n}\r\n\r\nconst getListenerEntryPropsFrom = (options: FallbackAddListenerOptions) => {\r\n let { type, actionCreator, matcher, predicate, effect } = options\r\n\r\n if (type) {\r\n predicate = createAction(type).match\r\n } else if (actionCreator) {\r\n type = actionCreator!.type\r\n predicate = actionCreator.match\r\n } else if (matcher) {\r\n predicate = matcher\r\n } else if (predicate) {\r\n // pass\r\n } else {\r\n throw new Error(\r\n 'Creating or removing a listener requires one of the known fields for matching an action'\r\n )\r\n }\r\n\r\n assertFunction(effect, 'options.listener')\r\n\r\n return { predicate, type, effect }\r\n}\r\n\r\n/** Accepts the possible options for creating a listener, and returns a formatted listener entry */\r\nexport const createListenerEntry: TypedCreateListenerEntry<unknown> = (\r\n options: FallbackAddListenerOptions\r\n) => {\r\n const { type, predicate, effect } = getListenerEntryPropsFrom(options)\r\n\r\n const id = nanoid()\r\n const entry: ListenerEntry<unknown> = {\r\n id,\r\n effect,\r\n type,\r\n predicate,\r\n pending: new Set<AbortController>(),\r\n unsubscribe: () => {\r\n throw new Error('Unsubscribe not initialized')\r\n },\r\n }\r\n\r\n return entry\r\n}\r\n\r\nconst cancelActiveListeners = (\r\n entry: ListenerEntry<unknown, Dispatch<AnyAction>>\r\n) => {\r\n entry.pending.forEach((controller) => {\r\n abortControllerWithReason(controller, listenerCancelled)\r\n })\r\n}\r\n\r\nconst createClearListenerMiddleware = (\r\n listenerMap: Map<string, ListenerEntry>\r\n) => {\r\n return () => {\r\n listenerMap.forEach(cancelActiveListeners)\r\n\r\n listenerMap.clear()\r\n }\r\n}\r\n\r\n/**\r\n * Safely reports errors to the `errorHandler` provided.\r\n * Errors that occur inside `errorHandler` are notified in a new task.\r\n * Inspired by [rxjs reportUnhandledError](https://github.com/ReactiveX/rxjs/blob/6fafcf53dc9e557439b25debaeadfd224b245a66/src/internal/util/reportUnhandledError.ts)\r\n * @param errorHandler\r\n * @param errorToNotify\r\n */\r\nconst safelyNotifyError = (\r\n errorHandler: ListenerErrorHandler,\r\n errorToNotify: unknown,\r\n errorInfo: ListenerErrorInfo\r\n): void => {\r\n try {\r\n errorHandler(errorToNotify, errorInfo)\r\n } catch (errorHandlerError) {\r\n // We cannot let an error raised here block the listener queue.\r\n // The error raised here will be picked up by `window.onerror`, `process.on('error')` etc...\r\n setTimeout(() => {\r\n throw errorHandlerError\r\n }, 0)\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const addListener = createAction(\r\n `${alm}/add`\r\n) as TypedAddListener<unknown>\r\n\r\n/**\r\n * @public\r\n */\r\nexport const clearAllListeners = createAction(`${alm}/removeAll`)\r\n\r\n/**\r\n * @public\r\n */\r\nexport const removeListener = createAction(\r\n `${alm}/remove`\r\n) as TypedRemoveListener<unknown>\r\n\r\nconst defaultErrorHandler: ListenerErrorHandler = (...args: unknown[]) => {\r\n console.error(`${alm}/error`, ...args)\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport function createListenerMiddleware<\r\n S = unknown,\r\n D extends Dispatch<AnyAction> = ThunkDispatch<S, unknown, AnyAction>,\r\n ExtraArgument = unknown\r\n>(middlewareOptions: CreateListenerMiddlewareOptions<ExtraArgument> = {}) {\r\n const listenerMap = new Map<string, ListenerEntry>()\r\n const { extra, onError = defaultErrorHandler } = middlewareOptions\r\n\r\n assertFunction(onError, 'onError')\r\n\r\n const insertEntry = (entry: ListenerEntry) => {\r\n entry.unsubscribe = () => listenerMap.delete(entry!.id)\r\n\r\n listenerMap.set(entry.id, entry)\r\n return (cancelOptions?: UnsubscribeListenerOptions) => {\r\n entry.unsubscribe()\r\n if (cancelOptions?.cancelActive) {\r\n cancelActiveListeners(entry)\r\n }\r\n }\r\n }\r\n\r\n const findListenerEntry = (\r\n comparator: (entry: ListenerEntry) => boolean\r\n ): ListenerEntry | undefined => {\r\n for (const entry of Array.from(listenerMap.values())) {\r\n if (comparator(entry)) {\r\n return entry\r\n }\r\n }\r\n\r\n return undefined\r\n }\r\n\r\n const startListening = (options: FallbackAddListenerOptions) => {\r\n let entry = findListenerEntry(\r\n (existingEntry) => existingEntry.effect === options.effect\r\n )\r\n\r\n if (!entry) {\r\n entry = createListenerEntry(options as any)\r\n }\r\n\r\n return insertEntry(entry)\r\n }\r\n\r\n const stopListening = (\r\n options: FallbackAddListenerOptions & UnsubscribeListenerOptions\r\n ): boolean => {\r\n const { type, effect, predicate } = getListenerEntryPropsFrom(options)\r\n\r\n const entry = findListenerEntry((entry) => {\r\n const matchPredicateOrType =\r\n typeof type === 'string'\r\n ? entry.type === type\r\n : entry.predicate === predicate\r\n\r\n return matchPredicateOrType && entry.effect === effect\r\n })\r\n\r\n if (entry) {\r\n entry.unsubscribe()\r\n if (options.cancelActive) {\r\n cancelActiveListeners(entry)\r\n }\r\n }\r\n\r\n return !!entry\r\n }\r\n\r\n const notifyListener = async (\r\n entry: ListenerEntry<unknown, Dispatch<AnyAction>>,\r\n action: AnyAction,\r\n api: MiddlewareAPI,\r\n getOriginalState: () => S\r\n ) => {\r\n const internalTaskController = new AbortController()\r\n const take = createTakePattern(\r\n startListening,\r\n internalTaskController.signal\r\n )\r\n const autoJoinPromises: Promise<any>[] = []\r\n\r\n try {\r\n entry.pending.add(internalTaskController)\r\n await Promise.resolve(\r\n entry.effect(\r\n action,\r\n // Use assign() rather than ... to avoid extra helper functions added to bundle\r\n assign({}, api, {\r\n getOriginalState,\r\n condition: (\r\n predicate: AnyListenerPredicate<any>,\r\n timeout?: number\r\n ) => take(predicate, timeout).then(Boolean),\r\n take,\r\n delay: createDelay(internalTaskController.signal),\r\n pause: createPause<any>(internalTaskController.signal),\r\n extra,\r\n signal: internalTaskController.signal,\r\n fork: createFork(internalTaskController.signal, autoJoinPromises),\r\n unsubscribe: entry.unsubscribe,\r\n subscribe: () => {\r\n listenerMap.set(entry.id, entry)\r\n },\r\n cancelActiveListeners: () => {\r\n entry.pending.forEach((controller, _, set) => {\r\n if (controller !== internalTaskController) {\r\n abortControllerWithReason(controller, listenerCancelled)\r\n set.delete(controller)\r\n }\r\n })\r\n },\r\n })\r\n )\r\n )\r\n } catch (listenerError) {\r\n if (!(listenerError instanceof TaskAbortError)) {\r\n safelyNotifyError(onError, listenerError, {\r\n raisedBy: 'effect',\r\n })\r\n }\r\n } finally {\r\n await Promise.allSettled(autoJoinPromises)\r\n\r\n abortControllerWithReason(internalTaskController, listenerCompleted) // Notify that the task has completed\r\n entry.pending.delete(internalTaskController)\r\n }\r\n }\r\n\r\n const clearListenerMiddleware = createClearListenerMiddleware(listenerMap)\r\n\r\n const middleware: ListenerMiddleware<S, D, ExtraArgument> =\r\n (api) => (next) => (action) => {\r\n if (!isAction(action)) {\r\n // we only want to notify listeners for action objects\r\n return next(action)\r\n }\r\n\r\n if (addListener.match(action)) {\r\n return startListening(action.payload)\r\n }\r\n\r\n if (clearAllListeners.match(action)) {\r\n clearListenerMiddleware()\r\n return\r\n }\r\n\r\n if (removeListener.match(action)) {\r\n return stopListening(action.payload)\r\n }\r\n\r\n // Need to get this state _before_ the reducer processes the action\r\n let originalState: S | typeof INTERNAL_NIL_TOKEN = api.getState()\r\n\r\n // `getOriginalState` can only be called synchronously.\r\n // @see https://github.com/reduxjs/redux-toolkit/discussions/1648#discussioncomment-1932820\r\n const getOriginalState = (): S => {\r\n if (originalState === INTERNAL_NIL_TOKEN) {\r\n throw new Error(\r\n `${alm}: getOriginalState can only be called synchronously`\r\n )\r\n }\r\n\r\n return originalState as S\r\n }\r\n\r\n let result: unknown\r\n\r\n try {\r\n // Actually forward the action to the reducer before we handle listeners\r\n result = next(action)\r\n\r\n if (listenerMap.size > 0) {\r\n let currentState = api.getState()\r\n // Work around ESBuild+TS transpilation issue\r\n const listenerEntries = Array.from(listenerMap.values())\r\n for (let entry of listenerEntries) {\r\n let runListener = false\r\n\r\n try {\r\n runListener = entry.predicate(action, currentState, originalState)\r\n } catch (predicateError) {\r\n runListener = false\r\n\r\n safelyNotifyError(onError, predicateError, {\r\n raisedBy: 'predicate',\r\n })\r\n }\r\n\r\n if (!runListener) {\r\n continue\r\n }\r\n\r\n notifyListener(entry, action, api, getOriginalState)\r\n }\r\n }\r\n } finally {\r\n // Remove `originalState` store from this scope.\r\n originalState = INTERNAL_NIL_TOKEN\r\n }\r\n\r\n return result\r\n }\r\n\r\n return {\r\n middleware,\r\n startListening,\r\n stopListening,\r\n clearListeners: clearListenerMiddleware,\r\n } as ListenerMiddlewareInstance<S, D, ExtraArgument>\r\n}\r\n","import { TaskAbortError } from './exceptions'\r\nimport type { AbortSignalWithReason, TaskResult } from './types'\r\nimport { addAbortSignalListener, catchRejection, noop } from './utils'\r\n\r\n/**\r\n * Synchronously raises {@link TaskAbortError} if the task tied to the input `signal` has been cancelled.\r\n * @param signal\r\n * @param reason\r\n * @see {TaskAbortError}\r\n */\r\nexport const validateActive = (signal: AbortSignal): void => {\r\n if (signal.aborted) {\r\n throw new TaskAbortError((signal as AbortSignalWithReason<string>).reason)\r\n }\r\n}\r\n\r\n/**\r\n * Generates a race between the promise(s) and the AbortSignal\r\n * This avoids `Promise.race()`-related memory leaks:\r\n * https://github.com/nodejs/node/issues/17469#issuecomment-349794909\r\n */\r\nexport function raceWithSignal<T>(\r\n signal: AbortSignalWithReason<string>,\r\n promise: Promise<T>\r\n): Promise<T> {\r\n let cleanup = noop\r\n return new Promise<T>((resolve, reject) => {\r\n const notifyRejection = () => reject(new TaskAbortError(signal.reason))\r\n\r\n if (signal.aborted) {\r\n notifyRejection()\r\n return\r\n }\r\n\r\n cleanup = addAbortSignalListener(signal, notifyRejection)\r\n promise.finally(() => cleanup()).then(resolve, reject)\r\n }).finally(() => {\r\n // after this point, replace `cleanup` with a noop, so there is no reference to `signal` any more\r\n cleanup = noop\r\n })\r\n}\r\n\r\n/**\r\n * Runs a task and returns promise that resolves to {@link TaskResult}.\r\n * Second argument is an optional `cleanUp` function that always runs after task.\r\n *\r\n * **Note:** `runTask` runs the executor in the next microtask.\r\n * @returns\r\n */\r\nexport const runTask = async <T>(\r\n task: () => Promise<T>,\r\n cleanUp?: () => void\r\n): Promise<TaskResult<T>> => {\r\n try {\r\n await Promise.resolve()\r\n const value = await task()\r\n return {\r\n status: 'ok',\r\n value,\r\n }\r\n } catch (error: any) {\r\n return {\r\n status: error instanceof TaskAbortError ? 'cancelled' : 'rejected',\r\n error,\r\n }\r\n } finally {\r\n cleanUp?.()\r\n }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and a promise returns another promise that resolves\r\n * as soon the input promise is provided or rejects as soon as\r\n * `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createPause = <T>(signal: AbortSignal) => {\r\n return (promise: Promise<T>): Promise<T> => {\r\n return catchRejection(\r\n raceWithSignal(signal, promise).then((output) => {\r\n validateActive(signal)\r\n return output\r\n })\r\n )\r\n }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and `timeoutMs` returns a promise that resolves\r\n * after `timeoutMs` or rejects as soon as `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createDelay = (signal: AbortSignal) => {\r\n const pause = createPause<void>(signal)\r\n return (timeoutMs: number): Promise<void> => {\r\n return pause(new Promise<void>((resolve) => setTimeout(resolve, timeoutMs)))\r\n }\r\n}\r\n","import type { StoreEnhancer } from 'redux'\r\n\r\nexport const SHOULD_AUTOBATCH = 'RTK_autoBatch'\r\n\r\nexport const prepareAutoBatched =\r\n <T>() =>\r\n (payload: T): { payload: T; meta: unknown } => ({\r\n payload,\r\n meta: { [SHOULD_AUTOBATCH]: true },\r\n })\r\n\r\n// TODO Remove this in 2.0\r\n// Copied from https://github.com/feross/queue-microtask\r\nlet promise: Promise<any>\r\nconst queueMicrotaskShim =\r\n typeof queueMicrotask === 'function'\r\n ? queueMicrotask.bind(\r\n typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : globalThis\r\n )\r\n : // reuse resolved promise, and allocate it lazily\r\n (cb: () => void) =>\r\n (promise || (promise = Promise.resolve())).then(cb).catch((err: any) =>\r\n setTimeout(() => {\r\n throw err\r\n }, 0)\r\n )\r\n\r\nconst createQueueWithTimer = (timeout: number) => {\r\n return (notify: () => void) => {\r\n setTimeout(notify, timeout)\r\n }\r\n}\r\n\r\n// requestAnimationFrame won't exist in SSR environments.\r\n// Fall back to a vague approximation just to keep from erroring.\r\nconst rAF =\r\n typeof window !== 'undefined' && window.requestAnimationFrame\r\n ? window.requestAnimationFrame\r\n : createQueueWithTimer(10)\r\n\r\nexport type AutoBatchOptions =\r\n | { type: 'tick' }\r\n | { type: 'timer'; timeout: number }\r\n | { type: 'raf' }\r\n | { type: 'callback'; queueNotification: (notify: () => void) => void }\r\n\r\n/**\r\n * A Redux store enhancer that watches for \"low-priority\" actions, and delays\r\n * notifying subscribers until either the queued callback executes or the\r\n * next \"standard-priority\" action is dispatched.\r\n *\r\n * This allows dispatching multiple \"low-priority\" actions in a row with only\r\n * a single subscriber notification to the UI after the sequence of actions\r\n * is finished, thus improving UI re-render performance.\r\n *\r\n * Watches for actions with the `action.meta[SHOULD_AUTOBATCH]` attribute.\r\n * This can be added to `action.meta` manually, or by using the\r\n * `prepareAutoBatched` helper.\r\n *\r\n * By default, it will queue a notification for the end of the event loop tick.\r\n * However, you can pass several other options to configure the behavior:\r\n * - `{type: 'tick'}: queues using `queueMicrotask` (default)\r\n * - `{type: 'timer, timeout: number}`: queues using `setTimeout`\r\n * - `{type: 'raf'}`: queues using `requestAnimationFrame`\r\n * - `{type: 'callback', queueNotification: (notify: () => void) => void}: lets you provide your own callback\r\n *\r\n *\r\n */\r\nexport const autoBatchEnhancer =\r\n (options: AutoBatchOptions = { type: 'raf' }): StoreEnhancer =>\r\n (next) =>\r\n (...args) => {\r\n const store = next(...args)\r\n\r\n let notifying = true\r\n let shouldNotifyAtEndOfTick = false\r\n let notificationQueued = false\r\n\r\n const listeners = new Set<() => void>()\r\n\r\n const queueCallback =\r\n options.type === 'tick'\r\n ? queueMicrotaskShim\r\n : options.type === 'raf'\r\n ? rAF\r\n : options.type === 'callback'\r\n ? options.queueNotification\r\n : createQueueWithTimer(options.timeout)\r\n\r\n const notifyListeners = () => {\r\n // We're running at the end of the event loop tick.\r\n // Run the real listener callbacks to actually update the UI.\r\n notificationQueued = false\r\n if (shouldNotifyAtEndOfTick) {\r\n shouldNotifyAtEndOfTick = false\r\n listeners.forEach((l) => l())\r\n }\r\n }\r\n\r\n return Object.assign({}, store, {\r\n // Override the base `store.subscribe` method to keep original listeners\r\n // from running if we're delaying notifications\r\n subscribe(listener: () => void) {\r\n // Each wrapped listener will only call the real listener if\r\n // the `notifying` flag is currently active when it's called.\r\n // This lets the base store work as normal, while the actual UI\r\n // update becomes controlled by this enhancer.\r\n const wrappedListener: typeof listener = () => notifying && listener()\r\n const unsubscribe = store.subscribe(wrappedListener)\r\n listeners.add(listener)\r\n return () => {\r\n unsubscribe()\r\n listeners.delete(listener)\r\n }\r\n },\r\n // Override the base `store.dispatch` method so that we can check actions\r\n // for the `shouldAutoBatch` flag and determine if batching is active\r\n dispatch(action: any) {\r\n try {\r\n // If the action does _not_ have the `shouldAutoBatch` flag,\r\n // we resume/continue normal notify-after-each-dispatch behavior\r\n notifying = !action?.meta?.[SHOULD_AUTOBATCH]\r\n // If a `notifyListeners` microtask was queued, you can't cancel it.\r\n // Instead, we set a flag so that it's a no-op when it does run\r\n shouldNotifyAtEndOfTick = !notifying\r\n if (shouldNotifyAtEndOfTick) {\r\n // We've seen at least 1 action with `SHOULD_AUTOBATCH`. Try to queue\r\n // a microtask to notify listeners at the end of the event loop tick.\r\n // Make sure we only enqueue this _once_ per tick.\r\n if (!notificationQueued) {\r\n notificationQueued = true\r\n queueCallback(notifyListeners)\r\n }\r\n }\r\n // Go ahead and process the action as usual, including reducers.\r\n // If normal notification behavior is enabled, the store will notify\r\n // all of its own listeners, and the wrapper callbacks above will\r\n // see `notifying` is true and pass on to the real listener callbacks.\r\n // If we're \"batching\" behavior, then the wrapped callbacks will\r\n // bail out, causing the base store notification behavior to be no-ops.\r\n return store.dispatch(action)\r\n } finally {\r\n // Assume we're back to normal behavior after each action\r\n notifying = true\r\n }\r\n },\r\n })\r\n }\r\n","import { enableES5 } from 'immer'\r\nexport * from 'redux'\r\nexport {\r\n default as createNextState,\r\n current,\r\n freeze,\r\n original,\r\n isDraft,\r\n} from 'immer'\r\nexport type { Draft } from 'immer'\r\nexport { createSelector } from 'reselect'\r\nexport type {\r\n Selector,\r\n OutputParametricSelector,\r\n OutputSelector,\r\n ParametricSelector,\r\n} from 'reselect'\r\nexport { createDraftSafeSelector } from './createDraftSafeSelector'\r\nexport type { ThunkAction, ThunkDispatch, ThunkMiddleware } from 'redux-thunk'\r\n\r\n// We deliberately enable Immer's ES5 support, on the grounds that\r\n// we assume RTK will be used with React Native and other Proxy-less\r\n// environments. In addition, that's how Immer 4 behaved, and since\r\n// we want to ship this in an RTK minor, we should keep the same behavior.\r\nenableES5()\r\n\r\nexport {\r\n // js\r\n configureStore,\r\n} from './configureStore'\r\nexport type {\r\n // types\r\n ConfigureEnhancersCallback,\r\n ConfigureStoreOptions,\r\n EnhancedStore,\r\n} from './configureStore'\r\nexport type { DevToolsEnhancerOptions } from './devtoolsExtension'\r\nexport {\r\n // js\r\n createAction,\r\n getType,\r\n isAction,\r\n isActionCreator,\r\n isFSA as isFluxStandardAction,\r\n} from './createAction'\r\nexport type {\r\n // types\r\n PayloadAction,\r\n PayloadActionCreator,\r\n ActionCreatorWithNonInferrablePayload,\r\n ActionCreatorWithOptionalPayload,\r\n ActionCreatorWithPayload,\r\n ActionCreatorWithoutPayload,\r\n ActionCreatorWithPreparedPayload,\r\n PrepareAction,\r\n} from './createAction'\r\nexport {\r\n // js\r\n createReducer,\r\n} from './createReducer'\r\nexport type {\r\n // types\r\n Actions,\r\n CaseReducer,\r\n CaseReducers,\r\n} from './createReducer'\r\nexport {\r\n // js\r\n createSlice,\r\n} from './createSlice'\r\n\r\nexport type {\r\n // types\r\n CreateSliceOptions,\r\n Slice,\r\n CaseReducerActions,\r\n SliceCaseReducers,\r\n ValidateSliceCaseReducers,\r\n CaseReducerWithPrepare,\r\n SliceActionCreator,\r\n} from './createSlice'\r\nexport type { ActionCreatorInvariantMiddlewareOptions } from './actionCreatorInvariantMiddleware'\r\nexport { createActionCreatorInvariantMiddleware } from './actionCreatorInvariantMiddleware'\r\nexport {\r\n // js\r\n createImmutableStateInvariantMiddleware,\r\n isImmutableDefault,\r\n} from './immutableStateInvariantMiddleware'\r\nexport type {\r\n // types\r\n ImmutableStateInvariantMiddlewareOptions,\r\n} from './immutableStateInvariantMiddleware'\r\nexport {\r\n // js\r\n createSerializableStateInvariantMiddleware,\r\n findNonSerializableValue,\r\n isPlain,\r\n} from './serializableStateInvariantMiddleware'\r\nexport type {\r\n // types\r\n SerializableStateInvariantMiddlewareOptions,\r\n} from './serializableStateInvariantMiddleware'\r\nexport {\r\n // js\r\n getDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nexport type {\r\n // types\r\n ActionReducerMapBuilder,\r\n} from './mapBuilders'\r\nexport { MiddlewareArray, EnhancerArray } from './utils'\r\n\r\nexport { createEntityAdapter } from './entities/create_adapter'\r\nexport type {\r\n Dictionary,\r\n EntityState,\r\n EntityAdapter,\r\n EntitySelectors,\r\n EntityStateAdapter,\r\n EntityId,\r\n Update,\r\n IdSelector,\r\n Comparer,\r\n} from './entities/models'\r\n\r\nexport {\r\n createAsyncThunk,\r\n unwrapResult,\r\n miniSerializeError,\r\n} from './createAsyncThunk'\r\nexport type {\r\n AsyncThunk,\r\n AsyncThunkOptions,\r\n AsyncThunkAction,\r\n AsyncThunkPayloadCreatorReturnValue,\r\n AsyncThunkPayloadCreator,\r\n SerializedError,\r\n} from './createAsyncThunk'\r\n\r\nexport {\r\n // js\r\n isAllOf,\r\n isAnyOf,\r\n isPending,\r\n isRejected,\r\n isFulfilled,\r\n isAsyncThunkAction,\r\n isRejectedWithValue,\r\n} from './matchers'\r\nexport type {\r\n // types\r\n ActionMatchingAllOf,\r\n ActionMatchingAnyOf,\r\n} from './matchers'\r\n\r\nexport { nanoid } from './nanoid'\r\n\r\nexport { default as isPlainObject } from './isPlainObject'\r\n\r\nexport type {\r\n ListenerEffect,\r\n ListenerMiddleware,\r\n ListenerEffectAPI,\r\n ListenerMiddlewareInstance,\r\n CreateListenerMiddlewareOptions,\r\n ListenerErrorHandler,\r\n TypedStartListening,\r\n TypedAddListener,\r\n TypedStopListening,\r\n TypedRemoveListener,\r\n UnsubscribeListener,\r\n UnsubscribeListenerOptions,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n ForkedTaskAPI,\r\n AsyncTaskExecutor,\r\n SyncTaskExecutor,\r\n TaskCancelled,\r\n TaskRejected,\r\n TaskResolved,\r\n TaskResult,\r\n} from './listenerMiddleware/index'\r\nexport type { AnyListenerPredicate } from './listenerMiddleware/types'\r\n\r\nexport {\r\n createListenerMiddleware,\r\n addListener,\r\n removeListener,\r\n clearAllListeners,\r\n TaskAbortError,\r\n} from './listenerMiddleware/index'\r\n\r\nexport {\r\n SHOULD_AUTOBATCH,\r\n prepareAutoBatched,\r\n autoBatchEnhancer,\r\n} from './autoBatchEnhancer'\r\nexport type { AutoBatchOptions } from './autoBatchEnhancer'\r\n\r\nexport type { ExtractDispatchExtensions as TSHelpersExtractDispatchExtensions } from './tsHelpers'\r\n","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location<State = any> extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial<Path>;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an <a href> attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial<Location>;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route (<Route path=\"*\">) since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant<T>(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly<Location> {\n let location: Readonly<Location> = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial<Path>) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial<Path> {\n let parsedPath: Partial<Path> = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase<LowerCaseFormMethod>;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `<Form>`,\n * useSubmit(), `<fetcher.Form>`, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude<FormMethod, \"get\">;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude<V7_FormMethod, \"GET\">;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs<Context> {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs<Context = any>\n extends DataFunctionArgs<Context> {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs<Context = any>\n extends DataFunctionArgs<Context> {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable<unknown> | null;\n\ntype DataFunctionReturnValue = Promise<DataFunctionValue> | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction<Context = any> = {\n (\n args: LoaderFunctionArgs<Context>,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction<Context = any> {\n (\n args: ActionFunctionArgs<Context>,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch<string, AgnosticDataRouteObject> {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => DataFunctionReturnValue\n ) => Promise<DataStrategyResult>;\n}\n\nexport interface DataStrategyFunctionArgs<Context = any>\n extends DataFunctionArgs<Context> {\n matches: DataStrategyMatch[];\n fetcherKey: string | null;\n}\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface DataStrategyResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData, DataWithResponseInit\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise<Record<string, DataStrategyResult>>;\n}\n\nexport type AgnosticPatchRoutesOnNavigationFunctionArgs<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = {\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: O[]) => void;\n};\n\nexport type AgnosticPatchRoutesOnNavigationFunction<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = (\n opts: AgnosticPatchRoutesOnNavigationFunctionArgs<O, M>\n) => void | Promise<void>;\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record<string, any>;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set<ImmutableRouteKey>([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne<T, Key = keyof T> = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit<T, K> & Required<Pick<T, K>> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction<R extends AgnosticRouteObject> {\n (): Promise<RequireOne<Omit<R, ImmutableRouteKey>>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction<AgnosticBaseRouteObject>;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record<string, AgnosticDataRouteObject | undefined>;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam<Path extends string> =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam<L> | _PathParam<R>\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam<Path extends string> =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam<Rest>\n : // look for params in the absence of wildcards\n _PathParam<Path>;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey<Segment extends string> =\n // if you could not find path params, fallback to `string`\n [PathParam<Segment>] extends [never] ? string : PathParam<Segment>;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params<Key extends string = string> = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch<string, AgnosticDataRouteObject> {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: string[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/v6/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial<Location> | string,\n basename = \"/\"\n): AgnosticRouteMatch<string, RouteObjectType>[] | null {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial<Location> | string,\n basename: string,\n allowPartial: boolean\n): AgnosticRouteMatch<string, RouteObjectType>[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch<string, RouteObjectType>(\n branches[i],\n decoded,\n allowPartial\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch<Data = unknown, Handle = unknown> {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta<RouteObjectType>[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch<RouteObjectType>[] = [],\n parentsMeta: RouteMeta<RouteObjectType>[] = [],\n parentPath = \"\"\n): RouteBranch<RouteObjectType>[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta<RouteObjectType> = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch<RouteObjectType>,\n pathname: string,\n allowPartial = false\n): AgnosticRouteMatch<ParamKey, RouteObjectType>[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch<ParamKey, RouteObjectType>[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n let route = meta.route;\n\n if (\n !match &&\n end &&\n allowPartial &&\n !routesMeta[routesMeta.length - 1].route.index\n ) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false,\n },\n remainingPathname\n );\n }\n\n if (!match) {\n return null;\n }\n\n Object.assign(matchedParams, match.params);\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params<ParamKey>,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/v6/utils/generate-path\n */\nexport function generatePath<Path extends string>(\n originalPath: Path,\n params: {\n [key in PathParam<Path>]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam<Path>;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam<Path>];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern<Path extends string = string> {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch<ParamKey extends string = string> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/v6/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(\n pattern: PathPattern<Path> | Path,\n pathname: string\n): PathMatch<ParamKey> | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce<Mutable<Params>>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nexport function decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/v6/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial<Path>\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in <Link to=\"...\"> and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * <Route path=\"/\">\n * <Route path=\"accounts\" element={<Link to=\"..\"}>\n * </Route>\n *\n * <Route path=\"/\">\n * <Route path=\"accounts\">\n * <Route element={<AccountsLayout />}> // <-- Does not contribute\n * <Route index element={<Link to=\"..\"} /> // <-- Does not contribute\n * </Route\n * </Route>\n * </Route>\n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial<Path>;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `<Link to>` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how <a href> works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = <Data>(\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n *\n * @deprecated The `json` method is deprecated in favor of returning raw objects.\n * This method will be removed in v7.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport class DataWithResponseInit<D> {\n type: string = \"DataWithResponseInit\";\n data: D;\n init: ResponseInit | null;\n\n constructor(data: D, init?: ResponseInit) {\n this.data = data;\n this.init = init || null;\n }\n}\n\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nexport function data<D>(data: D, init?: number | ResponseInit) {\n return new DataWithResponseInit(\n data,\n typeof init === \"number\" ? { status: init } : init\n );\n}\n\nexport interface TrackedPromise extends Promise<any> {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set<string> = new Set<string>();\n private controller: AbortController;\n private abortPromise: Promise<void>;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record<string, unknown>;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record<string, unknown>, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise<unknown> | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record<string, unknown>,\n init?: number | ResponseInit\n) => DeferredData;\n\n/**\n * @deprecated The `defer` method is deprecated in favor of returning raw\n * objects. This method will be removed in v7.\n */\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const replace: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n DataStrategyResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n AgnosticPatchRoutesOnNavigationFunction,\n DataWithResponseInit,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n matchRoutesImpl,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record<string, number>,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise<void>;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise<void>;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher<TData = any>(key: string): Fetcher<TData>;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE DO NOT USE\n *\n * Patch additional children routes into an existing parent route\n * @param routeId The parent route id or a callback function accepting `patch`\n * to perform batch patching\n * @param children The additional children routes\n */\n patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map<string, AbortController>;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map<string, DeferredData>;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map<string, Fetcher>;\n\n /**\n * Map of current blockers\n */\n blockers: Map<string, Blocker>;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick<RouterState, \"loaderData\" | \"actionData\" | \"errors\">\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n v7_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial<FutureConfig>;\n hydrationData?: HydrationState;\n window?: Window;\n dataStrategy?: DataStrategyFunction;\n patchRoutesOnNavigation?: AgnosticPatchRoutesOnNavigationFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record<string, Headers>;\n actionHeaders: Record<string, Headers>;\n activeDeferreds: Record<string, DeferredData> | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n dataStrategy?: DataStrategyFunction;\n }\n ): Promise<StaticHandlerContext | Response>;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n dataStrategy?: DataStrategyFunction;\n }\n ): Promise<any>;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n viewTransitionOpts?: ViewTransitionOpts;\n flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates<TData = any> = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher<TData = any> =\n FetcherStates<TData>[keyof FetcherStates<TData>];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set<MutationFormMethod>(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set<FormMethod>(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;\n\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set<RouterSubscriber>();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record<string, number> | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from <ScrollRestoration /> until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n\n let initialized: boolean;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some((m) => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches\n .slice(0, idx + 1)\n .every((m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n } else {\n initialized = initialMatches.every(\n (m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors)\n );\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map<string, Set<string>> = new Map<\n string,\n Set<string>\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: Set<string> = new Set();\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map<string, AbortController>();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map<string, number>();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set<string>();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map<string, FetchLoadMatch>();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map<string, number>();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set<string>();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map<string, DeferredData>();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map<string, BlockerFunction>();\n\n // Map of pending patchRoutesOnNavigation() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map<\n string,\n ReturnType<AgnosticPatchRoutesOnNavigationFunction>\n >();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let unblockBlockerHistoryUpdate: (() => void) | undefined = undefined;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (unblockBlockerHistoryUpdate) {\n unblockBlockerHistoryUpdate();\n unblockBlockerHistoryUpdate = undefined;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n let nextHistoryUpdatePromise = new Promise<void>((resolve) => {\n unblockBlockerHistoryUpdate = resolve;\n });\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked, after the url\n // restoration is also complete. See:\n // https://github.com/remix-run/react-router/issues/11613\n nextHistoryUpdatePromise.then(() => init.history.go(delta));\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial<RouterState>,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n viewTransitionOpts: opts.viewTransitionOpts,\n flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial<Omit<RouterState, \"action\" | \"location\" | \"navigation\">>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set<string>([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise<void> {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n {\n overrideNavigation: state.navigation,\n // Proxy through any rending view transition\n enableViewTransition: pendingViewTransitionEnabled === true,\n }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise<void> {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial hydration will always\n // be \"same hash\". For example, on /page#hash and submit a <Form method=\"post\">\n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (\n isErrorResult(result) &&\n isRouteErrorResponse(result.error) &&\n result.error.status === 404\n ) {\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error,\n },\n });\n return;\n }\n }\n\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors,\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise<HandleActionResult> {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n error: discoverResult.error,\n },\n ],\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n state,\n request,\n [actionMatch],\n matches,\n null\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, true, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise<HandleLoadersResult> {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState =\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration);\n\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: discoverResult.error,\n },\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n if (shouldUpdateNavigationState) {\n let updates: Partial<RouterState> = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n\n revalidatingFetchers.forEach((rf) => {\n abortFetcher(rf.key);\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // Preserve SSR errors during partial hydration\n if (future.v7_partialHydration && initialHydration && state.errors) {\n errors = { ...state.errors, ...errors };\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n matches,\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getUpdatedActionData(\n pendingActionResult: PendingActionResult | undefined\n ): Record<string, RouteData> | null | undefined {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n\n function getUpdatedRevalidatingFetchers(\n revalidatingFetchers: RevalidatingFetcher[]\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n abortFetcher(key);\n\n let flushSync = (opts && opts.flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n let preventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return true;\n }\n return false;\n }\n\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n state,\n fetchRequest,\n [match],\n requestMatches,\n key\n );\n let actionResult = actionResults[match.route.id];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, false, {\n fetcherSubmission: submission,\n preventScrollReset,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n abortFetcher(staleKey);\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n state,\n fetchRequest,\n [match],\n matches,\n key\n );\n let result = results[match.route.id];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result, false, {\n preventScrollReset,\n });\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n isNavigation: boolean,\n {\n submission,\n fetcherSubmission,\n preventScrollReset,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n preventScrollReset?: boolean;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true || redirect.response.headers.has(\"X-Remix-Replace\")\n ? HistoryAction.Replace\n : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n state: RouterState,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null\n ): Promise<Record<string, DataResult>> {\n let results: Record<string, DataStrategyResult>;\n let dataResults: Record<string, DataResult> = {};\n try {\n results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n state,\n request,\n matchesToLoad,\n matches,\n fetcherKey,\n manifest,\n mapRouteProperties\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n matchesToLoad.forEach((m) => {\n dataResults[m.route.id] = {\n type: ResultType.error,\n error: e,\n };\n });\n return dataResults;\n }\n\n for (let [routeId, result] of Object.entries(results)) {\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n dataResults[routeId] = {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n routeId,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n } else {\n dataResults[routeId] = await convertDataStrategyResultToDataResult(\n result\n );\n }\n }\n\n return dataResults;\n }\n\n async function callLoadersAndMaybeResolveData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let currentMatches = state.matches;\n\n // Kick off loaders and fetchers in parallel\n let loaderResultsPromise = callDataStrategy(\n \"loader\",\n state,\n request,\n matchesToLoad,\n matches,\n null\n );\n\n let fetcherResultsPromise = Promise.all(\n fetchersToLoad.map(async (f) => {\n if (f.matches && f.match && f.controller) {\n let results = await callDataStrategy(\n \"loader\",\n state,\n createClientSideRequest(init.history, f.path, f.controller.signal),\n [f.match],\n f.matches,\n f.key\n );\n let result = results[f.match.route.id];\n // Fetcher results are keyed by fetcher key from here on out, not routeId\n return { [f.key]: result };\n } else {\n return Promise.resolve({\n [f.key]: {\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n } as ErrorResult,\n });\n }\n })\n );\n\n let loaderResults = await loaderResultsPromise;\n let fetcherResults = (await fetcherResultsPromise).reduce(\n (acc, r) => Object.assign(acc, r),\n {}\n );\n\n await Promise.all([\n resolveNavigationDeferredResults(\n matches,\n loaderResults,\n request.signal,\n currentMatches,\n state.loaderData\n ),\n resolveFetcherDeferredResults(matches, fetcherResults, fetchersToLoad),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n }\n abortFetcher(key);\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher<TData = any>(key: string): Fetcher<TData> {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n if (controller) {\n controller.abort();\n fetchControllers.delete(key);\n }\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function handleNavigational404(pathname: string) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n\n return { notFoundMatches: matches, route, error };\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the <ScrollRestoration> component\n function enableScrollRestoration(\n positions: Record<string, number>,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered <ScrollRestoration/>\n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function checkFogOfWar(\n matches: AgnosticDataRouteMatch[] | null,\n routesToUse: AgnosticDataRouteObject[],\n pathname: string\n ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n if (patchRoutesOnNavigationImpl) {\n if (!matches) {\n let fogMatches = matchRoutesImpl<AgnosticDataRouteObject>(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n // If we matched a dynamic param or a splat, it might only be because\n // we haven't yet discovered other routes that would match with a\n // higher score. Call patchRoutesOnNavigation just to be sure\n let partialMatches = matchRoutesImpl<AgnosticDataRouteObject>(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n\n return { active: false, matches: null };\n }\n\n type DiscoverRoutesSuccessResult = {\n type: \"success\";\n matches: AgnosticDataRouteMatch[] | null;\n };\n type DiscoverRoutesErrorResult = {\n type: \"error\";\n error: any;\n partialMatches: AgnosticDataRouteMatch[];\n };\n type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n type DiscoverRoutesResult =\n | DiscoverRoutesSuccessResult\n | DiscoverRoutesErrorResult\n | DiscoverRoutesAbortedResult;\n\n async function discoverRoutes(\n matches: AgnosticDataRouteMatch[],\n pathname: string,\n signal: AbortSignal\n ): Promise<DiscoverRoutesResult> {\n if (!patchRoutesOnNavigationImpl) {\n return { type: \"success\", matches };\n }\n\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let localManifest = manifest;\n try {\n await patchRoutesOnNavigationImpl({\n path: pathname,\n matches: partialMatches,\n patch: (routeId, children) => {\n if (signal.aborted) return;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n localManifest,\n mapRouteProperties\n );\n },\n });\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR && !signal.aborted) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n return { type: \"success\", matches: newMatches };\n }\n\n let newPartialMatches = matchRoutesImpl<AgnosticDataRouteObject>(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // Avoid loops if the second pass results in the same partial matches\n if (\n !newPartialMatches ||\n (partialMatches.length === newPartialMatches.length &&\n partialMatches.every(\n (m, i) => m.route.id === newPartialMatches![i].route.id\n ))\n ) {\n return { type: \"success\", matches: null };\n }\n\n partialMatches = newPartialMatches;\n }\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n function patchRoutes(\n routeId: string | null,\n children: AgnosticRouteObject[]\n ): void {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties\n );\n\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial<StaticHandlerFutureConfig>;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise<StaticHandlerContext | Response> {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise<any> {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise<Omit<StaticHandlerContext, \"location\" | \"basename\"> | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `DataStrategyResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isDataStrategyResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise<Omit<StaticHandlerContext, \"location\" | \"basename\"> | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map<string, DeferredData>();\n let context = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set<string>(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null\n ): Promise<Record<string, DataResult>> {\n let results = await callDataStrategyImpl(\n dataStrategy || defaultDataStrategy,\n type,\n null,\n request,\n matchesToLoad,\n matches,\n null,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n let dataResults: Record<string, DataResult> = {};\n await Promise.all(\n matches.map(async (match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let result = results[match.route.id];\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n match.route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n dataResults[match.route.id] =\n await convertDataStrategyResultToDataResult(result);\n })\n );\n return dataResults;\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Account for `?index` params when routing to the current location\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n let nakedIndex = hasNakedIndexQuery(path.search);\n if (activeRouteMatch.route.index && !nakedIndex) {\n // Add one when we're targeting an index route\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n } else if (!activeRouteMatch.route.index && nakedIndex) {\n // Remove existing ones when we're not\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n params.delete(\"index\");\n indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? `?${qs}` : \"\";\n }\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes at/below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string,\n includeBoundary = false\n) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n return matches.slice(0, includeBoundary ? index + 1 : index);\n }\n return matches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n initialHydration: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: Set<string>,\n deletedFetchers: Set<string>,\n fetchLoadMatches: Map<string, FetchLoadMatch>,\n fetchRedirectIds: Set<string>,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryMatches = matches;\n if (initialHydration && state.errors) {\n // On initial hydration, only consider matches up to _and including_ the boundary.\n // This is inclusive to handle cases where a server loader ran successfully,\n // a child server loader bubbled up to this route, but this route has\n // `clientLoader.hydrate` so we want to still run the `clientLoader` so that\n // we have a complete version of `loaderData`\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(state.errors)[0],\n true\n );\n } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n // If an action threw an error, we call loaders up to, but not including the\n // boundary\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n pendingActionResult[0]\n );\n }\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (initialHydration) {\n return shouldLoadRouteOnHydration(route, state.loaderData, state.errors);\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial hydration (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n initialHydration ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.has(key)) {\n // Always mark for revalidation if the fetcher was cancelled\n cancelledFetcherLoads.delete(key);\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction shouldLoadRouteOnHydration(\n route: AgnosticDataRouteObject,\n loaderData: RouteData | null | undefined,\n errors: RouteData | null | undefined\n) {\n // We dunno if we have a loader - gotta find out!\n if (route.lazy) {\n return true;\n }\n\n // No loader, nothing to initialize\n if (!route.loader) {\n return false;\n }\n\n let hasData = loaderData != null && loaderData[route.id] !== undefined;\n let hasError = errors != null && errors[route.id] !== undefined;\n\n // Don't run if we error'd during SSR\n if (!hasData && hasError) {\n return false;\n }\n\n // Explicitly opting-in to running on hydration\n if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n return true;\n }\n\n // Otherwise, run if we're not yet initialized with anything\n return !hasData && !hasError;\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n let childrenToPatch: AgnosticDataRouteObject[];\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n if (!route.children) {\n route.children = [];\n }\n childrenToPatch = route.children;\n } else {\n childrenToPatch = routesToUse;\n }\n\n // Don't patch in routes we already know about so that `patch` is idempotent\n // to simplify user-land code. This is useful because we re-call the\n // `patchRoutesOnNavigation` function for matched routes with params.\n let uniqueChildren = children.filter(\n (newRoute) =>\n !childrenToPatch.some((existingRoute) =>\n isSameRoute(newRoute, existingRoute)\n )\n );\n\n let newRoutes = convertRoutesToDataRoutes(\n uniqueChildren,\n mapRouteProperties,\n [routeId || \"_\", \"patch\", String(childrenToPatch?.length || \"0\")],\n manifest\n );\n\n childrenToPatch.push(...newRoutes);\n}\n\nfunction isSameRoute(\n newRoute: AgnosticRouteObject,\n existingRoute: AgnosticRouteObject\n): boolean {\n // Most optimal check is by id\n if (\n \"id\" in newRoute &&\n \"id\" in existingRoute &&\n newRoute.id === existingRoute.id\n ) {\n return true;\n }\n\n // Second is by pathing differences\n if (\n !(\n newRoute.index === existingRoute.index &&\n newRoute.path === existingRoute.path &&\n newRoute.caseSensitive === existingRoute.caseSensitive\n )\n ) {\n return false;\n }\n\n // Pathless layout routes are trickier since we need to check children.\n // If they have no children then they're the same as far as we can tell\n if (\n (!newRoute.children || newRoute.children.length === 0) &&\n (!existingRoute.children || existingRoute.children.length === 0)\n ) {\n return true;\n }\n\n // Otherwise, we look to see if every child in the new route is already\n // represented in the existing route's children\n return newRoute.children!.every((aChild, i) =>\n existingRoute.children?.some((bChild) => isSameRoute(aChild, bChild))\n );\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record<string, any> = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nasync function defaultDataStrategy({\n matches,\n}: DataStrategyFunctionArgs): ReturnType<DataStrategyFunction> {\n let matchesToLoad = matches.filter((m) => m.shouldLoad);\n let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n return results.reduce(\n (acc, result, i) =>\n Object.assign(acc, { [matchesToLoad[i].route.id]: result }),\n {}\n );\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n state: RouterState | null,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise<Record<string, DataStrategyResult>> {\n let loadRouteDefinitionsPromises = matches.map((m) =>\n m.route.lazy\n ? loadLazyRouteModule(m.route, mapRouteProperties, manifest)\n : undefined\n );\n\n let dsMatches = matches.map((match, i) => {\n let loadRoutePromise = loadRouteDefinitionsPromises[i];\n let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);\n // `resolve` encapsulates route.lazy(), executing the loader/action,\n // and mapping return values/thrown errors to a `DataStrategyResult`. Users\n // can pass a callback to take fine-grained control over the execution\n // of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = async (handlerOverride) => {\n if (\n handlerOverride &&\n request.method === \"GET\" &&\n (match.route.lazy || match.route.loader)\n ) {\n shouldLoad = true;\n }\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n loadRoutePromise,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n });\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: dsMatches,\n request,\n params: matches[0].params,\n fetcherKey,\n context: requestContext,\n });\n\n // Wait for all routes to load here but 'swallow the error since we want\n // it to bubble up from the `await loadRoutePromise` in `callLoaderOrAction` -\n // called from `match.resolve()`\n try {\n await Promise.all(loadRouteDefinitionsPromises);\n } catch (e) {\n // No-op\n }\n\n return results;\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n loadRoutePromise: Promise<void> | undefined,\n handlerOverride: Parameters<DataStrategyMatch[\"resolve\"]>[0],\n staticContext?: unknown\n): Promise<DataStrategyResult> {\n let result: DataStrategyResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise<DataStrategyResult> => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise<DataStrategyResult> to\n // satisfy the function return value\n let abortPromise = new Promise<DataStrategyResult>((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise<DataStrategyResult> = (async () => {\n try {\n let val = await (handlerOverride\n ? handlerOverride((ctx: unknown) => actualHandler(ctx))\n : actualHandler());\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n // If we have a route.lazy promise, await that first\n if (loadRoutePromise) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadRoutePromise,\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadRoutePromise;\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // DataStrategyResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertDataStrategyResultToDataResult(\n dataStrategyResult: DataStrategyResult\n): Promise<DataResult> {\n let { result, type } = dataStrategyResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: ResultType.error,\n error: result.data,\n statusCode: result.init?.status,\n };\n }\n\n // Convert thrown data() to ErrorResponse instances\n result = new ErrorResponseImpl(\n result.init?.status || 500,\n undefined,\n result.data\n );\n }\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n if (isDataWithResponseInit(result)) {\n return {\n type: ResultType.data,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n results: Record<string, DataResult>,\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map<string, DeferredData>,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record<string, Headers>;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record<string, Headers> = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n matches.forEach((match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let id = match.route.id;\n let result = results[id];\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n results: Record<string, DataResult>,\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: Record<string, DataResult>,\n activeDeferreds: Map<string, DeferredData>\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n revalidatingFetchers.forEach((rf) => {\n let { key, match, controller } = rf;\n let result = fetcherResults[key];\n invariant(result, \"Did not find corresponding fetcher result\");\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n return;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n });\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n message,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n message?: string;\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: Record<string, DataResult>\n): { key: string; result: RedirectResult } | undefined {\n let entries = Object.entries(results);\n for (let i = entries.length - 1; i >= 0; i--) {\n let [key, result] = entries[i];\n if (isRedirectResult(result)) {\n return { key, result };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isPromise<T = unknown>(val: unknown): val is Promise<T> {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isDataStrategyResult(result: unknown): result is DataStrategyResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectDataStrategyResultResult(result: DataStrategyResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDataWithResponseInit(\n value: any\n): value is DataWithResponseInit<unknown> {\n return (\n typeof value === \"object\" &&\n value != null &&\n \"type\" in value &&\n \"data\" in value &&\n \"init\" in value &&\n value.type === \"DataWithResponseInit\"\n );\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveNavigationDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record<string, DataResult>,\n signal: AbortSignal,\n currentMatches: AgnosticDataRouteMatch[],\n currentLoaderData: RouteData\n) {\n let entries = Object.entries(results);\n for (let index = 0; index < entries.length; index++) {\n let [routeId, result] = entries[index];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && isRevalidatingLoader) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, false).then((result) => {\n if (result) {\n results[routeId] = result;\n }\n });\n }\n }\n}\n\nasync function resolveFetcherDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record<string, DataResult>,\n revalidatingFetchers: RevalidatingFetcher[]\n) {\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, routeId, controller } = revalidatingFetchers[index];\n let result = results[key];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n if (isDeferredResult(result)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n invariant(\n controller,\n \"Expected an AbortController for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, controller.signal, true).then(\n (result) => {\n if (result) {\n results[key] = result;\n }\n }\n );\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise<SuccessResult | ErrorResult | undefined> {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map<string, Set<string>>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map<string, Set<string>>\n) {\n if (transitions.size > 0) {\n let json: Record<string, string[]> = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n//#endregion\n","export const DEFAULT_ENVIRONMENT = 'production';\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import type { Event, EventHint, EventProcessor } from '@sentry/types';\nimport { SyncPromise, getGlobalSingleton, isThenable, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\n\n/**\n * Returns the global event processors.\n * @deprecated Global event processors will be removed in v8.\n */\nexport function getGlobalEventProcessors(): EventProcessor[] {\n return getGlobalSingleton<EventProcessor[]>('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @deprecated Use `addEventProcessor` instead. Global event processors will be removed in v8.\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n // eslint-disable-next-line deprecation/deprecation\n getGlobalEventProcessors().push(callback);\n}\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nexport function notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint: EventHint,\n index: number = 0,\n): PromiseLike<Event | null> {\n return new SyncPromise<Event | null>((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n\n DEBUG_BUILD && processor.id && result === null && logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n}\n","import type {\n Breadcrumb,\n BreadcrumbHint,\n CaptureContext,\n CheckIn,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n FinishedCheckIn,\n MonitorConfig,\n Primitive,\n Scope as ScopeInterface,\n Session,\n SessionContext,\n Severity,\n SeverityLevel,\n Span,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport { GLOBAL_OBJ, isThenable, logger, timestampInSeconds, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Hub } from './hub';\nimport { runWithAsyncContext } from './hub';\nimport { getCurrentHub, getIsolationScope } from './hub';\nimport type { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport type { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nexport function captureException(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n exception: any,\n hint?: ExclusiveEventHintOrCaptureContext,\n): string {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nexport function captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n captureContext?: CaptureContext | Severity | SeverityLevel,\n): string {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param exception The event to send to Sentry.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nexport function captureEvent(event: Event, hint?: EventHint): string {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n *\n * @deprecated Use getCurrentScope() directly.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function configureScope(callback: (scope: Scope) => void): ReturnType<Hub['configureScope']> {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): ReturnType<Hub['addBreadcrumb']> {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().addBreadcrumb(breadcrumb, hint);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, deprecation/deprecation\nexport function setContext(name: string, context: { [key: string]: any } | null): ReturnType<Hub['setContext']> {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setExtras(extras: Extras): ReturnType<Hub['setExtras']> {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setExtra(key: string, extra: Extra): ReturnType<Hub['setExtra']> {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setTags(tags: { [key: string]: Primitive }): ReturnType<Hub['setTags']> {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setTag(key: string, value: Primitive): ReturnType<Hub['setTag']> {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setUser(user: User | null): ReturnType<Hub['setUser']> {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n */\nexport function withScope<T>(callback: (scope: Scope) => T): T;\n/**\n * Set the given scope as the active scope in the callback.\n */\nexport function withScope<T>(scope: ScopeInterface | undefined, callback: (scope: Scope) => T): T;\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nexport function withScope<T>(\n ...rest: [callback: (scope: Scope) => T] | [scope: ScopeInterface | undefined, callback: (scope: Scope) => T]\n): T {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n\n // If a scope is defined, we want to make this the active scope instead of the default one\n if (rest.length === 2) {\n const [scope, callback] = rest;\n if (!scope) {\n // eslint-disable-next-line deprecation/deprecation\n return hub.withScope(callback);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return hub.withScope(() => {\n // eslint-disable-next-line deprecation/deprecation\n hub.getStackTop().scope = scope as Scope;\n return callback(scope as Scope);\n });\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return hub.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n *\n * @param callback The callback in which the passed isolation scope is active. (Note: In environments without async\n * context strategy, the currently active isolation scope may change within execution of the callback.)\n * @returns The same value that `callback` returns.\n */\nexport function withIsolationScope<T>(callback: (isolationScope: Scope) => T): T {\n return runWithAsyncContext(() => {\n return callback(getIsolationScope());\n });\n}\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback.\n *\n * @param span Spans started in the context of the provided callback will be children of this span.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nexport function withActiveSpan<T>(span: Span, callback: (scope: Scope) => T): T {\n return withScope(scope => {\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(span);\n return callback(scope);\n });\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\nexport function startTransaction(\n context: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n // eslint-disable-next-line deprecation/deprecation\n): ReturnType<Hub['startTransaction']> {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function captureCheckIn(checkIn: CheckIn, upsertMonitorConfig?: MonitorConfig): string {\n const scope = getCurrentScope();\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && logger.warn('Cannot capture check-in. No client defined.');\n } else if (!client.captureCheckIn) {\n DEBUG_BUILD && logger.warn('Cannot capture check-in. Client does not support sending check-ins.');\n } else {\n return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n }\n\n return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function withMonitor<T>(\n monitorSlug: CheckIn['monitorSlug'],\n callback: () => T,\n upsertMonitorConfig?: MonitorConfig,\n): T {\n const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n const now = timestampInSeconds();\n\n function finishCheckIn(status: FinishedCheckIn['status']): void {\n captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n }\n\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback();\n } catch (e) {\n finishCheckIn('error');\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n Promise.resolve(maybePromiseResult).then(\n () => {\n finishCheckIn('ok');\n },\n () => {\n finishCheckIn('error');\n },\n );\n } else {\n finishCheckIn('ok');\n }\n\n return maybePromiseResult;\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function flush(timeout?: number): Promise<boolean> {\n const client = getClient();\n if (client) {\n return client.flush(timeout);\n }\n DEBUG_BUILD && logger.warn('Cannot flush events. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function close(timeout?: number): Promise<boolean> {\n const client = getClient();\n if (client) {\n return client.close(timeout);\n }\n DEBUG_BUILD && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().lastEventId();\n}\n\n/**\n * Get the currently active client.\n */\nexport function getClient<C extends Client>(): C | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().getClient<C>();\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nexport function isInitialized(): boolean {\n return !!getClient();\n}\n\n/**\n * Get the currently active scope.\n */\nexport function getCurrentScope(): Scope {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().getScope();\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nexport function startSession(context?: SessionContext): Session {\n const client = getClient();\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: currentScope.getUser() || isolationScope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = isolationScope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n\n endSession();\n\n // Afterwards we set the new session on the scope\n isolationScope.setSession(session);\n\n // TODO (v8): Remove this and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n currentScope.setSession(session);\n\n return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nexport function endSession(): void {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session) {\n closeSession(session);\n }\n _sendSessionUpdate();\n\n // the session is over; take it off of the scope\n isolationScope.setSession();\n\n // TODO (v8): Remove this and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n currentScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate(): void {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n const client = getClient();\n // TODO (v8): Remove currentScope and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session && client && client.captureSession) {\n client.captureSession(session);\n }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n * Defaults to `false`.\n */\nexport function captureSession(end: boolean = false): void {\n // both send the update and pull the session from the scope\n if (end) {\n endSession();\n return;\n }\n\n // only send the update\n _sendSessionUpdate();\n}\n","/* eslint-disable max-lines */\nimport type {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n Session,\n SessionContext,\n Severity,\n SeverityLevel,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport {\n GLOBAL_OBJ,\n consoleSandbox,\n dateTimestampInSeconds,\n getGlobalSingleton,\n isThenable,\n logger,\n uuid4,\n} from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport { SDK_VERSION } from './version';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = parseFloat(SDK_VERSION);\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\nexport interface RunWithAsyncContextOptions {\n /** Whether to reuse an existing async context if one exists. Defaults to false. */\n reuseExisting?: boolean;\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Strategy used to track async context.\n */\nexport interface AsyncContextStrategy {\n /**\n * Gets the current async context. Returns undefined if there is no current async context.\n */\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub: () => Hub | undefined;\n /**\n * Runs the supplied callback in its own async context.\n */\n runWithAsyncContext<T>(callback: () => T, options: RunWithAsyncContextOptions): T;\n}\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n client?: Client;\n scope: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: {\n // eslint-disable-next-line deprecation/deprecation\n hub?: Hub;\n acs?: AsyncContextStrategy;\n /**\n * Extra Hub properties injected by various SDKs\n */\n integrations?: Integration[];\n extensions?: {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n/**\n * @deprecated The `Hub` class will be removed in version 8 of the SDK in favour of `Scope` and `Client` objects.\n *\n * If you previously used the `Hub` class directly, replace it with `Scope` and `Client` objects. More information:\n * - [Multiple Sentry Instances](https://docs.sentry.io/platforms/javascript/best-practices/multiple-sentry-instances/)\n * - [Browser Extensions](https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/)\n *\n * Some of our APIs are typed with the Hub class instead of the interface (e.g. `getCurrentHub`). Most of them are deprecated\n * themselves and will also be removed in version 8. More information:\n * - [Migration Guide](https://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md#deprecate-hub)\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n private _isolationScope: Scope;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n *\n * @deprecated Instantiation of Hub objects is deprecated and the constructor will be removed in version 8 of the SDK.\n *\n * If you are currently using the Hub for multi-client use like so:\n *\n * ```\n * // OLD\n * const hub = new Hub();\n * hub.bindClient(client);\n * makeMain(hub)\n * ```\n *\n * instead initialize the client as follows:\n *\n * ```\n * // NEW\n * Sentry.withIsolationScope(() => {\n * Sentry.setCurrentClient(client);\n * client.init();\n * });\n * ```\n *\n * If you are using the Hub to capture events like so:\n *\n * ```\n * // OLD\n * const client = new Client();\n * const hub = new Hub(client);\n * hub.captureException()\n * ```\n *\n * instead capture isolated events as follows:\n *\n * ```\n * // NEW\n * const client = new Client();\n * const scope = new Scope();\n * scope.setClient(client);\n * scope.captureException();\n * ```\n */\n public constructor(\n client?: Client,\n scope?: Scope,\n isolationScope?: Scope,\n private readonly _version: number = API_VERSION,\n ) {\n let assignedScope;\n if (!scope) {\n assignedScope = new Scope();\n assignedScope.setClient(client);\n } else {\n assignedScope = scope;\n }\n\n let assignedIsolationScope;\n if (!isolationScope) {\n assignedIsolationScope = new Scope();\n assignedIsolationScope.setClient(client);\n } else {\n assignedIsolationScope = isolationScope;\n }\n\n this._stack = [{ scope: assignedScope }];\n\n if (client) {\n // eslint-disable-next-line deprecation/deprecation\n this.bindClient(client);\n }\n\n this._isolationScope = assignedIsolationScope;\n }\n\n /**\n * Checks if this hub's version is older than the given version.\n *\n * @param version A version number to compare to.\n * @return True if the given version is newer; otherwise false.\n *\n * @deprecated This will be removed in v8.\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * This binds the given client to the current scope.\n * @param client An SDK client (client) instance.\n *\n * @deprecated Use `initAndBind()` directly, or `setCurrentClient()` and/or `client.init()` instead.\n */\n public bindClient(client?: Client): void {\n // eslint-disable-next-line deprecation/deprecation\n const top = this.getStackTop();\n top.client = client;\n top.scope.setClient(client);\n // eslint-disable-next-line deprecation/deprecation\n if (client && client.setupIntegrations) {\n // eslint-disable-next-line deprecation/deprecation\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `withScope` instead.\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n // eslint-disable-next-line deprecation/deprecation\n const scope = this.getScope().clone();\n // eslint-disable-next-line deprecation/deprecation\n this.getStack().push({\n // eslint-disable-next-line deprecation/deprecation\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `withScope` instead.\n */\n public popScope(): boolean {\n // eslint-disable-next-line deprecation/deprecation\n if (this.getStack().length <= 1) return false;\n // eslint-disable-next-line deprecation/deprecation\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.withScope()` instead.\n */\n public withScope<T>(callback: (scope: Scope) => T): T {\n // eslint-disable-next-line deprecation/deprecation\n const scope = this.pushScope();\n\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback(scope);\n } catch (e) {\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n // @ts-expect-error - isThenable returns the wrong type\n return maybePromiseResult.then(\n res => {\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n return res;\n },\n e => {\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n throw e;\n },\n );\n }\n\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n return maybePromiseResult;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.getClient()` instead.\n */\n public getClient<C extends Client>(): C | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return this.getStackTop().client as C;\n }\n\n /**\n * Returns the scope of the top stack.\n *\n * @deprecated Use `Sentry.getCurrentScope()` instead.\n */\n public getScope(): Scope {\n // eslint-disable-next-line deprecation/deprecation\n return this.getStackTop().scope;\n }\n\n /**\n * @deprecated Use `Sentry.getIsolationScope()` instead.\n */\n public getIsolationScope(): Scope {\n return this._isolationScope;\n }\n\n /**\n * Returns the scope stack for domains or the process.\n * @deprecated This will be removed in v8.\n */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /**\n * Returns the topmost scope layer in the order domain > local > process.\n * @deprecated This will be removed in v8.\n */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.captureException()` instead.\n */\n public captureException(exception: unknown, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error('Sentry syntheticException');\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().captureException(exception, {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.captureMessage()` instead.\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n ): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error(message);\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().captureMessage(message, level, {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.captureEvent()` instead.\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (!event.type) {\n this._lastEventId = eventId;\n }\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().captureEvent(event, { ...hint, event_id: eventId });\n return eventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated This will be removed in v8.\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.addBreadcrumb()` instead.\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n\n if (!client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n if (client.emit) {\n client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n }\n\n // TODO(v8): I know this comment doesn't make much sense because the hub will be deprecated but I still wanted to\n // write it down. In theory, we would have to add the breadcrumbs to the isolation scope here, however, that would\n // duplicate all of the breadcrumbs. There was the possibility of adding breadcrumbs to both, the isolation scope\n // and the normal scope, and deduplicating it down the line in the event processing pipeline. However, that would\n // have been very fragile, because the breadcrumb objects would have needed to keep their identity all throughout\n // the event processing pipeline.\n // In the new implementation, the top level `Sentry.addBreadcrumb()` should ONLY write to the isolation scope.\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setUser()` instead.\n */\n public setUser(user: User | null): void {\n // TODO(v8): The top level `Sentry.setUser()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setUser(user);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setUser(user);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setTags()` instead.\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n // TODO(v8): The top level `Sentry.setTags()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setTags(tags);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setTags(tags);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setExtras()` instead.\n */\n public setExtras(extras: Extras): void {\n // TODO(v8): The top level `Sentry.setExtras()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setExtras(extras);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setExtras(extras);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setTag()` instead.\n */\n public setTag(key: string, value: Primitive): void {\n // TODO(v8): The top level `Sentry.setTag()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setTag(key, value);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setTag(key, value);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setExtra()` instead.\n */\n public setExtra(key: string, extra: Extra): void {\n // TODO(v8): The top level `Sentry.setExtra()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setExtra(key, extra);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setContext()` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n // TODO(v8): The top level `Sentry.setContext()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setContext(name, context);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setContext(name, context);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `getScope()` directly.\n */\n public configureScope(callback: (scope: Scope) => void): void {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line deprecation/deprecation\n public run(callback: (hub: Hub) => void): void {\n // eslint-disable-next-line deprecation/deprecation\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n // eslint-disable-next-line deprecation/deprecation\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.getClient().getIntegrationByName()` instead.\n */\n public getIntegration<T extends Integration>(integration: IntegrationClass<T>): T | null {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n if (!client) return null;\n try {\n // eslint-disable-next-line deprecation/deprecation\n return client.getIntegration(integration);\n } catch (_oO) {\n DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n const result = this._callExtensionMethod<Transaction>('startTransaction', context, customSamplingContext);\n\n if (DEBUG_BUILD && !result) {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n if (!client) {\n logger.warn(\n \"Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'\",\n );\n } else {\n logger.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\nSentry.addTracingExtensions();\nSentry.init({...});\n`);\n }\n }\n\n return result;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `spanToTraceHeader()` instead.\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use top level `captureSession` instead.\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n // eslint-disable-next-line deprecation/deprecation\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n * @deprecated Use top level `endSession` instead.\n */\n public endSession(): void {\n // eslint-disable-next-line deprecation/deprecation\n const layer = this.getStackTop();\n const scope = layer.scope;\n const session = scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n scope.setSession();\n }\n\n /**\n * @inheritDoc\n * @deprecated Use top level `startSession` instead.\n */\n public startSession(context?: SessionContext): Session {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: scope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n // eslint-disable-next-line deprecation/deprecation\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n *\n * @deprecated Use top-level `getClient().getOptions().sendDefaultPii` instead. This function\n * only unnecessarily increased API surface but only wrapped accessing the option.\n */\n public shouldSendDefaultPii(): boolean {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n const options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n\n const session = scope.getSession();\n if (session && client && client.captureSession) {\n client.captureSession(session);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-expect-error Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod<T>(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n DEBUG_BUILD && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return GLOBAL_OBJ;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n *\n * @deprecated Use `setCurrentClient()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n *\n * @deprecated Use the respective replacement method directly instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n const hub = registry.__SENTRY__.acs.getCurrentHub();\n\n if (hub) {\n return hub;\n }\n }\n\n // Return hub that lives on a global object\n return getGlobalHub(registry);\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current exection context,\n * meaning that it will remain stable for the same Hub.\n */\nexport function getIsolationScope(): Scope {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().getIsolationScope();\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction getGlobalHub(registry: Carrier = getMainCarrier()): Hub {\n // If there's no hub, or its an old API, assign a new one\n\n if (\n !hasHubOnCarrier(registry) ||\n // eslint-disable-next-line deprecation/deprecation\n getHubFromCarrier(registry).isOlderThan(API_VERSION)\n ) {\n // eslint-disable-next-line deprecation/deprecation\n setHubOnCarrier(registry, new Hub());\n }\n\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * If the carrier does not contain a hub, a new hub is created with the global hub client and scope.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function ensureHubOnCarrier(carrier: Carrier, parent: Hub = getGlobalHub()): void {\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (\n !hasHubOnCarrier(carrier) ||\n // eslint-disable-next-line deprecation/deprecation\n getHubFromCarrier(carrier).isOlderThan(API_VERSION)\n ) {\n // eslint-disable-next-line deprecation/deprecation\n const client = parent.getClient();\n // eslint-disable-next-line deprecation/deprecation\n const scope = parent.getScope();\n // eslint-disable-next-line deprecation/deprecation\n const isolationScope = parent.getIsolationScope();\n // eslint-disable-next-line deprecation/deprecation\n setHubOnCarrier(carrier, new Hub(client, scope.clone(), isolationScope.clone()));\n }\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nexport function setAsyncContextStrategy(strategy: AsyncContextStrategy | undefined): void {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n registry.__SENTRY__ = registry.__SENTRY__ || {};\n registry.__SENTRY__.acs = strategy;\n}\n\n/**\n * Runs the supplied callback in its own async context. Async Context strategies are defined per SDK.\n *\n * @param callback The callback to run in its own async context\n * @param options Options to pass to the async context strategy\n * @returns The result of the callback\n */\nexport function runWithAsyncContext<T>(callback: () => T, options: RunWithAsyncContextOptions = {}): T {\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n return registry.__SENTRY__.acs.runWithAsyncContext(callback, options);\n }\n\n // if there was no strategy, fallback to just calling the callback\n return callback();\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n // eslint-disable-next-line deprecation/deprecation\n return getGlobalSingleton<Hub>('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n","/* eslint-disable max-lines */\nimport type {\n Attachment,\n Breadcrumb,\n CaptureContext,\n Client,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n PropagationContext,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n ScopeData,\n Session,\n Severity,\n SeverityLevel,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, isPlainObject, logger, uuid4 } from '@sentry/utils';\n\nimport { getGlobalEventProcessors, notifyEventProcessors } from './eventProcessors';\nimport { updateSession } from './session';\nimport { applyScopeDataToEvent } from './utils/applyScopeDataToEvent';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * The global scope is kept in this module.\n * When accessing this via `getGlobalScope()` we'll make sure to set one if none is currently present.\n */\nlet globalScope: ScopeInterface | undefined;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void>;\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[];\n\n /** User */\n protected _user: User;\n\n /** Tags */\n protected _tags: { [key: string]: Primitive };\n\n /** Extra */\n protected _extra: Extras;\n\n /** Contexts */\n protected _contexts: Contexts;\n\n /** Attachments */\n protected _attachments: Attachment[];\n\n /** Propagation Context for distributed tracing */\n protected _propagationContext: PropagationContext;\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n protected _sdkProcessingMetadata: { [key: string]: unknown };\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n // eslint-disable-next-line deprecation/deprecation\n protected _level?: Severity | SeverityLevel;\n\n /**\n * Transaction Name\n */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\n\n /** The client on this scope */\n protected _client?: Client;\n\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n public constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n this._propagationContext = generatePropagationContext();\n }\n\n /**\n * Inherit values from the parent scope.\n * @deprecated Use `scope.clone()` and `new Scope()` instead.\n */\n public static clone(scope?: Scope): Scope {\n return scope ? scope.clone() : new Scope();\n }\n\n /**\n * Clone this scope instance.\n */\n public clone(): Scope {\n const newScope = new Scope();\n newScope._breadcrumbs = [...this._breadcrumbs];\n newScope._tags = { ...this._tags };\n newScope._extra = { ...this._extra };\n newScope._contexts = { ...this._contexts };\n newScope._user = this._user;\n newScope._level = this._level;\n newScope._span = this._span;\n newScope._session = this._session;\n newScope._transactionName = this._transactionName;\n newScope._fingerprint = this._fingerprint;\n newScope._eventProcessors = [...this._eventProcessors];\n newScope._requestSession = this._requestSession;\n newScope._attachments = [...this._attachments];\n newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n newScope._propagationContext = { ...this._propagationContext };\n newScope._client = this._client;\n\n return newScope;\n }\n\n /** Update the client on the scope. */\n public setClient(client: Client | undefined): void {\n this._client = client;\n }\n\n /**\n * Get the client assigned to this scope.\n *\n * It is generally recommended to use the global function `Sentry.getClient()` instead, unless you know what you are doing.\n */\n public getClient(): Client | undefined {\n return this._client;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n // If null is passed we want to unset everything, but still define keys,\n // so that later down in the pipeline any existing values are cleared.\n this._user = user || {\n email: undefined,\n id: undefined,\n ip_address: undefined,\n segment: undefined,\n username: undefined,\n };\n\n if (this._session) {\n updateSession(this._session, { user });\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel,\n ): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the transaction name on the scope for future events.\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the Span on the scope.\n * @param span Span\n * @deprecated Instead of setting a span on a scope, use `startSpan()`/`startSpanManual()` instead.\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Returns the `Span` if there is one.\n * @deprecated Use `getActiveSpan()` instead.\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * Returns the `Transaction` attached to the scope (if there is one).\n * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead.\n */\n public getTransaction(): Transaction | undefined {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this._span;\n // Cannot replace with getRootSpan because getRootSpan returns a span, not a transaction\n // Also, this method will be removed anyway.\n // eslint-disable-next-line deprecation/deprecation\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n if (scopeToMerge instanceof Scope) {\n const scopeData = scopeToMerge.getScopeData();\n\n this._tags = { ...this._tags, ...scopeData.tags };\n this._extra = { ...this._extra, ...scopeData.extra };\n this._contexts = { ...this._contexts, ...scopeData.contexts };\n if (scopeData.user && Object.keys(scopeData.user).length) {\n this._user = scopeData.user;\n }\n if (scopeData.level) {\n this._level = scopeData.level;\n }\n if (scopeData.fingerprint.length) {\n this._fingerprint = scopeData.fingerprint;\n }\n if (scopeToMerge.getRequestSession()) {\n this._requestSession = scopeToMerge.getRequestSession();\n }\n if (scopeData.propagationContext) {\n this._propagationContext = scopeData.propagationContext;\n }\n } else if (isPlainObject(scopeToMerge)) {\n const scopeContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...scopeContext.tags };\n this._extra = { ...this._extra, ...scopeContext.extra };\n this._contexts = { ...this._contexts, ...scopeContext.contexts };\n if (scopeContext.user) {\n this._user = scopeContext.user;\n }\n if (scopeContext.level) {\n this._level = scopeContext.level;\n }\n if (scopeContext.fingerprint) {\n this._fingerprint = scopeContext.fingerprint;\n }\n if (scopeContext.requestSession) {\n this._requestSession = scopeContext.requestSession;\n }\n if (scopeContext.propagationContext) {\n this._propagationContext = scopeContext.propagationContext;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n this._propagationContext = generatePropagationContext();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n\n const breadcrumbs = this._breadcrumbs;\n breadcrumbs.push(mergedBreadcrumb);\n this._breadcrumbs = breadcrumbs.length > maxCrumbs ? breadcrumbs.slice(-maxCrumbs) : breadcrumbs;\n\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getLastBreadcrumb(): Breadcrumb | undefined {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addAttachment(attachment: Attachment): this {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `getScopeData()` instead.\n */\n public getAttachments(): Attachment[] {\n const data = this.getScopeData();\n\n return data.attachments;\n }\n\n /**\n * @inheritDoc\n */\n public clearAttachments(): this {\n this._attachments = [];\n return this;\n }\n\n /** @inheritDoc */\n public getScopeData(): ScopeData {\n const {\n _breadcrumbs,\n _attachments,\n _contexts,\n _tags,\n _extra,\n _user,\n _level,\n _fingerprint,\n _eventProcessors,\n _propagationContext,\n _sdkProcessingMetadata,\n _transactionName,\n _span,\n } = this;\n\n return {\n breadcrumbs: _breadcrumbs,\n attachments: _attachments,\n contexts: _contexts,\n tags: _tags,\n extra: _extra,\n user: _user,\n level: _level,\n fingerprint: _fingerprint || [],\n eventProcessors: _eventProcessors,\n propagationContext: _propagationContext,\n sdkProcessingMetadata: _sdkProcessingMetadata,\n transactionName: _transactionName,\n span: _span,\n };\n }\n\n /**\n * Applies data from the scope to the event and runs all event processors on it.\n *\n * @param event Event\n * @param hint Object containing additional information about the original exception, for use by the event processors.\n * @hidden\n * @deprecated Use `applyScopeDataToEvent()` directly\n */\n public applyToEvent(\n event: Event,\n hint: EventHint = {},\n additionalEventProcessors: EventProcessor[] = [],\n ): PromiseLike<Event | null> {\n applyScopeDataToEvent(event, this.getScopeData());\n\n // TODO (v8): Update this order to be: Global > Client > Scope\n const eventProcessors: EventProcessor[] = [\n ...additionalEventProcessors,\n // eslint-disable-next-line deprecation/deprecation\n ...getGlobalEventProcessors(),\n ...this._eventProcessors,\n ];\n\n return notifyEventProcessors(eventProcessors, event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setPropagationContext(context: PropagationContext): this {\n this._propagationContext = context;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getPropagationContext(): PropagationContext {\n return this._propagationContext;\n }\n\n /**\n * Capture an exception for this scope.\n *\n * @param exception The exception to capture.\n * @param hint Optinal additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\n public captureException(exception: unknown, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture exception!');\n return eventId;\n }\n\n const syntheticException = new Error('Sentry syntheticException');\n\n this._client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Capture a message for this scope.\n *\n * @param message The message to capture.\n * @param level An optional severity level to report the message with.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured message.\n */\n public captureMessage(message: string, level?: SeverityLevel, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture message!');\n return eventId;\n }\n\n const syntheticException = new Error(message);\n\n this._client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Captures a manually created event for this scope and sends it to Sentry.\n *\n * @param exception The event to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture event!');\n return eventId;\n }\n\n this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n return eventId;\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nexport function getGlobalScope(): ScopeInterface {\n if (!globalScope) {\n globalScope = new Scope();\n }\n\n return globalScope;\n}\n\n/**\n * This is mainly needed for tests.\n * DO NOT USE this, as this is an internal API and subject to change.\n * @hidden\n */\nexport function setGlobalScope(scope: ScopeInterface | undefined): void {\n globalScope = scope;\n}\n\nfunction generatePropagationContext(): PropagationContext {\n return {\n traceId: uuid4(),\n spanId: uuid4().substring(16),\n };\n}\n","import type { SerializedSession, Session, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nexport function makeSession(context?: Omit<SessionContext, 'started' | 'status'>): Session {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session: Session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.abnormal_mechanism) {\n session.abnormal_mechanism = context.abnormal_mechanism;\n }\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nexport function closeSession(session: Session, status?: Exclude<SessionStatus, 'ok'>): void {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session: Session): SerializedSession {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n abnormal_mechanism: session.abnormal_mechanism,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n","import type { Client, DynamicSamplingContext, Scope, Span, Transaction } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getClient, getCurrentScope } from '../exports';\nimport { getRootSpan } from '../utils/getRootSpan';\nimport { spanIsSampled, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nexport function getDynamicSamplingContextFromClient(\n trace_id: string,\n client: Client,\n scope?: Scope,\n): DynamicSamplingContext {\n const options = client.getOptions();\n\n const { publicKey: public_key } = client.getDsn() || {};\n // TODO(v8): Remove segment from User\n // eslint-disable-next-line deprecation/deprecation\n const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n const dsc = dropUndefinedKeys({\n environment: options.environment || DEFAULT_ENVIRONMENT,\n release: options.release,\n user_segment,\n public_key,\n trace_id,\n }) as DynamicSamplingContext;\n\n client.emit && client.emit('createDsc', dsc);\n\n return dsc;\n}\n\n/**\n * A Span with a frozen dynamic sampling context.\n */\ntype TransactionWithV7FrozenDsc = Transaction & { _frozenDynamicSamplingContext?: DynamicSamplingContext };\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nexport function getDynamicSamplingContextFromSpan(span: Span): Readonly<Partial<DynamicSamplingContext>> {\n const client = getClient();\n if (!client) {\n return {};\n }\n\n // passing emit=false here to only emit later once the DSC is actually populated\n const dsc = getDynamicSamplingContextFromClient(spanToJSON(span).trace_id || '', client, getCurrentScope());\n\n // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n const txn = getRootSpan(span) as TransactionWithV7FrozenDsc | undefined;\n if (!txn) {\n return dsc;\n }\n\n // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n // For now we need to avoid breaking users who directly created a txn with a DSC, where this field is still set.\n // @see Transaction class constructor\n const v7FrozenDsc = txn && txn._frozenDynamicSamplingContext;\n if (v7FrozenDsc) {\n return v7FrozenDsc;\n }\n\n // TODO (v8): Replace txn.metadata with txn.attributes[]\n // We can't do this yet because attributes aren't always set yet.\n // eslint-disable-next-line deprecation/deprecation\n const { sampleRate: maybeSampleRate, source } = txn.metadata;\n if (maybeSampleRate != null) {\n dsc.sample_rate = `${maybeSampleRate}`;\n }\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const jsonSpan = spanToJSON(txn);\n\n // after JSON conversion, txn.name becomes jsonSpan.description\n if (source && source !== 'url') {\n dsc.transaction = jsonSpan.description;\n }\n\n dsc.sampled = String(spanIsSampled(txn));\n\n client.emit && client.emit('createDsc', dsc);\n\n return dsc;\n}\n","import type { Breadcrumb, Event, ScopeData, Span } from '@sentry/types';\nimport { arrayify, dropUndefinedKeys } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext';\nimport { getRootSpan } from './getRootSpan';\nimport { spanToJSON, spanToTraceContext } from './spanUtils';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nexport function applyScopeDataToEvent(event: Event, data: ScopeData): void {\n const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n // Apply general data\n applyDataToEvent(event, data);\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (span) {\n applySpanToEvent(event, span);\n }\n\n applyFingerprintToEvent(event, fingerprint);\n applyBreadcrumbsToEvent(event, breadcrumbs);\n applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nexport function mergeScopeData(data: ScopeData, mergeData: ScopeData): void {\n const {\n extra,\n tags,\n user,\n contexts,\n level,\n sdkProcessingMetadata,\n breadcrumbs,\n fingerprint,\n eventProcessors,\n attachments,\n propagationContext,\n // eslint-disable-next-line deprecation/deprecation\n transactionName,\n span,\n } = mergeData;\n\n mergeAndOverwriteScopeData(data, 'extra', extra);\n mergeAndOverwriteScopeData(data, 'tags', tags);\n mergeAndOverwriteScopeData(data, 'user', user);\n mergeAndOverwriteScopeData(data, 'contexts', contexts);\n mergeAndOverwriteScopeData(data, 'sdkProcessingMetadata', sdkProcessingMetadata);\n\n if (level) {\n data.level = level;\n }\n\n if (transactionName) {\n // eslint-disable-next-line deprecation/deprecation\n data.transactionName = transactionName;\n }\n\n if (span) {\n data.span = span;\n }\n\n if (breadcrumbs.length) {\n data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n }\n\n if (fingerprint.length) {\n data.fingerprint = [...data.fingerprint, ...fingerprint];\n }\n\n if (eventProcessors.length) {\n data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n }\n\n if (attachments.length) {\n data.attachments = [...data.attachments, ...attachments];\n }\n\n data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nexport function mergeAndOverwriteScopeData<\n Prop extends 'extra' | 'tags' | 'user' | 'contexts' | 'sdkProcessingMetadata',\n Data extends ScopeData,\n>(data: Data, prop: Prop, mergeVal: Data[Prop]): void {\n if (mergeVal && Object.keys(mergeVal).length) {\n // Clone object\n data[prop] = { ...data[prop] };\n for (const key in mergeVal) {\n if (Object.prototype.hasOwnProperty.call(mergeVal, key)) {\n data[prop][key] = mergeVal[key];\n }\n }\n }\n}\n\n/** Exported only for tests */\nexport function mergeArray<Prop extends 'breadcrumbs' | 'fingerprint'>(\n event: Event,\n prop: Prop,\n mergeVal: ScopeData[Prop],\n): void {\n const prevVal = event[prop];\n // If we are not merging any new values,\n // we only need to proceed if there was an empty array before (as we want to replace it with undefined)\n if (!mergeVal.length && (!prevVal || prevVal.length)) {\n return;\n }\n\n const merged = [...(prevVal || []), ...mergeVal] as ScopeData[Prop];\n event[prop] = merged.length ? merged : undefined;\n}\n\nfunction applyDataToEvent(event: Event, data: ScopeData): void {\n const {\n extra,\n tags,\n user,\n contexts,\n level,\n // eslint-disable-next-line deprecation/deprecation\n transactionName,\n } = data;\n\n const cleanedExtra = dropUndefinedKeys(extra);\n if (cleanedExtra && Object.keys(cleanedExtra).length) {\n event.extra = { ...cleanedExtra, ...event.extra };\n }\n\n const cleanedTags = dropUndefinedKeys(tags);\n if (cleanedTags && Object.keys(cleanedTags).length) {\n event.tags = { ...cleanedTags, ...event.tags };\n }\n\n const cleanedUser = dropUndefinedKeys(user);\n if (cleanedUser && Object.keys(cleanedUser).length) {\n event.user = { ...cleanedUser, ...event.user };\n }\n\n const cleanedContexts = dropUndefinedKeys(contexts);\n if (cleanedContexts && Object.keys(cleanedContexts).length) {\n event.contexts = { ...cleanedContexts, ...event.contexts };\n }\n\n if (level) {\n event.level = level;\n }\n\n if (transactionName) {\n event.transaction = transactionName;\n }\n}\n\nfunction applyBreadcrumbsToEvent(event: Event, breadcrumbs: Breadcrumb[]): void {\n const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event: Event, sdkProcessingMetadata: ScopeData['sdkProcessingMetadata']): void {\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...sdkProcessingMetadata,\n };\n}\n\nfunction applySpanToEvent(event: Event, span: Span): void {\n event.contexts = { trace: spanToTraceContext(span), ...event.contexts };\n const rootSpan = getRootSpan(span);\n if (rootSpan) {\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n ...event.sdkProcessingMetadata,\n };\n const transactionName = spanToJSON(rootSpan).description;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n}\n\n/**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\nfunction applyFingerprintToEvent(event: Event, fingerprint: ScopeData['fingerprint'] | undefined): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n // If we have something on the scope, then merge it with event\n if (fingerprint) {\n event.fingerprint = event.fingerprint.concat(fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n}\n","import type { Span } from '@sentry/types';\n\n/**\n * Returns the root span of a given span.\n *\n * As long as we use `Transaction`s internally, the returned root span\n * will be a `Transaction` but be aware that this might change in the future.\n *\n * If the given span has no root span or transaction, `undefined` is returned.\n */\nexport function getRootSpan(span: Span): Span | undefined {\n // TODO (v8): Remove this check and just return span\n // eslint-disable-next-line deprecation/deprecation\n return span.transaction;\n}\n","import type {\n CaptureContext,\n Client,\n ClientOptions,\n Event,\n EventHint,\n Scope as ScopeInterface,\n ScopeContext,\n StackFrame,\n StackParser,\n} from '@sentry/types';\nimport { GLOBAL_OBJ, addExceptionMechanism, dateTimestampInSeconds, normalize, truncate, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getGlobalEventProcessors, notifyEventProcessors } from '../eventProcessors';\nimport { Scope, getGlobalScope } from '../scope';\nimport { applyScopeDataToEvent, mergeScopeData } from './applyScopeDataToEvent';\nimport { spanToJSON } from './spanUtils';\n\n/**\n * This type makes sure that we get either a CaptureContext, OR an EventHint.\n * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed:\n * { user: { id: '123' }, mechanism: { handled: false } }\n */\nexport type ExclusiveEventHintOrCaptureContext =\n | (CaptureContext & Partial<{ [key in keyof EventHint]: never }>)\n | (EventHint & Partial<{ [key in keyof ScopeContext]: never }>);\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * Note: This also triggers callbacks for `addGlobalEventProcessor`, but not `beforeSend`.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nexport function prepareEvent(\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n scope?: Scope,\n client?: Client,\n isolationScope?: Scope,\n): PromiseLike<Event | null> {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = options;\n const prepared: Event = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n applyClientOptions(prepared, options);\n applyIntegrationsMetadata(prepared, integrations);\n\n // Only put debug IDs onto frames for error events.\n if (event.type === undefined) {\n applyDebugIds(prepared, options.stackParser);\n }\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n const finalScope = getFinalScope(scope, hint.captureContext);\n\n if (hint.mechanism) {\n addExceptionMechanism(prepared, hint.mechanism);\n }\n\n const clientEventProcessors = client && client.getEventProcessors ? client.getEventProcessors() : [];\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n // Merge scope data together\n const data = getGlobalScope().getScopeData();\n\n if (isolationScope) {\n const isolationData = isolationScope.getScopeData();\n mergeScopeData(data, isolationData);\n }\n\n if (finalScope) {\n const finalScopeData = finalScope.getScopeData();\n mergeScopeData(data, finalScopeData);\n }\n\n const attachments = [...(hint.attachments || []), ...data.attachments];\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n applyScopeDataToEvent(prepared, data);\n\n // TODO (v8): Update this order to be: Global > Client > Scope\n const eventProcessors = [\n ...clientEventProcessors,\n // eslint-disable-next-line deprecation/deprecation\n ...getGlobalEventProcessors(),\n // Run scope event processors _after_ all other processors\n ...data.eventProcessors,\n ];\n\n const result = notifyEventProcessors(eventProcessors, prepared, hint);\n\n return result.then(evt => {\n if (evt) {\n // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n // any new data\n applyDebugMeta(evt);\n }\n\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n}\n\n/**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event: Event, options: ClientOptions): void {\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : DEFAULT_ENVIRONMENT;\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n}\n\nconst debugIdStackParserCache = new WeakMap<StackParser, Map<string, StackFrame[]>>();\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nexport function applyDebugIds(event: Event, stackParser: StackParser): void {\n const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n if (!debugIdMap) {\n return;\n }\n\n let debugIdStackFramesCache: Map<string, StackFrame[]>;\n const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser);\n if (cachedDebugIdStackFrameCache) {\n debugIdStackFramesCache = cachedDebugIdStackFrameCache;\n } else {\n debugIdStackFramesCache = new Map<string, StackFrame[]>();\n debugIdStackParserCache.set(stackParser, debugIdStackFramesCache);\n }\n\n // Build a map of filename -> debug_id\n const filenameDebugIdMap = Object.keys(debugIdMap).reduce<Record<string, string>>((acc, debugIdStackTrace) => {\n let parsedStack: StackFrame[];\n const cachedParsedStack = debugIdStackFramesCache.get(debugIdStackTrace);\n if (cachedParsedStack) {\n parsedStack = cachedParsedStack;\n } else {\n parsedStack = stackParser(debugIdStackTrace);\n debugIdStackFramesCache.set(debugIdStackTrace, parsedStack);\n }\n\n for (let i = parsedStack.length - 1; i >= 0; i--) {\n const stackFrame = parsedStack[i];\n if (stackFrame.filename) {\n acc[stackFrame.filename] = debugIdMap[debugIdStackTrace];\n break;\n }\n }\n return acc;\n }, {});\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event!.exception!.values!.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace!.frames!.forEach(frame => {\n if (frame.filename) {\n frame.debug_id = filenameDebugIdMap[frame.filename];\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nexport function applyDebugMeta(event: Event): void {\n // Extract debug IDs and filenames from the stack frames on the event.\n const filenameDebugIdMap: Record<string, string> = {};\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception!.values!.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace!.frames!.forEach(frame => {\n if (frame.debug_id) {\n if (frame.abs_path) {\n filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n } else if (frame.filename) {\n filenameDebugIdMap[frame.filename] = frame.debug_id;\n }\n delete frame.debug_id;\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n\n if (Object.keys(filenameDebugIdMap).length === 0) {\n return;\n }\n\n // Fill debug_meta information\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = event.debug_meta.images || [];\n const images = event.debug_meta.images;\n Object.keys(filenameDebugIdMap).forEach(filename => {\n images.push({\n type: 'sourcemap',\n code_file: filename,\n debug_id: filenameDebugIdMap[filename],\n });\n });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event: Event, integrationNames: string[]): void {\n if (integrationNames.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized: Event = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n const data = spanToJSON(span).data;\n\n if (data) {\n // This is a bit weird, as we generally have `Span` instances here, but to be safe we do not assume so\n // eslint-disable-next-line deprecation/deprecation\n span.data = normalize(data, depth, maxBreadth);\n }\n\n return span;\n });\n }\n\n return normalized;\n}\n\nfunction getFinalScope(scope: Scope | undefined, captureContext: CaptureContext | undefined): Scope | undefined {\n if (!captureContext) {\n return scope;\n }\n\n const finalScope = scope ? scope.clone() : new Scope();\n finalScope.update(captureContext);\n return finalScope;\n}\n\n/**\n * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`.\n * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`.\n */\nexport function parseEventHintOrCaptureContext(\n hint: ExclusiveEventHintOrCaptureContext | undefined,\n): EventHint | undefined {\n if (!hint) {\n return undefined;\n }\n\n // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext\n if (hintIsScopeOrFunction(hint)) {\n return { captureContext: hint };\n }\n\n if (hintIsScopeContext(hint)) {\n return {\n captureContext: hint,\n };\n }\n\n return hint;\n}\n\nfunction hintIsScopeOrFunction(\n hint: CaptureContext | EventHint,\n): hint is ScopeInterface | ((scope: ScopeInterface) => ScopeInterface) {\n return hint instanceof Scope || typeof hint === 'function';\n}\n\ntype ScopeContextProperty = keyof ScopeContext;\nconst captureContextKeys: readonly ScopeContextProperty[] = [\n 'user',\n 'level',\n 'extra',\n 'contexts',\n 'tags',\n 'fingerprint',\n 'requestSession',\n 'propagationContext',\n] as const;\n\nfunction hintIsScopeContext(hint: Partial<ScopeContext> | EventHint): hint is Partial<ScopeContext> {\n return Object.keys(hint).some(key => captureContextKeys.includes(key as ScopeContextProperty));\n}\n","import type { Span, SpanJSON, SpanTimeInput, TraceContext } from '@sentry/types';\nimport { dropUndefinedKeys, generateSentryTraceHeader, timestampInSeconds } from '@sentry/utils';\nimport type { Span as SpanClass } from '../tracing/span';\n\n// These are aligned with OpenTelemetry trace flags\nexport const TRACE_FLAG_NONE = 0x0;\nexport const TRACE_FLAG_SAMPLED = 0x1;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n */\nexport function spanToTraceContext(span: Span): TraceContext {\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n const { data, op, parent_span_id, status, tags, origin } = spanToJSON(span);\n\n return dropUndefinedKeys({\n data,\n op,\n parent_span_id,\n span_id,\n status,\n tags,\n trace_id,\n origin,\n });\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nexport function spanToTraceHeader(span: Span): string {\n const { traceId, spanId } = span.spanContext();\n const sampled = spanIsSampled(span);\n return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a span time input intp a timestamp in seconds.\n */\nexport function spanTimeInputToSeconds(input: SpanTimeInput | undefined): number {\n if (typeof input === 'number') {\n return ensureTimestampInSeconds(input);\n }\n\n if (Array.isArray(input)) {\n // See {@link HrTime} for the array-based time format\n return input[0] + input[1] / 1e9;\n }\n\n if (input instanceof Date) {\n return ensureTimestampInSeconds(input.getTime());\n }\n\n return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp: number): number {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n * Note that all fields returned here are optional and need to be guarded against.\n *\n * Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n * This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n * And `spanToJSON` needs the Span class from `span.ts` to check here.\n * TODO v8: When we remove the deprecated stuff from `span.ts`, we can remove the circular dependency again.\n */\nexport function spanToJSON(span: Span): Partial<SpanJSON> {\n if (spanIsSpanClass(span)) {\n return span.getSpanJSON();\n }\n\n // Fallback: We also check for `.toJSON()` here...\n // eslint-disable-next-line deprecation/deprecation\n if (typeof span.toJSON === 'function') {\n // eslint-disable-next-line deprecation/deprecation\n return span.toJSON();\n }\n\n return {};\n}\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSpanClass(span: Span): span is SpanClass {\n return typeof (span as SpanClass).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nexport function spanIsSampled(span: Span): boolean {\n // We align our trace flags with the ones OpenTelemetry use\n // So we also check for sampled the same way they do.\n const { traceFlags } = span.spanContext();\n // eslint-disable-next-line no-bitwise\n return Boolean(traceFlags & TRACE_FLAG_SAMPLED);\n}\n","export const SDK_VERSION = '7.119.2';\n","import { isString } from './is';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject<Window>();\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\ntype SimpleNode = {\n parentNode: SimpleNode;\n} | null;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(\n elem: unknown,\n options: string[] | { keyAttrs?: string[]; maxStringLength?: number } = {},\n): string {\n if (!elem) {\n return '<unknown>';\n }\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds maxStringLength\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '<unknown>';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown, keyAttrs?: string[]): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\n };\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n // @ts-expect-error WINDOW has HTMLElement\n if (WINDOW.HTMLElement) {\n // If using the component name annotation plugin, this value may be available on the DOM node\n if (elem instanceof HTMLElement && elem.dataset && elem.dataset['sentryComponent']) {\n return elem.dataset['sentryComponent'];\n }\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n try {\n return WINDOW.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement<Element>('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getDomElement<E = any>(selector: string): E | null {\n if (WINDOW.document && WINDOW.document.querySelector) {\n return WINDOW.document.querySelector(selector) as unknown as E;\n }\n return null;\n}\n\n/**\n * Given a DOM element, traverses up the tree until it finds the first ancestor node\n * that has the `data-sentry-component` attribute. This attribute is added at build-time\n * by projects that have the component name annotation plugin installed.\n *\n * @returns a string representation of the component for the provided DOM element, or `null` if not found\n */\nexport function getComponentName(elem: unknown): string | null {\n // @ts-expect-error WINDOW has HTMLElement\n if (!WINDOW.HTMLElement) {\n return null;\n }\n\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) {\n if (!currentElem) {\n return null;\n }\n\n if (currentElem instanceof HTMLElement && currentElem.dataset['sentryComponent']) {\n return currentElem.dataset['sentryComponent'];\n }\n\n currentElem = currentElem.parentNode;\n }\n\n return null;\n}\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\nexport type SdkSource = 'npm' | 'cdn' | 'loader';\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nexport function getSDKSource(): SdkSource {\n // @ts-expect-error __SENTRY_SDK_SOURCE__ is injected by rollup during build process\n return __SENTRY_SDK_SOURCE__;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport type { ParameterizedString, PolymorphicEvent, Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat: unknown, className: string): boolean {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isParameterizedString(wat: unknown): wat is ParameterizedString {\n return (\n typeof wat === 'object' &&\n wat !== null &&\n '__sentry_template_string__' in wat &&\n '__sentry_template_values__' in wat\n );\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record<string, unknown> {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike<any> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\ninterface VueViewModel {\n // Vue3\n __isVue?: boolean;\n // Vue2\n _isVue?: boolean;\n}\n/**\n * Checks whether given value's type is a Vue ViewModel.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isVueViewModel(wat: unknown): boolean {\n // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n return !!(typeof wat === 'object' && wat !== null && ((wat as VueViewModel).__isVue || (wat as VueViewModel)._isVue));\n}\n","import type { ConsoleLevel } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS: readonly ConsoleLevel[] = [\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'log',\n 'assert',\n 'trace',\n] as const;\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record<ConsoleLevel, LoggerMethod>;\n\n/** This may be mutated by the console instrumentation. */\nexport const originalConsoleMethods: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key in ConsoleLevel]?: (...args: any[]) => void;\n} = {};\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n disable(): void;\n enable(): void;\n isEnabled(): boolean;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox<T>(callback: () => T): T {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const console = GLOBAL_OBJ.console as Console;\n const wrappedFuncs: Partial<LoggerConsoleMethods> = {};\n\n const wrappedLevels = Object.keys(originalConsoleMethods) as ConsoleLevel[];\n\n // Restore all wrapped console methods\n wrappedLevels.forEach(level => {\n const originalConsoleMethod = originalConsoleMethods[level] as LoggerMethod;\n wrappedFuncs[level] = console[level] as LoggerMethod | undefined;\n console[level] = originalConsoleMethod;\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n wrappedLevels.forEach(level => {\n console[level] = wrappedFuncs[level] as LoggerMethod;\n });\n }\n}\n\nfunction makeLogger(): Logger {\n let enabled = false;\n const logger: Partial<Logger> = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n isEnabled: () => enabled,\n };\n\n if (DEBUG_BUILD) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args: any[]) => {\n if (enabled) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger as Logger;\n}\n\nexport const logger = makeLogger();\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n getRandomValues(array: Uint8Array): Uint8Array;\n randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n msCrypto?: CryptoInternal;\n crypto?: CryptoInternal;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n let getRandomByte = (): number => Math.random() * 16;\n try {\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n if (crypto && crypto.getRandomValues) {\n getRandomByte = () => {\n // crypto.getRandomValues might return undefined instead of the typed array\n // in old Chromium versions (e.g. 23.0.1235.0 (151422))\n // However, `typedArray` is still filled in-place.\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#typedarray\n const typedArray = new Uint8Array(1);\n crypto.getRandomValues(typedArray);\n return typedArray[0];\n };\n }\n } catch (_) {\n // some runtimes can crash invoking crypto\n // https://github.com/getsentry/sentry-javascript/issues/8935\n }\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '<unknown>';\n }\n return eventId || '<unknown>';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial<Mechanism>): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception as any).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nexport function arrayify<T = unknown>(maybeArray: T | T[]): T[] {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule<T>(moduleName: string): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n","import type { Primitive } from '@sentry/types';\n\nimport { isNaN, isSyntheticEvent, isVueViewModel } from './is';\nimport type { MemoFunc } from './memo';\nimport { memoBuilder } from './memo';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName } from './stacktrace';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray<T> = { [key: string]: T };\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function normalize(input: unknown, depth: number = 100, maxProperties: number = +Infinity): any {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nexport function normalizeToSize<T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized as T;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key: string,\n value: unknown,\n depth: number = +Infinity,\n maxProperties: number = +Infinity,\n memo: MemoFunc = memoBuilder(),\n): Primitive | ObjOrArray<unknown> {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (\n value == null || // this matches null and undefined -> eqeq not eqeqeq\n (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))\n ) {\n return value as Primitive;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value as ObjOrArray<unknown>)['__sentry_skip_normalization__']) {\n return value as ObjOrArray<unknown>;\n }\n\n // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n // We keep a certain amount of depth.\n // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n const remainingDepth =\n typeof (value as ObjOrArray<unknown>)['__sentry_override_normalization_depth__'] === 'number'\n ? ((value as ObjOrArray<unknown>)['__sentry_override_normalization_depth__'] as number)\n : depth;\n\n // We're also done if we've reached the max depth\n if (remainingDepth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n const valueWithToJSON = value as unknown & { toJSON?: () => unknown };\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray<unknown>;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value as ObjOrArray<unknown>);\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n numAdded++;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n/**\n * @deprecated This export will be removed in v8.\n */\nexport { visit as walk };\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key: unknown,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value: Exclude<unknown, string | number | boolean | null>,\n): string {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n if (isVueViewModel(value)) {\n return '[VueViewModel]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n const objName = getConstructorName(value);\n\n // Handle HTML Elements\n if (/^HTML(\\w*)Element$/.test(objName)) {\n return `[HTMLElement: ${objName}]`;\n }\n\n return `[object ${objName}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value: unknown): string {\n const prototype: Prototype | null = Object.getPrototypeOf(value);\n\n return prototype ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n\n/**\n * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint\n * across platforms and working directory.\n *\n * @param url The URL to be normalized.\n * @param basePath The application base path.\n * @returns The normalized URL.\n */\nexport function normalizeUrlToBase(url: string, basePath: string): string {\n const escapedBase = basePath\n // Backslash to forward\n .replace(/\\\\/g, '/')\n // Escape RegExp special characters\n .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n let newUrl = url;\n try {\n newUrl = decodeURI(url);\n } catch (_Oo) {\n // Sometime this breaks\n }\n return (\n newUrl\n .replace(/\\\\/g, '/')\n .replace(/webpack:\\/?/g, '') // Remove intermediate base path\n // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor\n .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///')\n );\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type MemoFunc = [\n // memoize\n (obj: any) => boolean,\n // unmemoize\n (obj: any) => void,\n];\n\n/**\n * Helper to decycle json objects\n */\nexport function memoBuilder(): MemoFunc {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner: any = hasWeakSet ? new WeakSet() : [];\n function memoize(obj: any): boolean {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj: any): void {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { DEBUG_BUILD } from './debug-build';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { logger } from './logger';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, <other\n * args>)` or `origMethod.apply(this, [<other args>])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacementFactory(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n markFunctionWrapped(wrapped, original);\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: object, name: string, value: unknown): void {\n try {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n } catch (o_O) {\n DEBUG_BUILD && logger.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\n }\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n try {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n } catch (o_O) {} // eslint-disable-line no-empty\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nexport function convertToPlainObject<V>(\n value: V,\n):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj: {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n } = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '<unknown>';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps: { [key: string]: unknown } = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj as Record<string, unknown>)[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: Record<string, unknown>, maxLength: number = 40): string {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nexport function dropUndefinedKeys<T>(inputValue: T): T {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map<unknown, unknown>();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys<T>(inputValue: T, memoizationMap: Map<unknown, unknown>): T {\n if (isPojo(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: { [key: string]: any } = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue as T;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: unknown[] = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item: unknown) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue as unknown as T;\n }\n\n return inputValue;\n}\n\nfunction isPojo(input: unknown): input is Record<string, unknown> {\n if (!isPlainObject(input)) {\n return false;\n }\n\n try {\n const name = (Object.getPrototypeOf(input) as { constructor: { name: string } }).constructor.name;\n return !name || name === 'Object';\n } catch {\n return true;\n }\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n","import type { StackFrame, StackLineParser, StackParser } from '@sentry/types';\n\nimport type { GetModuleFn } from './node-stack-trace';\nimport { filenameIsInApp, node } from './node-stack-trace';\n\nexport { filenameIsInApp };\n\nconst STACKTRACE_FRAME_LIMIT = 50;\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirst: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirst; i < lines.length; i++) {\n const line = lines[i];\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue;\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue;\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: ReadonlyArray<StackFrame>): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n const localStack = Array.from(stack);\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (/sentryWrapped/.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n\n // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n // is produced within the hub itself, making it:\n //\n // Sentry.captureException()\n // getCurrentHub().captureException()\n //\n // instead of just the top `Sentry` call itself.\n // This forces us to possibly strip an additional frame in the exact same was as above.\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n }\n\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n ...frame,\n filename: frame.filename || localStack[localStack.length - 1].filename,\n function: frame.function || '?',\n }));\n}\n\nconst defaultFunctionName = '<anonymous>';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n return [90, node(getModule)];\n}\n","import { isRegExp, isString, isVueViewModel } from './is';\n\nexport { escapeStringForRegex } from './vendor/escapeStringForRegex';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n // console warnings. This happens when a Vue template is rendered with\n // an undeclared variable, which we try to stringify, ultimately causing\n // Vue to issue another warning which repeats indefinitely.\n // see: https://github.com/getsentry/sentry-javascript/pull/8981\n if (isVueViewModel(value)) {\n output.push('[VueViewModel]');\n } else {\n output.push(String(value));\n }\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nexport function isMatchingPattern(\n value: string,\n pattern: RegExp | string,\n requireExactStringMatch: boolean = false,\n): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (isString(pattern)) {\n return requireExactStringMatch ? value === pattern : value.includes(pattern);\n }\n\n return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nexport function stringMatchesSomePattern(\n testString: string,\n patterns: Array<string | RegExp> = [],\n requireExactStringMatch: boolean = false,\n): boolean {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n /** Pending */\n PENDING = 0,\n /** Resolved / OK */\n RESOLVED = 1,\n /** Rejected / Error */\n REJECTED = 2,\n}\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike<void>;\nexport function resolvedSyncPromise<T>(value: T | PromiseLike<T>): PromiseLike<T>;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise<T>(value?: T | PromiseLike<T>): PromiseLike<T> {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise<T = never>(reason?: any): PromiseLike<T> {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise<T> implements PromiseLike<T> {\n private _state: States;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]>;\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike<T> | null) => void, reject: (reason?: any) => void) => void,\n ) {\n this._state = States.PENDING;\n this._handlers = [];\n\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n ): PromiseLike<TResult1 | TResult2> {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n public catch<TResult = never>(\n onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null,\n ): PromiseLike<T | TResult> {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally<TResult>(onfinally?: (() => void) | null): PromiseLike<TResult> {\n return new SyncPromise<TResult>((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val as unknown as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike<T> | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike<T> | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike<T>).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };\n}\n\nexport { SyncPromise };\n","import { GLOBAL_OBJ } from './worldwide';\n\nconst ONE_SECOND_IN_MS = 1000;\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n *\n * TODO(v8): Return type should be rounded.\n */\nexport function dateTimestampInSeconds(): number {\n return Date.now() / ONE_SECOND_IN_MS;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction createUnixTimestampInSecondsFunc(): () => number {\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & { performance?: Performance };\n if (!performance || !performance.now) {\n return dateTimestampInSeconds;\n }\n\n // Some browser and environments don't have a timeOrigin, so we fallback to\n // using Date.now() to compute the starting time.\n const approxStartingTimeOrigin = Date.now() - performance.now();\n const timeOrigin = performance.timeOrigin == undefined ? approxStartingTimeOrigin : performance.timeOrigin;\n\n // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n //\n // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n // correct for this.\n // See: https://github.com/getsentry/sentry-javascript/issues/2590\n // See: https://github.com/mdn/content/issues/4713\n // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n return () => {\n return (timeOrigin + performance.now()) / ONE_SECOND_IN_MS;\n };\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds = createUnixTimestampInSecondsFunc();\n\n/**\n * Re-exported with an old name for backwards-compatibility.\n * TODO (v8): Remove this\n *\n * @deprecated Use `timestampInSeconds` instead.\n */\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Integration } from '@sentry/types';\n\nimport type { SdkSource } from './env';\n\n/** Internal global with common properties and Sentry extensions */\nexport interface InternalGlobal {\n navigator?: { userAgent?: string };\n console: Console;\n Sentry?: {\n Integrations?: Integration[];\n };\n onerror?: {\n (event: object | string, source?: string, lineno?: number, colno?: number, error?: Error): any;\n __SENTRY_INSTRUMENTED__?: true;\n __SENTRY_LOADER__?: true;\n };\n onunhandledrejection?: {\n (event: unknown): boolean;\n __SENTRY_INSTRUMENTED__?: true;\n __SENTRY_LOADER__?: true;\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n SENTRY_SDK_SOURCE?: SdkSource;\n /**\n * Debug IDs are indirectly injected by Sentry CLI or bundler plugins to directly reference a particular source map\n * for resolving of a source file. The injected code will place an entry into the record for each loaded bundle/JS\n * file.\n */\n _sentryDebugIds?: Record<string, string>;\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n extensions?: {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n /**\n * Raw module metadata that is injected by bundler plugins.\n *\n * Keys are `error.stack` strings, values are the metadata.\n */\n _sentryModuleMetadata?: Record<string, any>;\n}\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\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/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj: { Math?: Math }): any | undefined {\n return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ: InternalGlobal =\n (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n // eslint-disable-next-line no-restricted-globals\n (typeof window == 'object' && isGlobalObj(window)) ||\n (typeof self == 'object' && isGlobalObj(self)) ||\n (typeof global == 'object' && isGlobalObj(global)) ||\n (function (this: any) {\n return this;\n })() ||\n {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nexport function getGlobalObject<T>(): T & InternalGlobal {\n return GLOBAL_OBJ as T & InternalGlobal;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton<T>(name: keyof InternalGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n const gbl = (obj || GLOBAL_OBJ) as InternalGlobal;\n const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n",null,null,null,"/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","'use strict';\n\nmodule.exports = function () {\n throw new Error(\n 'ws does not work in the browser. Browser clients must use the native ' +\n 'WebSocket object'\n );\n};\n",null,null,null,null,null,null,null,null,null,"/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) +\n ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC JPoint Infinity>';\n return '<EC JPoint x: ' + this.x.toString(16, 2) +\n ' y: ' + this.y.toString(16, 2) +\n ' z: ' + this.z.toString(16, 2) + '>';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly, bitLength) {\n var byteLength;\n if (BN.isBN(msg) || typeof msg === 'number') {\n msg = new BN(msg, 16);\n byteLength = msg.byteLength();\n } else if (typeof msg === 'object') {\n // BN assumes an array-like input and asserts length\n byteLength = msg.length;\n msg = new BN(msg, 16);\n } else {\n // BN converts the value to string\n var str = msg.toString();\n // HEX encoding\n byteLength = (str.length + 1) >>> 1;\n msg = new BN(str, 16);\n }\n // Allow overriding\n if (typeof bitLength !== 'number') {\n bitLength = byteLength * 8;\n }\n var delta = bitLength - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n if (typeof msg !== 'string' && typeof msg !== 'number' && !BN.isBN(msg)) {\n assert(typeof msg === 'object' && msg && typeof msg.length === 'number',\n 'Expected message to be an array-like, a hex string, or a BN instance');\n assert((msg.length >>> 0) === msg.length); // non-negative 32-bit integer\n for (var i = 0; i < msg.length; i++) assert((msg[i] & 255) === msg[i]);\n }\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(msg, false, options.msgBitLength);\n\n // Would fail further checks, but let's make the error message clear\n assert(!msg.isNeg(), 'Can not sign a negative message');\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Recheck nonce to be bijective to msg\n assert((new BN(nonce)).eq(msg), 'Can not sign message');\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc, options) {\n if (!options)\n options = {};\n\n msg = this._truncateToN(msg, false, options.msgBitLength);\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature, options) {\n return this.ec.verify(msg, signature, this, undefined, options);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n if(buf[p.place] === 0x00) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {\n return false;\n }\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array<Byte>} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array<Byte>} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array<Bytes>|Object} sig -\n* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes\n* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array<Bytes>} [sig.Rencoded] - R point encoded\n* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size');\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n var i;\n for (i = 0; i < naf.length; i += 1) {\n naf[i] = 0;\n }\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin <self@wyattbaldwin.com>\n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\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 *****************************************************************************/\nvar dijkstra = {\n single_source_shortest_paths: function(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {};\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {};\n costs[s] = 0;\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = dijkstra.PriorityQueue.make();\n open.push(s, 0);\n\n var closest,\n u, v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit;\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {};\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v];\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v];\n first_visit = (typeof costs[v] === 'undefined');\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n throw new Error(msg);\n }\n\n return predecessors;\n },\n\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n var predecessor;\n while (u) {\n nodes.push(u);\n predecessor = predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n\n find_path: function(graph, s, d) {\n var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n return dijkstra.extract_shortest_path_from_predecessor_list(\n predecessors, d);\n },\n\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function (opts) {\n var T = dijkstra.PriorityQueue,\n t = {},\n key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n\n default_sorter: function (a, b) {\n return a.cost - b.cost;\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function (value, cost) {\n var item = {value: value, cost: cost};\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function () {\n return this.queue.shift();\n },\n\n empty: function () {\n return this.queue.length === 0;\n }\n }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n module.exports = dijkstra;\n}\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\n/**\n * Calculate the entropy of a string based on the size of the charset used and\n * the length of the string.\n *\n * Based on:\n * http://resources.infosecinstitute.com/password-security-complexity-vs-length/\n *\n * @param {number} charset is the size of the string charset.\n * @param {number} length is the length of the string.\n * @returns {number} the calculated entropy.\n */\n\nvar calcEntropy = function calcEntropy(charset, length) {\n return Math.round(length * Math.log(charset) / Math.LN2);\n};\n\n/**\n * Standard character sets list.\n *\n * It assumes the `uppercase` and `lowercase` charsets to have 26 chars as in\n * the English alphabet. Numbers are 10 characters long. Symbols are the rest\n * of the 33 remaining chars in the 7-bit ASCII table.\n *\n * @type {Array}\n */\nvar stdCharsets = [{\n name: 'lowercase',\n re: /[a-z]/, // abcdefghijklmnopqrstuvwxyz\n length: 26\n}, {\n name: 'uppercase',\n re: /[A-Z]/, // ABCDEFGHIJKLMNOPQRSTUVWXYZ\n length: 26\n}, {\n name: 'numbers',\n re: /[0-9]/, // 1234567890\n length: 10\n}, {\n name: 'symbols',\n re: /[^a-zA-Z0-9]/, // !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~ (and any other)\n length: 33\n}];\n\n/**\n * Creates a function to calculate the total charset length of a string based on\n * the given charsets.\n *\n * @param {Object[]} charsets are description of each charset. Shall contain a\n * regular expression `re` to identify each\n * character and a `length` with the total possible\n * characters in the set.\n * @returns {Function} a function that will receive a string and return\n * the total charset length.\n */\nvar calcCharsetLengthWith = function calcCharsetLengthWith(charsets) {\n return function (string) {\n return charsets.reduce(function (length, charset) {\n return length + (charset.re.test(string) ? charset.length : 0);\n }, 0);\n };\n};\n\n/**\n * Helper function to calculate the total charset lengths of a given string\n * using the standard character sets.\n *\n * @type {Function}\n */\nvar calcCharsetLength = calcCharsetLengthWith(stdCharsets);\n\n/**\n * Calculate the given password entropy.\n *\n * @param {string} string is the password string.\n * @returns {number} [the calculated entropy.\n */\nvar passwordEntropy = function passwordEntropy(string) {\n return string ? calcEntropy(calcCharsetLength(string), string.length) : 0;\n};\n\nmodule.exports = passwordEntropy;","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\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 nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\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/**\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 to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.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\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\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\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * 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\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to 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 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 * 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/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\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/**\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\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\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == 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/**\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\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\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == 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/**\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\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\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n 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\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var 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\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n 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\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `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\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\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\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\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\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\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\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * 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 // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & 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\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\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 // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, 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\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\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * 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\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\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\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * 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\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\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * 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\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\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\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns 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\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 = isEqual;\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 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","/**\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","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","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 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 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 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 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","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\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 isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var 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 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 `_.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 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 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 `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 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 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","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\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","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","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","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","/** 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","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","/**\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 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","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 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","/**\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 baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\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 baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var 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 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 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","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","/**\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","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n const args = [].slice.call(arguments, 1)\n const argsNum = args.length\n const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n const data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n const data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nconst getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n const posCount = Math.floor(version / 7) + 2\n const size = getSymbolSize(version)\n const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n const positions = [size - 7] // Last coord is always (size - 7)\n\n for (let i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * let pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const coords = []\n const pos = exports.getRowColCoords(version)\n const posLength = pos.length\n\n for (let i = 0; i < posLength; i++) {\n for (let j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","const Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nconst ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n let i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n const bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n const bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = new Uint8Array(size * size)\n this.reservedBit = new Uint8Array(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n const index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","const Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n if (typeof (data) === 'string') {\n this.data = new TextEncoder().encode(data)\n } else {\n this.data = new Uint8Array(data)\n }\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (let i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","const ECLevel = require('./error-correction-level')\r\n\r\nconst EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nconst EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const getSymbolSize = require('./utils').getSymbolSize\nconst FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","const Utils = require('./utils')\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nconst G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n const data = ((errorCorrectionLevel.bit << 3) | mask)\n let d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","const EXP_TABLE = new Uint8Array(512)\nconst LOG_TABLE = new Uint8Array(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n let x = 1\n for (let i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (let i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","const Mode = require('./mode')\nconst Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n let i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n let value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nconst PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n const size = data.size\n let points = 0\n let sameCountCol = 0\n let sameCountRow = 0\n let lastCol = null\n let lastRow = null\n\n for (let row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (let col = 0; col < size; col++) {\n let module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n const size = data.size\n let points = 0\n\n for (let row = 0; row < size - 1; row++) {\n for (let col = 0; col < size - 1; col++) {\n const last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n const size = data.size\n let points = 0\n let bitsCol = 0\n let bitsRow = 0\n\n for (let row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (let col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n let darkCount = 0\n const modulesCount = data.data.length\n\n for (let i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n const k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n const size = data.size\n\n for (let col = 0; col < size; col++) {\n for (let row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n const numPatterns = Object.keys(exports.Patterns).length\n let bestPattern = 0\n let lowerPenalty = Infinity\n\n for (let p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n const penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","const VersionCheck = require('./version-check')\nconst Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n let i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n const remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","const GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Uint8Array} p1 Polynomial\n * @param {Uint8Array} p2 Polynomial\n * @return {Uint8Array} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n const coeff = new Uint8Array(p1.length + p2.length - 1)\n\n for (let i = 0; i < p1.length; i++) {\n for (let j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Uint8Array} divident Polynomial\n * @param {Uint8Array} divisor Polynomial\n * @return {Uint8Array} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n let result = new Uint8Array(divident)\n\n while ((result.length - divisor.length) >= 0) {\n const coeff = result[0]\n\n for (let i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n let offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Uint8Array} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n let poly = new Uint8Array([1])\n for (let i = 0; i < degree; i++) {\n poly = exports.mul(poly, new Uint8Array([1, GF.exp(i)]))\n }\n\n return poly\n}\n","const Utils = require('./utils')\nconst ECLevel = require('./error-correction-level')\nconst BitBuffer = require('./bit-buffer')\nconst BitMatrix = require('./bit-matrix')\nconst AlignmentPattern = require('./alignment-pattern')\nconst FinderPattern = require('./finder-pattern')\nconst MaskPattern = require('./mask-pattern')\nconst ECCode = require('./error-correction-code')\nconst ReedSolomonEncoder = require('./reed-solomon-encoder')\nconst Version = require('./version')\nconst FormatInfo = require('./format-info')\nconst Mode = require('./mode')\nconst Segments = require('./segments')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n const size = matrix.size\n const pos = FinderPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n const size = matrix.size\n\n for (let r = 8; r < size - 8; r++) {\n const value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n const pos = AlignmentPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n const size = matrix.size\n const bits = Version.getEncodedBits(version)\n let row, col, mod\n\n for (let i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n const size = matrix.size\n const bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n let i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Uint8Array} data Data codewords\n */\nfunction setupData (matrix, data) {\n const size = matrix.size\n let inc = -1\n let row = size - 1\n let bitIndex = 7\n let byteIndex = 0\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n let dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n const buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (let i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n const ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n const blocksInGroup2 = totalCodewords % ecTotalBlocks\n const blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n const rs = new ReedSolomonEncoder(ecCount)\n\n let offset = 0\n const dcData = new Array(ecTotalBlocks)\n const ecData = new Array(ecTotalBlocks)\n let maxDataSize = 0\n const buffer = new Uint8Array(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (let b = 0; b < ecTotalBlocks; b++) {\n const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n const data = new Uint8Array(totalCodewords)\n let index = 0\n let i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n let segments\n\n if (Array.isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n let estimatedVersion = version\n\n if (!estimatedVersion) {\n const rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n const bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n const dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n const moduleCount = Utils.getSymbolSize(version)\n const modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n let errorCorrectionLevel = ECLevel.M\n let version\n let mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","const Polynomial = require('./polynomial')\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Uint8Array} data Buffer containing input data\n * @return {Uint8Array} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n const paddedData = new Uint8Array(data.length + this.degree)\n paddedData.set(data)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n const remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n const start = this.degree - remainder.length\n if (start > 0) {\n const buff = new Uint8Array(this.degree)\n buff.set(remainder, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","const numeric = '[0-9]+'\nconst alphanumeric = '[A-Z $%*+\\\\-./:]+'\nlet kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nconst byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nconst TEST_KANJI = new RegExp('^' + kanji + '$')\nconst TEST_NUMERIC = new RegExp('^' + numeric + '$')\nconst TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","const Mode = require('./mode')\nconst NumericData = require('./numeric-data')\nconst AlphanumericData = require('./alphanumeric-data')\nconst ByteData = require('./byte-data')\nconst KanjiData = require('./kanji-data')\nconst Regex = require('./regex')\nconst Utils = require('./utils')\nconst dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n const segments = []\n let result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n const numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n let byteSegs\n let kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n const nodes = []\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n const table = {}\n const graph = { start: {} }\n let prevNodeIds = ['start']\n\n for (let i = 0; i < nodes.length; i++) {\n const nodeGroup = nodes[i]\n const currentNodeIds = []\n\n for (let j = 0; j < nodeGroup.length; j++) {\n const node = nodeGroup[j]\n const key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n const prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]].end = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n let mode\n const bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n const segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n const nodes = buildNodes(segs)\n const graph = buildGraph(nodes, version)\n const path = dijkstra.find_path(graph.map, 'start', 'end')\n\n const optimizedSegs = []\n for (let i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","let toSJISFunction\nconst CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n let digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","const Utils = require('./utils')\nconst ECCode = require('./error-correction-code')\nconst ECLevel = require('./error-correction-level')\nconst Mode = require('./mode')\nconst VersionCheck = require('./version-check')\n\n// Generator polynomial used to encode version information\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nconst G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n let totalBits = 0\n\n segments.forEach(function (data) {\n const reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n const length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n let seg\n\n const ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (Array.isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n let d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","const Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n let opts = options\n let canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n const size = Utils.getImageWidth(qrData.modules.size, opts)\n\n const ctx = canvasEl.getContext('2d')\n const image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n let opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n const canvasEl = exports.render(qrData, canvas, opts)\n\n const type = opts.type || 'image/png'\n const rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","const Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n const alpha = color.a / 255\n const str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n let str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n let path = ''\n let moveBy = 0\n let newRow = false\n let lineLength = 0\n\n for (let i = 0; i < data.length; i++) {\n const col = Math.floor(i % size)\n const row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n const opts = Utils.getOptions(options)\n const size = qrData.modules.size\n const data = qrData.modules.data\n const qrcodesize = size + opts.margin * 2\n\n const bg = !opts.color.light.a\n ? ''\n : '<path ' + getColorAttrib(opts.color.light, 'fill') +\n ' d=\"M0 0h' + qrcodesize + 'v' + qrcodesize + 'H0z\"/>'\n\n const path =\n '<path ' + getColorAttrib(opts.color.dark, 'stroke') +\n ' d=\"' + qrToPath(data, size, opts.margin) + '\"/>'\n\n const viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n const width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n const svgTag = '<svg xmlns=\"http://www.w3.org/2000/svg\" ' + width + viewBox + ' shape-rendering=\"crispEdges\">' + bg + path + '</svg>\\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n let hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n const hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n const margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0\n ? 4\n : options.margin\n\n const width = options.width && options.width >= 21 ? options.width : undefined\n const scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n const scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n const size = qr.modules.size\n const data = qr.modules.data\n const scale = exports.getScale(size, opts)\n const symbolSize = Math.floor((size + opts.margin * 2) * scale)\n const scaledMargin = opts.margin * scale\n const palette = [opts.color.light, opts.color.dark]\n\n for (let i = 0; i < symbolSize; i++) {\n for (let j = 0; j < symbolSize; j++) {\n let posDst = (i * symbolSize + j) * 4\n let pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n const iSrc = Math.floor((i - scaledMargin) / scale)\n const jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n","'use strict'\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || '<anonymous>'\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nvar UAParser = require('ua-parser-js/dist/ua-parser.min');\n\nvar ClientUAInstance = new UAParser();\nvar browser = ClientUAInstance.getBrowser();\nvar cpu = ClientUAInstance.getCPU();\nvar device = ClientUAInstance.getDevice();\nvar engine = ClientUAInstance.getEngine();\nvar os = ClientUAInstance.getOS();\nvar ua = ClientUAInstance.getUA();\nvar setUa = function setUa(userAgentString) {\n return ClientUAInstance.setUA(userAgentString);\n};\nvar parseUserAgent = function parseUserAgent(userAgent) {\n if (!userAgent) {\n console.error('No userAgent string was provided');\n return;\n }\n\n var UserAgentInstance = new UAParser(userAgent);\n return {\n UA: UserAgentInstance,\n browser: UserAgentInstance.getBrowser(),\n cpu: UserAgentInstance.getCPU(),\n device: UserAgentInstance.getDevice(),\n engine: UserAgentInstance.getEngine(),\n os: UserAgentInstance.getOS(),\n ua: UserAgentInstance.getUA(),\n setUserAgent: function setUserAgent(userAgentString) {\n return UserAgentInstance.setUA(userAgentString);\n }\n };\n};\n\nvar UAHelper = /*#__PURE__*/Object.freeze({\n ClientUAInstance: ClientUAInstance,\n browser: browser,\n cpu: cpu,\n device: device,\n engine: engine,\n os: os,\n ua: ua,\n setUa: setUa,\n parseUserAgent: parseUserAgent\n});\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar DeviceTypes = {\n Mobile: 'mobile',\n Tablet: 'tablet',\n SmartTv: 'smarttv',\n Console: 'console',\n Wearable: 'wearable',\n Embedded: 'embedded',\n Browser: undefined\n};\nvar BrowserTypes = {\n Chrome: 'Chrome',\n Firefox: 'Firefox',\n Opera: 'Opera',\n Yandex: 'Yandex',\n Safari: 'Safari',\n InternetExplorer: 'Internet Explorer',\n Edge: 'Edge',\n Chromium: 'Chromium',\n Ie: 'IE',\n MobileSafari: 'Mobile Safari',\n EdgeChromium: 'Edge Chromium',\n MIUI: 'MIUI Browser',\n SamsungBrowser: 'Samsung Browser'\n};\nvar OsTypes = {\n IOS: 'iOS',\n Android: 'Android',\n WindowsPhone: 'Windows Phone',\n Windows: 'Windows',\n MAC_OS: 'Mac OS'\n};\nvar InitialDeviceTypes = {\n isMobile: false,\n isTablet: false,\n isBrowser: false,\n isSmartTV: false,\n isConsole: false,\n isWearable: false\n};\n\nvar checkDeviceType = function checkDeviceType(type) {\n switch (type) {\n case DeviceTypes.Mobile:\n return {\n isMobile: true\n };\n\n case DeviceTypes.Tablet:\n return {\n isTablet: true\n };\n\n case DeviceTypes.SmartTv:\n return {\n isSmartTV: true\n };\n\n case DeviceTypes.Console:\n return {\n isConsole: true\n };\n\n case DeviceTypes.Wearable:\n return {\n isWearable: true\n };\n\n case DeviceTypes.Browser:\n return {\n isBrowser: true\n };\n\n case DeviceTypes.Embedded:\n return {\n isEmbedded: true\n };\n\n default:\n return InitialDeviceTypes;\n }\n};\nvar setUserAgent = function setUserAgent(userAgent) {\n return setUa(userAgent);\n};\nvar setDefaults = function setDefaults(p) {\n var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n return p ? p : d;\n};\nvar getNavigatorInstance = function getNavigatorInstance() {\n if (typeof window !== 'undefined') {\n if (window.navigator || navigator) {\n return window.navigator || navigator;\n }\n }\n\n return false;\n};\nvar isIOS13Check = function isIOS13Check(type) {\n var nav = getNavigatorInstance();\n return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);\n};\n\nvar browserPayload = function browserPayload(isBrowser, browser, engine, os, ua) {\n return {\n isBrowser: isBrowser,\n browserMajorVersion: setDefaults(browser.major),\n browserFullVersion: setDefaults(browser.version),\n browserName: setDefaults(browser.name),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar mobilePayload = function mobilePayload(type, device, os, ua) {\n return _objectSpread2({}, type, {\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n os: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n ua: setDefaults(ua)\n });\n};\nvar smartTvPayload = function smartTvPayload(isSmartTV, engine, os, ua) {\n return {\n isSmartTV: isSmartTV,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar consolePayload = function consolePayload(isConsole, engine, os, ua) {\n return {\n isConsole: isConsole,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar wearablePayload = function wearablePayload(isWearable, engine, os, ua) {\n return {\n isWearable: isWearable,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar embeddedPayload = function embeddedPayload(isEmbedded, device, engine, os, ua) {\n return {\n isEmbedded: isEmbedded,\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\n\nfunction deviceDetect(userAgent) {\n var _ref = userAgent ? parseUserAgent(userAgent) : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n engine = _ref.engine,\n os = _ref.os,\n ua = _ref.ua;\n\n var type = checkDeviceType(device.type);\n var isBrowser = type.isBrowser,\n isMobile = type.isMobile,\n isTablet = type.isTablet,\n isSmartTV = type.isSmartTV,\n isConsole = type.isConsole,\n isWearable = type.isWearable,\n isEmbedded = type.isEmbedded;\n\n if (isBrowser) {\n return browserPayload(isBrowser, browser, engine, os, ua);\n }\n\n if (isSmartTV) {\n return smartTvPayload(isSmartTV, engine, os, ua);\n }\n\n if (isConsole) {\n return consolePayload(isConsole, engine, os, ua);\n }\n\n if (isMobile) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isTablet) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isWearable) {\n return wearablePayload(isWearable, engine, os, ua);\n }\n\n if (isEmbedded) {\n return embeddedPayload(isEmbedded, device, engine, os, ua);\n }\n}\n\nvar isMobileType = function isMobileType(_ref) {\n var type = _ref.type;\n return type === DeviceTypes.Mobile;\n};\nvar isTabletType = function isTabletType(_ref2) {\n var type = _ref2.type;\n return type === DeviceTypes.Tablet;\n};\nvar isMobileAndTabletType = function isMobileAndTabletType(_ref3) {\n var type = _ref3.type;\n return type === DeviceTypes.Mobile || type === DeviceTypes.Tablet;\n};\nvar isSmartTVType = function isSmartTVType(_ref4) {\n var type = _ref4.type;\n return type === DeviceTypes.SmartTv;\n};\nvar isBrowserType = function isBrowserType(_ref5) {\n var type = _ref5.type;\n return type === DeviceTypes.Browser;\n};\nvar isWearableType = function isWearableType(_ref6) {\n var type = _ref6.type;\n return type === DeviceTypes.Wearable;\n};\nvar isConsoleType = function isConsoleType(_ref7) {\n var type = _ref7.type;\n return type === DeviceTypes.Console;\n};\nvar isEmbeddedType = function isEmbeddedType(_ref8) {\n var type = _ref8.type;\n return type === DeviceTypes.Embedded;\n};\nvar getMobileVendor = function getMobileVendor(_ref9) {\n var vendor = _ref9.vendor;\n return setDefaults(vendor);\n};\nvar getMobileModel = function getMobileModel(_ref10) {\n var model = _ref10.model;\n return setDefaults(model);\n};\nvar getDeviceType = function getDeviceType(_ref11) {\n var type = _ref11.type;\n return setDefaults(type, 'browser');\n}; // os types\n\nvar isAndroidType = function isAndroidType(_ref12) {\n var name = _ref12.name;\n return name === OsTypes.Android;\n};\nvar isWindowsType = function isWindowsType(_ref13) {\n var name = _ref13.name;\n return name === OsTypes.Windows;\n};\nvar isMacOsType = function isMacOsType(_ref14) {\n var name = _ref14.name;\n return name === OsTypes.MAC_OS;\n};\nvar isWinPhoneType = function isWinPhoneType(_ref15) {\n var name = _ref15.name;\n return name === OsTypes.WindowsPhone;\n};\nvar isIOSType = function isIOSType(_ref16) {\n var name = _ref16.name;\n return name === OsTypes.IOS;\n};\nvar getOsVersion = function getOsVersion(_ref17) {\n var version = _ref17.version;\n return setDefaults(version);\n};\nvar getOsName = function getOsName(_ref18) {\n var name = _ref18.name;\n return setDefaults(name);\n}; // browser types\n\nvar isChromeType = function isChromeType(_ref19) {\n var name = _ref19.name;\n return name === BrowserTypes.Chrome;\n};\nvar isFirefoxType = function isFirefoxType(_ref20) {\n var name = _ref20.name;\n return name === BrowserTypes.Firefox;\n};\nvar isChromiumType = function isChromiumType(_ref21) {\n var name = _ref21.name;\n return name === BrowserTypes.Chromium;\n};\nvar isEdgeType = function isEdgeType(_ref22) {\n var name = _ref22.name;\n return name === BrowserTypes.Edge;\n};\nvar isYandexType = function isYandexType(_ref23) {\n var name = _ref23.name;\n return name === BrowserTypes.Yandex;\n};\nvar isSafariType = function isSafariType(_ref24) {\n var name = _ref24.name;\n return name === BrowserTypes.Safari || name === BrowserTypes.MobileSafari;\n};\nvar isMobileSafariType = function isMobileSafariType(_ref25) {\n var name = _ref25.name;\n return name === BrowserTypes.MobileSafari;\n};\nvar isOperaType = function isOperaType(_ref26) {\n var name = _ref26.name;\n return name === BrowserTypes.Opera;\n};\nvar isIEType = function isIEType(_ref27) {\n var name = _ref27.name;\n return name === BrowserTypes.InternetExplorer || name === BrowserTypes.Ie;\n};\nvar isMIUIType = function isMIUIType(_ref28) {\n var name = _ref28.name;\n return name === BrowserTypes.MIUI;\n};\nvar isSamsungBrowserType = function isSamsungBrowserType(_ref29) {\n var name = _ref29.name;\n return name === BrowserTypes.SamsungBrowser;\n};\nvar getBrowserFullVersion = function getBrowserFullVersion(_ref30) {\n var version = _ref30.version;\n return setDefaults(version);\n};\nvar getBrowserVersion = function getBrowserVersion(_ref31) {\n var major = _ref31.major;\n return setDefaults(major);\n};\nvar getBrowserName = function getBrowserName(_ref32) {\n var name = _ref32.name;\n return setDefaults(name);\n}; // engine types\n\nvar getEngineName = function getEngineName(_ref33) {\n var name = _ref33.name;\n return setDefaults(name);\n};\nvar getEngineVersion = function getEngineVersion(_ref34) {\n var version = _ref34.version;\n return setDefaults(version);\n};\nvar isElectronType = function isElectronType() {\n var nav = getNavigatorInstance();\n var ua = nav && nav.userAgent && nav.userAgent.toLowerCase();\n return typeof ua === 'string' ? /electron/.test(ua) : false;\n};\nvar isEdgeChromiumType = function isEdgeChromiumType(ua) {\n return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;\n};\nvar getIOS13 = function getIOS13() {\n var nav = getNavigatorInstance();\n return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;\n};\nvar getIPad13 = function getIPad13() {\n return isIOS13Check('iPad');\n};\nvar getIphone13 = function getIphone13() {\n return isIOS13Check('iPhone');\n};\nvar getIPod13 = function getIPod13() {\n return isIOS13Check('iPod');\n};\nvar getUseragent = function getUseragent(userAg) {\n return setDefaults(userAg);\n};\n\nfunction buildSelectorsObject(options) {\n var _ref = options ? options : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n os = _ref.os,\n engine = _ref.engine,\n ua = _ref.ua;\n\n return {\n isSmartTV: isSmartTVType(device),\n isConsole: isConsoleType(device),\n isWearable: isWearableType(device),\n isEmbedded: isEmbeddedType(device),\n isMobileSafari: isMobileSafariType(browser) || getIPad13(),\n isChromium: isChromiumType(browser),\n isMobile: isMobileAndTabletType(device) || getIPad13(),\n isMobileOnly: isMobileType(device),\n isTablet: isTabletType(device) || getIPad13(),\n isBrowser: isBrowserType(device),\n isDesktop: isBrowserType(device),\n isAndroid: isAndroidType(os),\n isWinPhone: isWinPhoneType(os),\n isIOS: isIOSType(os) || getIPad13(),\n isChrome: isChromeType(browser),\n isFirefox: isFirefoxType(browser),\n isSafari: isSafariType(browser),\n isOpera: isOperaType(browser),\n isIE: isIEType(browser),\n osVersion: getOsVersion(os),\n osName: getOsName(os),\n fullBrowserVersion: getBrowserFullVersion(browser),\n browserVersion: getBrowserVersion(browser),\n browserName: getBrowserName(browser),\n mobileVendor: getMobileVendor(device),\n mobileModel: getMobileModel(device),\n engineName: getEngineName(engine),\n engineVersion: getEngineVersion(engine),\n getUA: getUseragent(ua),\n isEdge: isEdgeType(browser) || isEdgeChromiumType(ua),\n isYandex: isYandexType(browser),\n deviceType: getDeviceType(device),\n isIOS13: getIOS13(),\n isIPad13: getIPad13(),\n isIPhone13: getIphone13(),\n isIPod13: getIPod13(),\n isElectron: isElectronType(),\n isEdgeChromium: isEdgeChromiumType(ua),\n isLegacyEdge: isEdgeType(browser) && !isEdgeChromiumType(ua),\n isWindows: isWindowsType(os),\n isMacOs: isMacOsType(os),\n isMIUI: isMIUIType(browser),\n isSamsungBrowser: isSamsungBrowserType(browser)\n };\n}\n\nvar isSmartTV = isSmartTVType(device);\nvar isConsole = isConsoleType(device);\nvar isWearable = isWearableType(device);\nvar isEmbedded = isEmbeddedType(device);\nvar isMobileSafari = isMobileSafariType(browser) || getIPad13();\nvar isChromium = isChromiumType(browser);\nvar isMobile = isMobileAndTabletType(device) || getIPad13();\nvar isMobileOnly = isMobileType(device);\nvar isTablet = isTabletType(device) || getIPad13();\nvar isBrowser = isBrowserType(device);\nvar isDesktop = isBrowserType(device);\nvar isAndroid = isAndroidType(os);\nvar isWinPhone = isWinPhoneType(os);\nvar isIOS = isIOSType(os) || getIPad13();\nvar isChrome = isChromeType(browser);\nvar isFirefox = isFirefoxType(browser);\nvar isSafari = isSafariType(browser);\nvar isOpera = isOperaType(browser);\nvar isIE = isIEType(browser);\nvar osVersion = getOsVersion(os);\nvar osName = getOsName(os);\nvar fullBrowserVersion = getBrowserFullVersion(browser);\nvar browserVersion = getBrowserVersion(browser);\nvar browserName = getBrowserName(browser);\nvar mobileVendor = getMobileVendor(device);\nvar mobileModel = getMobileModel(device);\nvar engineName = getEngineName(engine);\nvar engineVersion = getEngineVersion(engine);\nvar getUA = getUseragent(ua);\nvar isEdge = isEdgeType(browser) || isEdgeChromiumType(ua);\nvar isYandex = isYandexType(browser);\nvar deviceType = getDeviceType(device);\nvar isIOS13 = getIOS13();\nvar isIPad13 = getIPad13();\nvar isIPhone13 = getIphone13();\nvar isIPod13 = getIPod13();\nvar isElectron = isElectronType();\nvar isEdgeChromium = isEdgeChromiumType(ua);\nvar isLegacyEdge = isEdgeType(browser) && !isEdgeChromiumType(ua);\nvar isWindows = isWindowsType(os);\nvar isMacOs = isMacOsType(os);\nvar isMIUI = isMIUIType(browser);\nvar isSamsungBrowser = isSamsungBrowserType(browser);\nvar getSelectorsByUserAgent = function getSelectorsByUserAgent(userAgent) {\n if (!userAgent || typeof userAgent !== 'string') {\n console.error('No valid user agent string was provided');\n return;\n }\n\n var _UAHelper$parseUserAg = parseUserAgent(userAgent),\n device = _UAHelper$parseUserAg.device,\n browser = _UAHelper$parseUserAg.browser,\n os = _UAHelper$parseUserAg.os,\n engine = _UAHelper$parseUserAg.engine,\n ua = _UAHelper$parseUserAg.ua;\n\n return buildSelectorsObject({\n device: device,\n browser: browser,\n os: os,\n engine: engine,\n ua: ua\n });\n};\n\nvar AndroidView = function AndroidView(_ref) {\n var renderWithFragment = _ref.renderWithFragment,\n children = _ref.children,\n props = _objectWithoutProperties(_ref, [\"renderWithFragment\", \"children\"]);\n\n return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar BrowserView = function BrowserView(_ref2) {\n var renderWithFragment = _ref2.renderWithFragment,\n children = _ref2.children,\n props = _objectWithoutProperties(_ref2, [\"renderWithFragment\", \"children\"]);\n\n return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IEView = function IEView(_ref3) {\n var renderWithFragment = _ref3.renderWithFragment,\n children = _ref3.children,\n props = _objectWithoutProperties(_ref3, [\"renderWithFragment\", \"children\"]);\n\n return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IOSView = function IOSView(_ref4) {\n var renderWithFragment = _ref4.renderWithFragment,\n children = _ref4.children,\n props = _objectWithoutProperties(_ref4, [\"renderWithFragment\", \"children\"]);\n\n return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileView = function MobileView(_ref5) {\n var renderWithFragment = _ref5.renderWithFragment,\n children = _ref5.children,\n props = _objectWithoutProperties(_ref5, [\"renderWithFragment\", \"children\"]);\n\n return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar TabletView = function TabletView(_ref6) {\n var renderWithFragment = _ref6.renderWithFragment,\n children = _ref6.children,\n props = _objectWithoutProperties(_ref6, [\"renderWithFragment\", \"children\"]);\n\n return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WinPhoneView = function WinPhoneView(_ref7) {\n var renderWithFragment = _ref7.renderWithFragment,\n children = _ref7.children,\n props = _objectWithoutProperties(_ref7, [\"renderWithFragment\", \"children\"]);\n\n return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileOnlyView = function MobileOnlyView(_ref8) {\n var renderWithFragment = _ref8.renderWithFragment,\n children = _ref8.children,\n viewClassName = _ref8.viewClassName,\n style = _ref8.style,\n props = _objectWithoutProperties(_ref8, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n\n return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar SmartTVView = function SmartTVView(_ref9) {\n var renderWithFragment = _ref9.renderWithFragment,\n children = _ref9.children,\n props = _objectWithoutProperties(_ref9, [\"renderWithFragment\", \"children\"]);\n\n return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar ConsoleView = function ConsoleView(_ref10) {\n var renderWithFragment = _ref10.renderWithFragment,\n children = _ref10.children,\n props = _objectWithoutProperties(_ref10, [\"renderWithFragment\", \"children\"]);\n\n return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WearableView = function WearableView(_ref11) {\n var renderWithFragment = _ref11.renderWithFragment,\n children = _ref11.children,\n props = _objectWithoutProperties(_ref11, [\"renderWithFragment\", \"children\"]);\n\n return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar CustomView = function CustomView(_ref12) {\n var renderWithFragment = _ref12.renderWithFragment,\n children = _ref12.children,\n viewClassName = _ref12.viewClassName,\n style = _ref12.style,\n condition = _ref12.condition,\n props = _objectWithoutProperties(_ref12, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\", \"condition\"]);\n\n return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\n\nfunction withOrientationChange(WrappedComponent) {\n return /*#__PURE__*/function (_React$Component) {\n _inherits(_class, _React$Component);\n\n function _class(props) {\n var _this;\n\n _classCallCheck(this, _class);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props));\n _this.isEventListenerAdded = false;\n _this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this));\n _this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this));\n _this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this));\n _this.state = {\n isLandscape: false,\n isPortrait: false\n };\n return _this;\n }\n\n _createClass(_class, [{\n key: \"handleOrientationChange\",\n value: function handleOrientationChange() {\n if (!this.isEventListenerAdded) {\n this.isEventListenerAdded = true;\n }\n\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n this.setState({\n isPortrait: orientation === 0,\n isLandscape: orientation === 90\n });\n }\n }, {\n key: \"onOrientationChange\",\n value: function onOrientationChange() {\n this.handleOrientationChange();\n }\n }, {\n key: \"onPageLoad\",\n value: function onPageLoad() {\n this.handleOrientationChange();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n if (!this.isEventListenerAdded) {\n this.handleOrientationChange();\n window.addEventListener(\"load\", this.onPageLoad, false);\n } else {\n window.removeEventListener(\"load\", this.onPageLoad, false);\n }\n\n window.addEventListener(\"resize\", this.onOrientationChange, false);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener(\"resize\", this.onOrientationChange, false);\n }\n }, {\n key: \"render\",\n value: function render() {\n return React__default.createElement(WrappedComponent, _extends({}, this.props, {\n isLandscape: this.state.isLandscape,\n isPortrait: this.state.isPortrait\n }));\n }\n }]);\n\n return _class;\n }(React__default.Component);\n}\n\nfunction useMobileOrientation() {\n var _useState = React.useState(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n return {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n }),\n _useState2 = _slicedToArray(_useState, 2),\n state = _useState2[0],\n setState = _useState2[1];\n\n var handleOrientationChange = React.useCallback(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n var next = {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n state.orientation !== next.orientation && setState(next);\n }, [state.orientation]);\n React.useEffect(function () {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n handleOrientationChange();\n window.addEventListener(\"load\", handleOrientationChange, false);\n window.addEventListener(\"resize\", handleOrientationChange, false);\n }\n\n return function () {\n window.removeEventListener(\"resize\", handleOrientationChange, false);\n window.removeEventListener(\"load\", handleOrientationChange, false);\n };\n }, [handleOrientationChange]);\n return state;\n}\n\nfunction useDeviceData(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n return parseUserAgent(hookUserAgent);\n}\n\nfunction useDeviceSelectors(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n var deviceData = useDeviceData(hookUserAgent);\n var selectors = buildSelectorsObject(deviceData);\n return [selectors, deviceData];\n}\n\nexports.AndroidView = AndroidView;\nexports.BrowserTypes = BrowserTypes;\nexports.BrowserView = BrowserView;\nexports.ConsoleView = ConsoleView;\nexports.CustomView = CustomView;\nexports.IEView = IEView;\nexports.IOSView = IOSView;\nexports.MobileOnlyView = MobileOnlyView;\nexports.MobileView = MobileView;\nexports.OsTypes = OsTypes;\nexports.SmartTVView = SmartTVView;\nexports.TabletView = TabletView;\nexports.WearableView = WearableView;\nexports.WinPhoneView = WinPhoneView;\nexports.browserName = browserName;\nexports.browserVersion = browserVersion;\nexports.deviceDetect = deviceDetect;\nexports.deviceType = deviceType;\nexports.engineName = engineName;\nexports.engineVersion = engineVersion;\nexports.fullBrowserVersion = fullBrowserVersion;\nexports.getSelectorsByUserAgent = getSelectorsByUserAgent;\nexports.getUA = getUA;\nexports.isAndroid = isAndroid;\nexports.isBrowser = isBrowser;\nexports.isChrome = isChrome;\nexports.isChromium = isChromium;\nexports.isConsole = isConsole;\nexports.isDesktop = isDesktop;\nexports.isEdge = isEdge;\nexports.isEdgeChromium = isEdgeChromium;\nexports.isElectron = isElectron;\nexports.isEmbedded = isEmbedded;\nexports.isFirefox = isFirefox;\nexports.isIE = isIE;\nexports.isIOS = isIOS;\nexports.isIOS13 = isIOS13;\nexports.isIPad13 = isIPad13;\nexports.isIPhone13 = isIPhone13;\nexports.isIPod13 = isIPod13;\nexports.isLegacyEdge = isLegacyEdge;\nexports.isMIUI = isMIUI;\nexports.isMacOs = isMacOs;\nexports.isMobile = isMobile;\nexports.isMobileOnly = isMobileOnly;\nexports.isMobileSafari = isMobileSafari;\nexports.isOpera = isOpera;\nexports.isSafari = isSafari;\nexports.isSamsungBrowser = isSamsungBrowser;\nexports.isSmartTV = isSmartTV;\nexports.isTablet = isTablet;\nexports.isWearable = isWearable;\nexports.isWinPhone = isWinPhone;\nexports.isWindows = isWindows;\nexports.isYandex = isYandex;\nexports.mobileModel = mobileModel;\nexports.mobileVendor = mobileVendor;\nexports.osName = osName;\nexports.osVersion = osVersion;\nexports.parseUserAgent = parseUserAgent;\nexports.setUserAgent = setUserAgent;\nexports.useDeviceData = useDeviceData;\nexports.useDeviceSelectors = useDeviceSelectors;\nexports.useMobileOrientation = useMobileOrientation;\nexports.withOrientationChange = withOrientationChange;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;\nfunction Lg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction Mg(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function Ng(a){var b=a._init;return b(a._payload)}\nfunction Og(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Pg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Qg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&Ng(f)===b.type))return d=e(b,c.props),d.ref=Lg(a,b,c),d.return=a,d;d=Rg(c.type,c.key,c.props,null,a.mode,d);d.ref=Lg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=Sg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Tg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=Qg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=Rg(b.type,b.key,b.props,null,a.mode,c),\nc.ref=Lg(a,null,b),c.return=a,c;case wa:return b=Sg(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Tg(b,a.mode,c,null),b.return=a,b;Mg(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);Mg(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);Mg(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var th={},uh=Uf(th),vh=Uf(th),wh=Uf(th);function xh(a){if(a===th)throw Error(p(174));return a}\nfunction yh(a,b){G(wh,b);G(vh,a);G(uh,th);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(uh);G(uh,b)}function zh(){E(uh);E(vh);E(wh)}function Ah(a){xh(wh.current);var b=xh(uh.current);var c=lb(b,a.type);b!==c&&(G(vh,a),G(uh,c))}function Bh(a){vh.current===a&&(E(uh),E(vh))}var L=Uf(0);\nfunction Ch(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Dh=[];\nfunction Eh(){for(var a=0;a<Dh.length;a++)Dh[a]._workInProgressVersionPrimary=null;Dh.length=0}var Fh=ua.ReactCurrentDispatcher,Gh=ua.ReactCurrentBatchConfig,Hh=0,M=null,N=null,O=null,Ih=!1,Jh=!1,Kh=0,Lh=0;function P(){throw Error(p(321));}function Mh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Nh(a,b,c,d,e,f){Hh=f;M=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Fh.current=null===a||null===a.memoizedState?Oh:Ph;a=c(d,e);if(Jh){f=0;do{Jh=!1;Kh=0;if(25<=f)throw Error(p(301));f+=1;O=N=null;b.updateQueue=null;Fh.current=Qh;a=c(d,e)}while(Jh)}Fh.current=Rh;b=null!==N&&null!==N.next;Hh=0;O=N=M=null;Ih=!1;if(b)throw Error(p(300));return a}function Sh(){var a=0!==Kh;Kh=0;return a}\nfunction Th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===O?M.memoizedState=O=a:O=O.next=a;return O}function Uh(){if(null===N){var a=M.alternate;a=null!==a?a.memoizedState:null}else a=N.next;var b=null===O?M.memoizedState:O.next;if(null!==b)O=b,N=a;else{if(null===a)throw Error(p(310));N=a;a={memoizedState:N.memoizedState,baseState:N.baseState,baseQueue:N.baseQueue,queue:N.queue,next:null};null===O?M.memoizedState=O=a:O=O.next=a}return O}\nfunction Vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Wh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=N,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Hh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;M.lanes|=m;rh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(dh=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,M.lanes|=f,rh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction Xh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(dh=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function Yh(){}\nfunction Zh(a,b){var c=M,d=Uh(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,dh=!0);d=d.queue;$h(ai.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==O&&O.memoizedState.tag&1){c.flags|=2048;bi(9,ci.bind(null,c,d,e,b),void 0,null);if(null===Q)throw Error(p(349));0!==(Hh&30)||di(c,b,e)}return e}function di(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction ci(a,b,c,d){b.value=c;b.getSnapshot=d;ei(b)&&fi(a)}function ai(a,b,c){return c(function(){ei(b)&&fi(a)})}function ei(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function fi(a){var b=ih(a,1);null!==b&&gi(b,a,1,-1)}\nfunction hi(a){var b=Th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Vh,lastRenderedState:a};b.queue=a;a=a.dispatch=ii.bind(null,M,a);return[b.memoizedState,a]}\nfunction bi(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function ji(){return Uh().memoizedState}function ki(a,b,c,d){var e=Th();M.flags|=a;e.memoizedState=bi(1|b,c,void 0,void 0===d?null:d)}\nfunction li(a,b,c,d){var e=Uh();d=void 0===d?null:d;var f=void 0;if(null!==N){var g=N.memoizedState;f=g.destroy;if(null!==d&&Mh(d,g.deps)){e.memoizedState=bi(b,c,f,d);return}}M.flags|=a;e.memoizedState=bi(1|b,c,f,d)}function mi(a,b){return ki(8390656,8,a,b)}function $h(a,b){return li(2048,8,a,b)}function ni(a,b){return li(4,2,a,b)}function oi(a,b){return li(4,4,a,b)}\nfunction pi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function qi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return li(4,4,pi.bind(null,b,a),c)}function ri(){}function si(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction ti(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function ui(a,b,c){if(0===(Hh&21))return a.baseState&&(a.baseState=!1,dh=!0),a.memoizedState=c;He(c,b)||(c=yc(),M.lanes|=c,rh|=c,a.baseState=!0);return b}function vi(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Lh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Ph={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Wh,useRef:ji,useState:function(){return Wh(Vh)},\nuseDebugValue:ri,useDeferredValue:function(a){var b=Uh();return ui(b,N.memoizedState,a)},useTransition:function(){var a=Wh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1},Qh={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Xh,useRef:ji,useState:function(){return Xh(Vh)},useDebugValue:ri,useDeferredValue:function(a){var b=Uh();return null===\nN?b.memoizedState=a:ui(b,N.memoizedState,a)},useTransition:function(){var a=Xh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1};function Ci(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}function Di(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Ei={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=R(),d=\nyi(a),e=mh(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=nh(a,e,d);null!==b&&(gi(b,a,d,c),oh(b,a,d))}};function Fi(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction Gi(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=eh(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Ei;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Hi(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Ei.enqueueReplaceState(b,b.state,null)}\nfunction Ii(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs={};kh(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=eh(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Di(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Ei.enqueueReplaceState(e,e.state,null),qh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}function Ji(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}\nfunction Ki(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}function Li(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Mi=\"function\"===typeof WeakMap?WeakMap:Map;function Ni(a,b,c){c=mh(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Oi||(Oi=!0,Pi=d);Li(a,b)};return c}\nfunction Qi(a,b,c){c=mh(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Li(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Li(a,b);\"function\"!==typeof d&&(null===Ri?Ri=new Set([this]):Ri.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Si(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Mi;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ti.bind(null,a,b,c),b.then(a,a))}function Ui(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Vi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=mh(-1,1),b.tag=2,nh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Wi=ua.ReactCurrentOwner,dh=!1;function Xi(a,b,c,d){b.child=null===a?Vg(b,null,c,d):Ug(b,a.child,c,d)}\nfunction Yi(a,b,c,d,e){c=c.render;var f=b.ref;ch(b,e);d=Nh(a,b,c,d,f,e);c=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&c&&vg(b);b.flags|=1;Xi(a,b,d,e);return b.child}\nfunction $i(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!aj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bj(a,b,f,d,e);a=Rg(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return Zi(a,b,e)}b.flags|=1;a=Pg(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(dh=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(dh=!0);else return b.lanes=a.lanes,Zi(a,b,e)}return cj(a,b,c,d,e)}\nfunction dj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(ej,fj),fj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(ej,fj),fj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(ej,fj);fj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(ej,fj),fj|=d;Xi(a,b,e,c);return b.child}function gj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);ch(b,e);c=Nh(a,b,c,d,f,e);d=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&d&&vg(b);b.flags|=1;Xi(a,b,c,e);return b.child}\nfunction hj(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;ch(b,e);if(null===b.stateNode)ij(a,b),Gi(b,c,d),Ii(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=eh(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&Hi(b,g,d,l);jh=!1;var r=b.memoizedState;g.state=r;qh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||jh?(\"function\"===typeof m&&(Di(b,c,m,d),k=b.memoizedState),(h=jh||Fi(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;lh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Ci(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=eh(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&Hi(b,g,d,k);jh=!1;r=b.memoizedState;g.state=r;qh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||jh?(\"function\"===typeof y&&(Di(b,c,y,d),n=b.memoizedState),(l=jh||Fi(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return jj(a,b,c,d,f,e)}\nfunction jj(a,b,c,d,e,f){gj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),Zi(a,b,f);d=b.stateNode;Wi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Ug(b,a.child,null,f),b.child=Ug(b,null,h,f)):Xi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function kj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);yh(a,b.containerInfo)}\nfunction lj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Xi(a,b,c,d);return b.child}var mj={dehydrated:null,treeContext:null,retryLane:0};function nj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction oj(a,b,c){var d=b.pendingProps,e=L.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(L,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=pj(g,d,0,null),a=Tg(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=nj(c),b.memoizedState=mj,a):qj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return rj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=Pg(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=Pg(h,f):(f=Tg(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?nj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=mj;return d}f=a.child;a=f.sibling;d=Pg(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction qj(a,b){b=pj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sj(a,b,c,d){null!==d&&Jg(d);Ug(b,a.child,null,c);a=qj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction rj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Ki(Error(p(422))),sj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=pj({mode:\"visible\",children:d.children},e,0,null);f=Tg(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Ug(b,a.child,null,g);b.child.memoizedState=nj(g);b.memoizedState=mj;return f}if(0===(b.mode&1))return sj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Ki(f,d,void 0);return sj(a,b,g,d)}h=0!==(g&a.childLanes);if(dh||h){d=Q;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,ih(a,e),gi(d,a,e,-1))}tj();d=Ki(Error(p(421)));return sj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=uj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=qj(b,d.children);b.flags|=4096;return b}function vj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);bh(a.return,b,c)}\nfunction wj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction xj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Xi(a,b,d.children,c);d=L.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&vj(a,c,b);else if(19===a.tag)vj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(L,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Ch(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);wj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Ch(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}wj(b,!0,c,null,f);break;case \"together\":wj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction ij(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function Zi(a,b,c){null!==a&&(b.dependencies=a.dependencies);rh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=Pg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Pg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction yj(a,b,c){switch(b.tag){case 3:kj(b);Ig();break;case 5:Ah(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:yh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Wg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(L,L.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return oj(a,b,c);G(L,L.current&1);a=Zi(a,b,c);return null!==a?a.sibling:null}G(L,L.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return xj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(L,L.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dj(a,b,c)}return Zi(a,b,c)}var zj,Aj,Bj,Cj;\nzj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Aj=function(){};\nBj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;xh(uh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Cj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Dj(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Ej(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;zh();E(Wf);E(H);Eh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Fj(zg),zg=null));Aj(a,b);S(b);return null;case 5:Bh(b);var e=xh(wh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Bj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Cj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=xh(wh.current);xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(L);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Fj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(L.current&1)?0===T&&(T=3):tj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return zh(),\nAj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return ah(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(L);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Dj(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Ch(a);if(null!==g){b.flags|=128;Dj(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(L,L.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Gj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Xj=!1;break a;case 3:X=h.stateNode.containerInfo;Xj=!0;break a;case 4:X=h.stateNode.containerInfo;Xj=!0;break a}h=h.return}if(null===X)throw Error(p(160));Zj(f,g,e);X=null;Xj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)dk(b,a),b=b.sibling}\nfunction dk(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:ck(b,a);ek(a);if(d&4){try{Pj(3,a,a.return),Qj(3,a)}catch(t){W(a,a.return,t)}try{Pj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);break;case 5:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:ck(b,a);ek(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:ck(b,a);ek(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:ck(b,a);ek(a);break;case 13:ck(b,a);ek(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(fk=B()));d&4&&ak(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,ck(b,a),U=l):ck(b,a);ek(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Pj(4,r,r.return);break;case 1:Lj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Lj(r,r.return);break;case 22:if(null!==r.memoizedState){gk(q);continue}}null!==y?(y.return=r,V=y):gk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:ck(b,a);ek(a);d&4&&ak(a);break;case 21:break;default:ck(b,\na),ek(a)}}function ek(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Tj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Uj(a);Wj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Uj(a);Vj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function hk(a,b,c){V=a;ik(a,b,c)}\nfunction ik(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Jj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Jj;var l=U;Jj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?jk(e):null!==k?(k.return=g,V=k):jk(e);for(;null!==f;)V=f,ik(f,b,c),f=f.sibling;V=e;Jj=h;U=l}kk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):kk(a,b,c)}}\nfunction kk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Qj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Ci(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&sh(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}sh(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Rj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function gk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction jk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Qj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Rj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Rj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar lk=Math.ceil,mk=ua.ReactCurrentDispatcher,nk=ua.ReactCurrentOwner,ok=ua.ReactCurrentBatchConfig,K=0,Q=null,Y=null,Z=0,fj=0,ej=Uf(0),T=0,pk=null,rh=0,qk=0,rk=0,sk=null,tk=null,fk=0,Gj=Infinity,uk=null,Oi=!1,Pi=null,Ri=null,vk=!1,wk=null,xk=0,yk=0,zk=null,Ak=-1,Bk=0;function R(){return 0!==(K&6)?B():-1!==Ak?Ak:Ak=B()}\nfunction yi(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Bk&&(Bk=yc()),Bk;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function gi(a,b,c,d){if(50<yk)throw yk=0,zk=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==Q)a===Q&&(0===(K&2)&&(qk|=c),4===T&&Ck(a,Z)),Dk(a,d),1===c&&0===K&&0===(b.mode&1)&&(Gj=B()+500,fg&&jg())}\nfunction Dk(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===Q?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Ek.bind(null,a)):hg(Ek.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Fk(c,Gk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Gk(a,b){Ak=-1;Bk=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Hk()&&a.callbackNode!==c)return null;var d=uc(a,a===Q?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Ik(a,d);else{b=d;var e=K;K|=2;var f=Jk();if(Q!==a||Z!==b)uk=null,Gj=B()+500,Kk(a,b);do try{Lk();break}catch(h){Mk(a,h)}while(1);$g();mk.current=f;K=e;null!==Y?b=0:(Q=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Nk(a,e)));if(1===b)throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;if(6===b)Ck(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Ok(e)&&(b=Ik(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Nk(a,f))),1===b))throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Pk(a,tk,uk);break;case 3:Ck(a,d);if((d&130023424)===d&&(b=fk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){R();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),b);break}Pk(a,tk,uk);break;case 4:Ck(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),d);break}Pk(a,tk,uk);break;case 5:Pk(a,tk,uk);break;default:throw Error(p(329));}}}Dk(a,B());return a.callbackNode===c?Gk.bind(null,a):null}\nfunction Nk(a,b){var c=sk;a.current.memoizedState.isDehydrated&&(Kk(a,b).flags|=256);a=Ik(a,b);2!==a&&(b=tk,tk=c,null!==b&&Fj(b));return a}function Fj(a){null===tk?tk=a:tk.push.apply(tk,a)}\nfunction Ok(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Ck(a,b){b&=~rk;b&=~qk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Ek(a){if(0!==(K&6))throw Error(p(327));Hk();var b=uc(a,0);if(0===(b&1))return Dk(a,B()),null;var c=Ik(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Nk(a,d))}if(1===c)throw c=pk,Kk(a,0),Ck(a,b),Dk(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Pk(a,tk,uk);Dk(a,B());return null}\nfunction Qk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Gj=B()+500,fg&&jg())}}function Rk(a){null!==wk&&0===wk.tag&&0===(K&6)&&Hk();var b=K;K|=1;var c=ok.transition,d=C;try{if(ok.transition=null,C=1,a)return a()}finally{C=d,ok.transition=c,K=b,0===(K&6)&&jg()}}function Hj(){fj=ej.current;E(ej)}\nfunction Kk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:zh();E(Wf);E(H);Eh();break;case 5:Bh(d);break;case 4:zh();break;case 13:E(L);break;case 19:E(L);break;case 10:ah(d.type._context);break;case 22:case 23:Hj()}c=c.return}Q=a;Y=a=Pg(a.current,null);Z=fj=b;T=0;pk=null;rk=qk=rh=0;tk=sk=null;if(null!==fh){for(b=\n0;b<fh.length;b++)if(c=fh[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}fh=null}return a}\nfunction Mk(a,b){do{var c=Y;try{$g();Fh.current=Rh;if(Ih){for(var d=M.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Ih=!1}Hh=0;O=N=M=null;Jh=!1;Kh=0;nk.current=null;if(null===c||null===c.return){T=1;pk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Ui(g);if(null!==y){y.flags&=-257;Vi(y,g,h,f,b);y.mode&1&&Si(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Si(f,l,b);tj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Ui(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Vi(J,g,h,f,b);Jg(Ji(k,h));break a}}f=k=Ji(k,h);4!==T&&(T=2);null===sk?sk=[f]:sk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Ni(f,k,b);ph(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Ri||!Ri.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Qi(f,h,b);ph(f,F);break a}}f=f.return}while(null!==f)}Sk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Jk(){var a=mk.current;mk.current=Rh;return null===a?Rh:a}\nfunction tj(){if(0===T||3===T||2===T)T=4;null===Q||0===(rh&268435455)&&0===(qk&268435455)||Ck(Q,Z)}function Ik(a,b){var c=K;K|=2;var d=Jk();if(Q!==a||Z!==b)uk=null,Kk(a,b);do try{Tk();break}catch(e){Mk(a,e)}while(1);$g();K=c;mk.current=d;if(null!==Y)throw Error(p(261));Q=null;Z=0;return T}function Tk(){for(;null!==Y;)Uk(Y)}function Lk(){for(;null!==Y&&!cc();)Uk(Y)}function Uk(a){var b=Vk(a.alternate,a,fj);a.memoizedProps=a.pendingProps;null===b?Sk(a):Y=b;nk.current=null}\nfunction Sk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Ej(c,b,fj),null!==c){Y=c;return}}else{c=Ij(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Pk(a,b,c){var d=C,e=ok.transition;try{ok.transition=null,C=1,Wk(a,b,c,d)}finally{ok.transition=e,C=d}return null}\nfunction Wk(a,b,c,d){do Hk();while(null!==wk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===Q&&(Y=Q=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||vk||(vk=!0,Fk(hc,function(){Hk();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=ok.transition;ok.transition=null;\nvar g=C;C=1;var h=K;K|=4;nk.current=null;Oj(a,c);dk(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;hk(c,a,e);dc();K=h;C=g;ok.transition=f}else a.current=c;vk&&(vk=!1,wk=a,xk=e);f=a.pendingLanes;0===f&&(Ri=null);mc(c.stateNode,d);Dk(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Oi)throw Oi=!1,a=Pi,Pi=null,a;0!==(xk&1)&&0!==a.tag&&Hk();f=a.pendingLanes;0!==(f&1)?a===zk?yk++:(yk=0,zk=a):yk=0;jg();return null}\nfunction Hk(){if(null!==wk){var a=Dc(xk),b=ok.transition,c=C;try{ok.transition=null;C=16>a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Pj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Sj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Pj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Qj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,ok.transition=b}}return!1}function Xk(a,b,c){b=Ji(c,b);b=Ni(a,b,1);a=nh(a,b,1);b=R();null!==a&&(Ac(a,1,b),Dk(a,b))}\nfunction W(a,b,c){if(3===a.tag)Xk(a,a,c);else for(;null!==b;){if(3===b.tag){Xk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ri||!Ri.has(d))){a=Ji(c,a);a=Qi(b,a,1);b=nh(b,a,1);a=R();null!==b&&(Ac(b,1,a),Dk(b,a));break}}b=b.return}}\nfunction Ti(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=R();a.pingedLanes|=a.suspendedLanes&c;Q===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction dl(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction el(a,b,c,d,e,f,g,h,k){a=bl(c,d,!0,a,e,f,g,h,k);a.context=dl(null);c=a.current;d=R();e=yi(c);f=mh(d,e);f.callback=void 0!==b&&null!==b?b:null;nh(c,f,e);a.current.lanes=e;Ac(a,e,d);Dk(a,d);return a}function fl(a,b,c,d){var e=b.current,f=R(),g=yi(e);c=dl(c);null===b.context?b.context=c:b.pendingContext=c;b=mh(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=nh(e,b,g);null!==a&&(gi(a,e,g,f),oh(a,e,g));return g}\nfunction gl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function hl(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function il(a,b){hl(a,b);(a=a.alternate)&&hl(a,b)}function jl(){return null}var kl=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ll(a){this._internalRoot=a}\nml.prototype.render=ll.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));fl(a,b,null,null)};ml.prototype.unmount=ll.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Rk(function(){fl(null,a,null,null)});b[uf]=null}};function ml(a){this._internalRoot=a}\nml.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function nl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function pl(){}\nfunction ql(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=gl(g);f.call(a)}}var g=el(b,d,a,0,null,!1,!1,\"\",pl);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Rk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=gl(k);h.call(a)}}var k=bl(a,0,!1,null,null,!1,!1,\"\",pl);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Rk(function(){fl(b,k,c,d)});return k}\nfunction rl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=gl(g);h.call(a)}}fl(b,g,a,e)}else g=ql(c,b,a,e,d);return gl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Dk(b,B()),0===(K&6)&&(Gj=B()+500,jg()))}break;case 13:Rk(function(){var b=ih(a,1);if(null!==b){var c=R();gi(b,a,1,c)}}),il(a,1)}};\nFc=function(a){if(13===a.tag){var b=ih(a,134217728);if(null!==b){var c=R();gi(b,a,134217728,c)}il(a,134217728)}};Gc=function(a){if(13===a.tag){var b=yi(a),c=ih(a,b);if(null!==c){var d=R();gi(c,a,b,d)}il(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Qk;Hb=Rk;\nvar sl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Qk]},tl={findFiberByHostInstance:Wc,bundleType:0,version:\"18.3.1\",rendererPackageName:\"react-dom\"};\nvar ul={bundleType:tl.bundleType,version:tl.version,rendererPackageName:tl.rendererPackageName,rendererConfig:tl.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:tl.findFiberByHostInstance||\njl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1-next-f1338f8080-20240426\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var vl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!vl.isDisabled&&vl.supportsFiber)try{kc=vl.inject(ul),lc=vl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=sl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nl(b))throw Error(p(200));return cl(a,b,null,c)};exports.createRoot=function(a,b){if(!nl(a))throw Error(p(299));var c=!1,d=\"\",e=kl;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=bl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ll(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Rk(a)};exports.hydrate=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!nl(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=kl;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=el(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new ml(b)};exports.render=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!ol(a))throw Error(p(40));return a._reactRootContainer?(Rk(function(){rl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Qk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!ol(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return rl(a,b,c,!1,d)};exports.version=\"18.3.1-next-f1338f8080-20240426\";\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","'use strict';\n\nvar _warn = require('./utils/warn');\n\nvar _warn2 = _interopRequireDefault(_warn);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// https://developers.google.com/tag-manager/quickstart\n\nvar Snippets = {\n tags: function tags(_ref) {\n var id = _ref.id,\n events = _ref.events,\n dataLayer = _ref.dataLayer,\n dataLayerName = _ref.dataLayerName,\n preview = _ref.preview,\n auth = _ref.auth;\n\n var gtm_auth = '>m_auth=' + auth;\n var gtm_preview = '>m_preview=' + preview;\n\n if (!id) (0, _warn2.default)('GTM Id is required');\n\n var iframe = '\\n <iframe src=\"https://www.googletagmanager.com/ns.html?id=' + id + gtm_auth + gtm_preview + '>m_cookies_win=x\"\\n height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\" id=\"tag-manager\"></iframe>';\n\n var script = '\\n (function(w,d,s,l,i){w[l]=w[l]||[];\\n w[l].push({\\'gtm.start\\': new Date().getTime(),event:\\'gtm.js\\', ' + JSON.stringify(events).slice(1, -1) + '});\\n var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!=\\'dataLayer\\'?\\'&l=\\'+l:\\'\\';\\n j.async=true;j.src=\\'https://www.googletagmanager.com/gtm.js?id=\\'+i+dl+\\'' + gtm_auth + gtm_preview + '>m_cookies_win=x\\';\\n f.parentNode.insertBefore(j,f);\\n })(window,document,\\'script\\',\\'' + dataLayerName + '\\',\\'' + id + '\\');';\n\n var dataLayerVar = this.dataLayer(dataLayer, dataLayerName);\n\n return {\n iframe: iframe,\n script: script,\n dataLayerVar: dataLayerVar\n };\n },\n dataLayer: function dataLayer(_dataLayer, dataLayerName) {\n return '\\n window.' + dataLayerName + ' = window.' + dataLayerName + ' || [];\\n window.' + dataLayerName + '.push(' + JSON.stringify(_dataLayer) + ')';\n }\n};\n\nmodule.exports = Snippets;","'use strict';\n\nvar _Snippets = require('./Snippets');\n\nvar _Snippets2 = _interopRequireDefault(_Snippets);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TagManager = {\n dataScript: function dataScript(dataLayer) {\n var script = document.createElement('script');\n script.innerHTML = dataLayer;\n return script;\n },\n gtm: function gtm(args) {\n var snippets = _Snippets2.default.tags(args);\n\n var noScript = function noScript() {\n var noscript = document.createElement('noscript');\n noscript.innerHTML = snippets.iframe;\n return noscript;\n };\n\n var script = function script() {\n var script = document.createElement('script');\n script.innerHTML = snippets.script;\n return script;\n };\n\n var dataScript = this.dataScript(snippets.dataLayerVar);\n\n return {\n noScript: noScript,\n script: script,\n dataScript: dataScript\n };\n },\n initialize: function initialize(_ref) {\n var gtmId = _ref.gtmId,\n _ref$events = _ref.events,\n events = _ref$events === undefined ? {} : _ref$events,\n dataLayer = _ref.dataLayer,\n _ref$dataLayerName = _ref.dataLayerName,\n dataLayerName = _ref$dataLayerName === undefined ? 'dataLayer' : _ref$dataLayerName,\n _ref$auth = _ref.auth,\n auth = _ref$auth === undefined ? '' : _ref$auth,\n _ref$preview = _ref.preview,\n preview = _ref$preview === undefined ? '' : _ref$preview;\n\n var gtm = this.gtm({\n id: gtmId,\n events: events,\n dataLayer: dataLayer || undefined,\n dataLayerName: dataLayerName,\n auth: auth,\n preview: preview\n });\n if (dataLayer) document.head.appendChild(gtm.dataScript);\n document.head.insertBefore(gtm.script(), document.head.childNodes[0]);\n document.body.insertBefore(gtm.noScript(), document.body.childNodes[0]);\n },\n dataLayer: function dataLayer(_ref2) {\n var _dataLayer = _ref2.dataLayer,\n _ref2$dataLayerName = _ref2.dataLayerName,\n dataLayerName = _ref2$dataLayerName === undefined ? 'dataLayer' : _ref2$dataLayerName;\n\n if (window[dataLayerName]) return window[dataLayerName].push(_dataLayer);\n var snippets = _Snippets2.default.dataLayer(_dataLayer, dataLayerName);\n var dataScript = this.dataScript(snippets);\n document.head.insertBefore(dataScript, document.head.childNodes[0]);\n }\n};\n\nmodule.exports = TagManager;","'use strict';\n\nvar _TagManager = require('./TagManager');\n\nvar _TagManager2 = _interopRequireDefault(_TagManager);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _TagManager2.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar warn = function warn(s) {\n console.warn('[react-gtm]', s);\n};\n\nexports.default = warn;","export const TAG_PROPERTIES = {\n CHARSET: 'charset',\n CSS_TEXT: 'cssText',\n HREF: 'href',\n HTTPEQUIV: 'http-equiv',\n INNER_HTML: 'innerHTML',\n ITEM_PROP: 'itemprop',\n NAME: 'name',\n PROPERTY: 'property',\n REL: 'rel',\n SRC: 'src',\n};\n\nexport const ATTRIBUTE_NAMES = {\n BODY: 'bodyAttributes',\n HTML: 'htmlAttributes',\n TITLE: 'titleAttributes',\n};\n\nexport const TAG_NAMES = {\n BASE: 'base',\n BODY: 'body',\n HEAD: 'head',\n HTML: 'html',\n LINK: 'link',\n META: 'meta',\n NOSCRIPT: 'noscript',\n SCRIPT: 'script',\n STYLE: 'style',\n TITLE: 'title',\n FRAGMENT: 'Symbol(react.fragment)',\n};\n\nexport const SEO_PRIORITY_TAGS = {\n link: { rel: ['amphtml', 'canonical', 'alternate'] },\n script: { type: ['application/ld+json'] },\n meta: {\n charset: '',\n name: ['robots', 'description'],\n property: [\n 'og:type',\n 'og:title',\n 'og:url',\n 'og:image',\n 'og:image:alt',\n 'og:description',\n 'twitter:url',\n 'twitter:title',\n 'twitter:description',\n 'twitter:image',\n 'twitter:image:alt',\n 'twitter:card',\n 'twitter:site',\n ],\n },\n};\n\nexport const VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(name => TAG_NAMES[name]);\n\nexport const REACT_TAG_MAP = {\n accesskey: 'accessKey',\n charset: 'charSet',\n class: 'className',\n contenteditable: 'contentEditable',\n contextmenu: 'contextMenu',\n 'http-equiv': 'httpEquiv',\n itemprop: 'itemProp',\n tabindex: 'tabIndex',\n};\n\nexport const HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce((obj, key) => {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nexport const HELMET_ATTRIBUTE = 'data-rh';\n","import { TAG_NAMES, TAG_PROPERTIES, ATTRIBUTE_NAMES } from './constants';\n\nconst HELMET_PROPS = {\n DEFAULT_TITLE: 'defaultTitle',\n DEFER: 'defer',\n ENCODE_SPECIAL_CHARACTERS: 'encodeSpecialCharacters',\n ON_CHANGE_CLIENT_STATE: 'onChangeClientState',\n TITLE_TEMPLATE: 'titleTemplate',\n PRIORITIZE_SEO_TAGS: 'prioritizeSeoTags',\n};\n\nconst getInnermostProperty = (propsList, property) => {\n for (let i = propsList.length - 1; i >= 0; i -= 1) {\n const props = propsList[i];\n\n if (Object.prototype.hasOwnProperty.call(props, property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nconst getTitleFromPropsList = propsList => {\n let innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n const innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n if (Array.isArray(innermostTitle)) {\n innermostTitle = innermostTitle.join('');\n }\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, () => innermostTitle);\n }\n\n const innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nconst getOnChangeClientState = propsList =>\n getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || (() => {});\n\nconst getAttributesFromPropsList = (tagType, propsList) =>\n propsList\n .filter(props => typeof props[tagType] !== 'undefined')\n .map(props => props[tagType])\n .reduce((tagAttrs, current) => ({ ...tagAttrs, ...current }), {});\n\nconst getBaseTagFromPropsList = (primaryAttributes, propsList) =>\n propsList\n .filter(props => typeof props[TAG_NAMES.BASE] !== 'undefined')\n .map(props => props[TAG_NAMES.BASE])\n .reverse()\n .reduce((innermostBaseTag, tag) => {\n if (!innermostBaseTag.length) {\n const keys = Object.keys(tag);\n\n for (let i = 0; i < keys.length; i += 1) {\n const attributeKey = keys[i];\n const lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (\n primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 &&\n tag[lowerCaseAttributeKey]\n ) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n\n// eslint-disable-next-line no-console\nconst warn = msg => console && typeof console.warn === 'function' && console.warn(msg);\n\nconst getTagsFromPropsList = (tagName, primaryAttributes, propsList) => {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n const approvedSeenTags = {};\n\n return propsList\n .filter(props => {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== 'undefined') {\n warn(\n `Helmet: ${tagName} should be of type \"Array\". Instead found type \"${typeof props[\n tagName\n ]}\"`\n );\n }\n return false;\n })\n .map(props => props[tagName])\n .reverse()\n .reduce((approvedTags, instanceTags) => {\n const instanceSeenTags = {};\n\n instanceTags\n .filter(tag => {\n let primaryAttributeKey;\n const keys = Object.keys(tag);\n for (let i = 0; i < keys.length; i += 1) {\n const attributeKey = keys[i];\n const lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (\n primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 &&\n !(\n primaryAttributeKey === TAG_PROPERTIES.REL &&\n tag[primaryAttributeKey].toLowerCase() === 'canonical'\n ) &&\n !(\n lowerCaseAttributeKey === TAG_PROPERTIES.REL &&\n tag[lowerCaseAttributeKey].toLowerCase() === 'stylesheet'\n )\n ) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (\n primaryAttributes.indexOf(attributeKey) !== -1 &&\n (attributeKey === TAG_PROPERTIES.INNER_HTML ||\n attributeKey === TAG_PROPERTIES.CSS_TEXT ||\n attributeKey === TAG_PROPERTIES.ITEM_PROP)\n ) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n const value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n })\n .reverse()\n .forEach(tag => approvedTags.push(tag));\n\n // Update seen tags with tags from this instance\n const keys = Object.keys(instanceSeenTags);\n for (let i = 0; i < keys.length; i += 1) {\n const attributeKey = keys[i];\n const tagUnion = {\n ...approvedSeenTags[attributeKey],\n ...instanceSeenTags[attributeKey],\n };\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, [])\n .reverse();\n};\n\nconst getAnyTrueFromPropsList = (propsList, checkedTag) => {\n if (Array.isArray(propsList) && propsList.length) {\n for (let index = 0; index < propsList.length; index += 1) {\n const prop = propsList[index];\n if (prop[checkedTag]) {\n return true;\n }\n }\n }\n return false;\n};\n\nconst reducePropsToState = propsList => ({\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(\n TAG_NAMES.LINK,\n [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF],\n propsList\n ),\n metaTags: getTagsFromPropsList(\n TAG_NAMES.META,\n [\n TAG_PROPERTIES.NAME,\n TAG_PROPERTIES.CHARSET,\n TAG_PROPERTIES.HTTPEQUIV,\n TAG_PROPERTIES.PROPERTY,\n TAG_PROPERTIES.ITEM_PROP,\n ],\n propsList\n ),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(\n TAG_NAMES.SCRIPT,\n [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML],\n propsList\n ),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList),\n prioritizeSeoTags: getAnyTrueFromPropsList(propsList, HELMET_PROPS.PRIORITIZE_SEO_TAGS),\n});\n\nexport const flattenArray = possibleArray =>\n Array.isArray(possibleArray) ? possibleArray.join('') : possibleArray;\n\nexport { reducePropsToState };\n\nconst checkIfPropsMatch = (props, toMatch) => {\n const keys = Object.keys(props);\n for (let i = 0; i < keys.length; i += 1) {\n // e.g. if rel exists in the list of allowed props [amphtml, alternate, etc]\n if (toMatch[keys[i]] && toMatch[keys[i]].includes(props[keys[i]])) {\n return true;\n }\n }\n return false;\n};\n\nexport const prioritizer = (elementsList, propsToMatch) => {\n if (Array.isArray(elementsList)) {\n return elementsList.reduce(\n (acc, elementAttrs) => {\n if (checkIfPropsMatch(elementAttrs, propsToMatch)) {\n acc.priority.push(elementAttrs);\n } else {\n acc.default.push(elementAttrs);\n }\n return acc;\n },\n { priority: [], default: [] }\n );\n }\n return { default: elementsList };\n};\n\nexport const without = (obj, key) => {\n return {\n ...obj,\n [key]: undefined,\n };\n};\n","import React from 'react';\nimport {\n HELMET_ATTRIBUTE,\n TAG_NAMES,\n REACT_TAG_MAP,\n TAG_PROPERTIES,\n ATTRIBUTE_NAMES,\n SEO_PRIORITY_TAGS,\n} from './constants';\nimport { flattenArray, prioritizer } from './utils';\n\nconst SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nconst encodeSpecialCharacters = (str, encode = true) => {\n if (encode === false) {\n return String(str);\n }\n\n return String(str)\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n};\n\nconst generateElementAttributesAsString = attributes =>\n Object.keys(attributes).reduce((str, key) => {\n const attr = typeof attributes[key] !== 'undefined' ? `${key}=\"${attributes[key]}\"` : `${key}`;\n return str ? `${str} ${attr}` : attr;\n }, '');\n\nconst generateTitleAsString = (type, title, attributes, encode) => {\n const attributeString = generateElementAttributesAsString(attributes);\n const flattenedTitle = flattenArray(title);\n return attributeString\n ? `<${type} ${HELMET_ATTRIBUTE}=\"true\" ${attributeString}>${encodeSpecialCharacters(\n flattenedTitle,\n encode\n )}</${type}>`\n : `<${type} ${HELMET_ATTRIBUTE}=\"true\">${encodeSpecialCharacters(\n flattenedTitle,\n encode\n )}</${type}>`;\n};\n\nconst generateTagsAsString = (type, tags, encode) =>\n tags.reduce((str, tag) => {\n const attributeHtml = Object.keys(tag)\n .filter(\n attribute =>\n !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT)\n )\n .reduce((string, attribute) => {\n const attr =\n typeof tag[attribute] === 'undefined'\n ? attribute\n : `${attribute}=\"${encodeSpecialCharacters(tag[attribute], encode)}\"`;\n return string ? `${string} ${attr}` : attr;\n }, '');\n\n const tagContent = tag.innerHTML || tag.cssText || '';\n\n const isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return `${str}<${type} ${HELMET_ATTRIBUTE}=\"true\" ${attributeHtml}${\n isSelfClosing ? `/>` : `>${tagContent}</${type}>`\n }`;\n }, '');\n\nconst convertElementAttributesToReactProps = (attributes, initProps = {}) =>\n Object.keys(attributes).reduce((obj, key) => {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n\nconst generateTitleAsReactComponent = (type, title, attributes) => {\n // assigning into an array to define toString function on it\n const initProps = {\n key: title,\n [HELMET_ATTRIBUTE]: true,\n };\n const props = convertElementAttributesToReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nconst generateTagsAsReactComponent = (type, tags) =>\n tags.map((tag, i) => {\n const mappedTag = {\n key: i,\n [HELMET_ATTRIBUTE]: true,\n };\n\n Object.keys(tag).forEach(attribute => {\n const mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (\n mappedAttribute === TAG_PROPERTIES.INNER_HTML ||\n mappedAttribute === TAG_PROPERTIES.CSS_TEXT\n ) {\n const content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n\nconst getMethodsForTag = (type, tags, encode) => {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: () =>\n generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode),\n toString: () => generateTitleAsString(type, tags.title, tags.titleAttributes, encode),\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: () => convertElementAttributesToReactProps(tags),\n toString: () => generateElementAttributesAsString(tags),\n };\n default:\n return {\n toComponent: () => generateTagsAsReactComponent(type, tags),\n toString: () => generateTagsAsString(type, tags, encode),\n };\n }\n};\n\nconst getPriorityMethods = ({ metaTags, linkTags, scriptTags, encode }) => {\n const meta = prioritizer(metaTags, SEO_PRIORITY_TAGS.meta);\n const link = prioritizer(linkTags, SEO_PRIORITY_TAGS.link);\n const script = prioritizer(scriptTags, SEO_PRIORITY_TAGS.script);\n\n // need to have toComponent() and toString()\n const priorityMethods = {\n toComponent: () => [\n ...generateTagsAsReactComponent(TAG_NAMES.META, meta.priority),\n ...generateTagsAsReactComponent(TAG_NAMES.LINK, link.priority),\n ...generateTagsAsReactComponent(TAG_NAMES.SCRIPT, script.priority),\n ],\n toString: () =>\n // generate all the tags as strings and concatenate them\n `${getMethodsForTag(TAG_NAMES.META, meta.priority, encode)} ${getMethodsForTag(\n TAG_NAMES.LINK,\n link.priority,\n encode\n )} ${getMethodsForTag(TAG_NAMES.SCRIPT, script.priority, encode)}`,\n };\n\n return {\n priorityMethods,\n metaTags: meta.default,\n linkTags: link.default,\n scriptTags: script.default,\n };\n};\n\nconst mapStateOnServer = props => {\n const {\n baseTag,\n bodyAttributes,\n encode,\n htmlAttributes,\n noscriptTags,\n styleTags,\n title = '',\n titleAttributes,\n prioritizeSeoTags,\n } = props;\n let { linkTags, metaTags, scriptTags } = props;\n let priorityMethods = {\n toComponent: () => {},\n toString: () => '',\n };\n if (prioritizeSeoTags) {\n ({ priorityMethods, linkTags, metaTags, scriptTags } = getPriorityMethods(props));\n }\n return {\n priority: priorityMethods,\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title, titleAttributes }, encode),\n };\n};\n\nexport default mapStateOnServer;\n","import mapStateOnServer from './server';\n\nconst instances = [];\n\nexport function clearInstances() {\n instances.length = 0;\n}\n\nexport default class HelmetData {\n instances = [];\n\n value = {\n setHelmet: serverState => {\n this.context.helmet = serverState;\n },\n helmetInstances: {\n get: () => (this.canUseDOM ? instances : this.instances),\n add: instance => {\n (this.canUseDOM ? instances : this.instances).push(instance);\n },\n remove: instance => {\n const index = (this.canUseDOM ? instances : this.instances).indexOf(instance);\n (this.canUseDOM ? instances : this.instances).splice(index, 1);\n },\n },\n };\n\n constructor(context, canUseDOM = typeof document !== 'undefined') {\n this.context = context;\n this.canUseDOM = canUseDOM;\n\n if (!canUseDOM) {\n context.helmet = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: '',\n titleAttributes: {},\n });\n }\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport HelmetData from './HelmetData';\n\nconst defaultValue = {};\n\nexport const Context = React.createContext(defaultValue);\n\nexport const providerShape = PropTypes.shape({\n setHelmet: PropTypes.func,\n helmetInstances: PropTypes.shape({\n get: PropTypes.func,\n add: PropTypes.func,\n remove: PropTypes.func,\n }),\n});\n\nconst canUseDOM = typeof document !== 'undefined';\n\nexport default class Provider extends Component {\n static canUseDOM = canUseDOM;\n\n static propTypes = {\n context: PropTypes.shape({\n helmet: PropTypes.shape(),\n }),\n children: PropTypes.node.isRequired,\n };\n\n static defaultProps = {\n context: {},\n };\n\n static displayName = 'HelmetProvider';\n\n constructor(props) {\n super(props);\n\n this.helmetData = new HelmetData(this.props.context, Provider.canUseDOM);\n }\n\n render() {\n return <Context.Provider value={this.helmetData.value}>{this.props.children}</Context.Provider>;\n }\n}\n","import { HELMET_ATTRIBUTE, TAG_NAMES, TAG_PROPERTIES } from './constants';\nimport { flattenArray } from './utils';\n\nconst updateTags = (type, tags) => {\n const headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n const tagNodes = headElement.querySelectorAll(`${type}[${HELMET_ATTRIBUTE}]`);\n const oldTags = [].slice.call(tagNodes);\n const newTags = [];\n let indexToDelete;\n\n if (tags && tags.length) {\n tags.forEach(tag => {\n const newElement = document.createElement(type);\n\n // eslint-disable-next-line\n for (const attribute in tag) {\n if (Object.prototype.hasOwnProperty.call(tag, attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n const value = typeof tag[attribute] === 'undefined' ? '' : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, 'true');\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (\n oldTags.some((existingTag, index) => {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })\n ) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(tag => tag.parentNode.removeChild(tag));\n newTags.forEach(tag => headElement.appendChild(tag));\n\n return {\n oldTags,\n newTags,\n };\n};\n\nconst updateAttributes = (tagName, attributes) => {\n const elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n const helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n const helmetAttributes = helmetAttributeString ? helmetAttributeString.split(',') : [];\n const attributesToRemove = [].concat(helmetAttributes);\n const attributeKeys = Object.keys(attributes);\n\n for (let i = 0; i < attributeKeys.length; i += 1) {\n const attribute = attributeKeys[i];\n const value = attributes[attribute] || '';\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n const indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (let i = attributesToRemove.length - 1; i >= 0; i -= 1) {\n elementTag.removeAttribute(attributesToRemove[i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(',')) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(','));\n }\n};\n\nconst updateTitle = (title, attributes) => {\n if (typeof title !== 'undefined' && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nconst commitTagChanges = (newState, cb) => {\n const {\n baseTag,\n bodyAttributes,\n htmlAttributes,\n linkTags,\n metaTags,\n noscriptTags,\n onChangeClientState,\n scriptTags,\n styleTags,\n title,\n titleAttributes,\n } = newState;\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n const tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags),\n };\n\n const addedTags = {};\n const removedTags = {};\n\n Object.keys(tagUpdates).forEach(tagType => {\n const { newTags, oldTags } = tagUpdates[tagType];\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n if (cb) {\n cb();\n }\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\n// eslint-disable-next-line\nlet _helmetCallback = null;\n\nconst handleStateChangeOnClient = newState => {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(() => {\n commitTagChanges(newState, () => {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nexport default handleStateChangeOnClient;\n","import { Component } from 'react';\nimport shallowEqual from 'shallowequal';\nimport handleStateChangeOnClient from './client';\nimport mapStateOnServer from './server';\nimport { reducePropsToState } from './utils';\nimport Provider, { providerShape } from './Provider';\n\nexport default class Dispatcher extends Component {\n static propTypes = {\n context: providerShape.isRequired,\n };\n\n static displayName = 'HelmetDispatcher';\n\n rendered = false;\n\n shouldComponentUpdate(nextProps) {\n return !shallowEqual(nextProps, this.props);\n }\n\n componentDidUpdate() {\n this.emitChange();\n }\n\n componentWillUnmount() {\n const { helmetInstances } = this.props.context;\n helmetInstances.remove(this);\n this.emitChange();\n }\n\n emitChange() {\n const { helmetInstances, setHelmet } = this.props.context;\n let serverState = null;\n const state = reducePropsToState(\n helmetInstances.get().map(instance => {\n const props = { ...instance.props };\n delete props.context;\n return props;\n })\n );\n if (Provider.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n serverState = mapStateOnServer(state);\n }\n setHelmet(serverState);\n }\n\n // componentWillMount will be deprecated\n // for SSR, initialize on first render\n // constructor is also unsafe in StrictMode\n init() {\n if (this.rendered) {\n return;\n }\n\n this.rendered = true;\n\n const { helmetInstances } = this.props.context;\n helmetInstances.add(this);\n this.emitChange();\n }\n\n render() {\n this.init();\n\n return null;\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport fastCompare from 'react-fast-compare';\nimport invariant from 'invariant';\nimport { Context } from './Provider';\nimport HelmetData from './HelmetData';\nimport Dispatcher from './Dispatcher';\nimport { without } from './utils';\nimport { TAG_NAMES, VALID_TAG_NAMES, HTML_TAG_MAP } from './constants';\n\nexport { default as HelmetData } from './HelmetData';\nexport { default as HelmetProvider } from './Provider';\n\n/* eslint-disable class-methods-use-this */\nexport class Helmet extends Component {\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n * @param {Boolean} prioritizeSeoTags: false\n */\n /* eslint-disable react/forbid-prop-types, react/require-default-props */\n static propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string,\n prioritizeSeoTags: PropTypes.bool,\n helmetData: PropTypes.object,\n };\n /* eslint-enable react/prop-types, react/forbid-prop-types, react/require-default-props */\n\n static defaultProps = {\n defer: true,\n encodeSpecialCharacters: true,\n prioritizeSeoTags: false,\n };\n\n static displayName = 'Helmet';\n\n shouldComponentUpdate(nextProps) {\n return !fastCompare(without(this.props, 'helmetData'), without(nextProps, 'helmetData'));\n }\n\n mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren,\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren,\n };\n default:\n throw new Error(\n `<${child.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`\n );\n }\n }\n\n flattenArrayTypeChildren({ child, arrayTypeChildren, newChildProps, nestedChildren }) {\n return {\n ...arrayTypeChildren,\n [child.type]: [\n ...(arrayTypeChildren[child.type] || []),\n {\n ...newChildProps,\n ...this.mapNestedChildrenToProps(child, nestedChildren),\n },\n ],\n };\n }\n\n mapObjectTypeChildren({ child, newProps, newChildProps, nestedChildren }) {\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return {\n ...newProps,\n [child.type]: nestedChildren,\n titleAttributes: { ...newChildProps },\n };\n\n case TAG_NAMES.BODY:\n return {\n ...newProps,\n bodyAttributes: { ...newChildProps },\n };\n\n case TAG_NAMES.HTML:\n return {\n ...newProps,\n htmlAttributes: { ...newChildProps },\n };\n default:\n return {\n ...newProps,\n [child.type]: { ...newChildProps },\n };\n }\n }\n\n mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n let newFlattenedProps = { ...newProps };\n\n Object.keys(arrayTypeChildren).forEach(arrayChildName => {\n newFlattenedProps = {\n ...newFlattenedProps,\n [arrayChildName]: arrayTypeChildren[arrayChildName],\n };\n });\n\n return newFlattenedProps;\n }\n\n warnOnInvalidChildren(child, nestedChildren) {\n invariant(\n VALID_TAG_NAMES.some(name => child.type === name),\n typeof child.type === 'function'\n ? `You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.`\n : `Only elements types ${VALID_TAG_NAMES.join(\n ', '\n )} are allowed. Helmet does not support rendering <${\n child.type\n }> elements. Refer to our API for more information.`\n );\n\n invariant(\n !nestedChildren ||\n typeof nestedChildren === 'string' ||\n (Array.isArray(nestedChildren) &&\n !nestedChildren.some(nestedChild => typeof nestedChild !== 'string')),\n `Helmet expects a string as a child of <${child.type}>. Did you forget to wrap your children in braces? ( <${child.type}>{\\`\\`}</${child.type}> ) Refer to our API for more information.`\n );\n\n return true;\n }\n\n mapChildrenToProps(children, newProps) {\n let arrayTypeChildren = {};\n\n React.Children.forEach(children, child => {\n if (!child || !child.props) {\n return;\n }\n\n const { children: nestedChildren, ...childProps } = child.props;\n // convert React props to HTML attributes\n const newChildProps = Object.keys(childProps).reduce((obj, key) => {\n obj[HTML_TAG_MAP[key] || key] = childProps[key];\n return obj;\n }, {});\n\n let { type } = child;\n if (typeof type === 'symbol') {\n type = type.toString();\n } else {\n this.warnOnInvalidChildren(child, nestedChildren);\n }\n\n switch (type) {\n case TAG_NAMES.FRAGMENT:\n newProps = this.mapChildrenToProps(nestedChildren, newProps);\n break;\n\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = this.flattenArrayTypeChildren({\n child,\n arrayTypeChildren,\n newChildProps,\n nestedChildren,\n });\n break;\n\n default:\n newProps = this.mapObjectTypeChildren({\n child,\n newProps,\n newChildProps,\n nestedChildren,\n });\n break;\n }\n });\n\n return this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n }\n\n render() {\n const { children, ...props } = this.props;\n let newProps = { ...props };\n let { helmetData } = props;\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n if (helmetData && !(helmetData instanceof HelmetData)) {\n helmetData = new HelmetData(helmetData.context, helmetData.instances);\n }\n\n return helmetData ? (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <Dispatcher {...newProps} context={helmetData.value} helmetData={undefined} />\n ) : (\n <Context.Consumer>\n {(\n context // eslint-disable-next-line react/jsx-props-no-spreading\n ) => <Dispatcher {...newProps} context={context} />}\n </Context.Consumer>\n );\n }\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nlet batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport const setBatch = newBatch => batch = newBatch; // Supply a getter just to skip dealing with ESM bindings\n\nexport const getBatch = () => batch;","import * as React from 'react';\nconst ContextKey = Symbol.for(`react-redux-context`);\nconst gT = typeof globalThis !== \"undefined\" ? globalThis :\n/* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */\n{};\n\nfunction getContext() {\n var _gT$ContextKey;\n\n if (!React.createContext) return {};\n const contextMap = (_gT$ContextKey = gT[ContextKey]) != null ? _gT$ContextKey : gT[ContextKey] = new Map();\n let realContext = contextMap.get(React.createContext);\n\n if (!realContext) {\n realContext = React.createContext(null);\n\n if (process.env.NODE_ENV !== 'production') {\n realContext.displayName = 'ReactRedux';\n }\n\n contextMap.set(React.createContext, realContext);\n }\n\n return realContext;\n}\n\nexport const ReactReduxContext = /*#__PURE__*/getContext();\nexport default ReactReduxContext;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n\n/**\r\n * Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useReduxContext` hook bound to the specified context.\r\n */\nexport function createReduxContextHook(context = ReactReduxContext) {\n return function useReduxContext() {\n const contextValue = useContext(context);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n }\n\n return contextValue;\n };\n}\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const { store } = useReduxContext()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport const useReduxContext = /*#__PURE__*/createReduxContextHook();","import { useCallback, useDebugValue, useRef } from 'react';\nimport { createReduxContextHook, useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { ReactReduxContext } from '../components/Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStoreWithSelector = notInitialized;\nexport const initializeUseSelector = fn => {\n useSyncExternalStoreWithSelector = fn;\n};\n\nconst refEquality = (a, b) => a === b;\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context = ReactReduxContext) {\n const useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : createReduxContextHook(context);\n return function useSelector(selector, equalityFnOrOptions = {}) {\n const {\n equalityFn = refEquality,\n stabilityCheck = undefined,\n noopCheck = undefined\n } = typeof equalityFnOrOptions === 'function' ? {\n equalityFn: equalityFnOrOptions\n } : equalityFnOrOptions;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(`You must pass a selector to useSelector`);\n }\n\n if (typeof selector !== 'function') {\n throw new Error(`You must pass a function as a selector to useSelector`);\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(`You must pass a function as an equality function to useSelector`);\n }\n }\n\n const {\n store,\n subscription,\n getServerState,\n stabilityCheck: globalStabilityCheck,\n noopCheck: globalNoopCheck\n } = useReduxContext();\n const firstRun = useRef(true);\n const wrappedSelector = useCallback({\n [selector.name](state) {\n const selected = selector(state);\n\n if (process.env.NODE_ENV !== 'production') {\n const finalStabilityCheck = typeof stabilityCheck === 'undefined' ? globalStabilityCheck : stabilityCheck;\n\n if (finalStabilityCheck === 'always' || finalStabilityCheck === 'once' && firstRun.current) {\n const toCompare = selector(state);\n\n if (!equalityFn(selected, toCompare)) {\n let stack = undefined;\n\n try {\n throw new Error();\n } catch (e) {\n ;\n ({\n stack\n } = e);\n }\n\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned a different result when called with the same parameters. This can lead to unnecessary rerenders.' + '\\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization', {\n state,\n selected,\n selected2: toCompare,\n stack\n });\n }\n }\n\n const finalNoopCheck = typeof noopCheck === 'undefined' ? globalNoopCheck : noopCheck;\n\n if (finalNoopCheck === 'always' || finalNoopCheck === 'once' && firstRun.current) {\n // @ts-ignore\n if (selected === state) {\n let stack = undefined;\n\n try {\n throw new Error();\n } catch (e) {\n ;\n ({\n stack\n } = e);\n }\n\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned the root state when called. This can lead to unnecessary rerenders.' + '\\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.', {\n stack\n });\n }\n }\n\n if (firstRun.current) firstRun.current = false;\n }\n\n return selected;\n }\n\n }[selector.name], [selector, globalStabilityCheck, stabilityCheck]);\n const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, wrappedSelector, equalityFn);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return <div>{counter}</div>\r\n * }\r\n */\n\nexport const useSelector = /*#__PURE__*/createSelectorHook();","export const notInitialized = () => {\n throw new Error('uSES not initialized!');\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n const batch = getBatch();\n let first = null;\n let last = null;\n return {\n clear() {\n first = null;\n last = null;\n },\n\n notify() {\n batch(() => {\n let listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n\n get() {\n let listeners = [];\n let listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n\n subscribe(callback) {\n let isSubscribed = true;\n let listener = last = {\n callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n\n };\n}\n\nconst nullListeners = {\n notify() {},\n\n get: () => []\n};\nexport function createSubscription(store, parentSub) {\n let unsubscribe;\n let listeners = nullListeners; // Reasons to keep the subscription active\n\n let subscriptionsAmount = 0; // Is this specific subscription subscribed (or only nested ones?)\n\n let selfSubscribed = false;\n\n function addNestedSub(listener) {\n trySubscribe();\n const cleanupListener = listeners.subscribe(listener); // cleanup nested sub\n\n let removed = false;\n return () => {\n if (!removed) {\n removed = true;\n cleanupListener();\n tryUnsubscribe();\n }\n };\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return selfSubscribed;\n }\n\n function trySubscribe() {\n subscriptionsAmount++;\n\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n subscriptionsAmount--;\n\n if (unsubscribe && subscriptionsAmount === 0) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n function trySubscribeSelf() {\n if (!selfSubscribed) {\n selfSubscribed = true;\n trySubscribe();\n }\n }\n\n function tryUnsubscribeSelf() {\n if (selfSubscribed) {\n selfSubscribed = false;\n tryUnsubscribe();\n }\n }\n\n const subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe: trySubscribeSelf,\n tryUnsubscribe: tryUnsubscribeSelf,\n getListeners: () => listeners\n };\n return subscription;\n}","import * as React from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n// Matches logic in React's `shared/ExecutionEnvironment` file\n\nexport const canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\nexport const useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"reactReduxForwardedRef\"];\n\n/* eslint-disable valid-jsdoc, @typescript-eslint/no-unused-vars */\nimport hoistStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport defaultSelectorFactory from '../connect/selectorFactory';\nimport { mapDispatchToPropsFactory } from '../connect/mapDispatchToProps';\nimport { mapStateToPropsFactory } from '../connect/mapStateToProps';\nimport { mergePropsFactory } from '../connect/mergeProps';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport shallowEqual from '../utils/shallowEqual';\nimport warning from '../utils/warning';\nimport { ReactReduxContext } from './Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStore = notInitialized;\nexport const initializeConnect = fn => {\n useSyncExternalStore = fn;\n}; // Define some constant arrays just to avoid re-creating these\n\nconst EMPTY_ARRAY = [null, 0];\nconst NO_SUBSCRIPTION_ARRAY = [null, null]; // Attempts to stringify whatever not-really-a-component value we were given\n// for logging in an error message\n\nconst stringifyComponent = Comp => {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\n// This is \"just\" a `useLayoutEffect`, but with two modifications:\n// - we need to fall back to `useEffect` in SSR to avoid annoying warnings\n// - we extract this to a separate function to avoid closing over values\n// and causing memory leaks\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(() => effectFunc(...effectArgs), dependencies);\n} // Effect callback, extracted: assign the latest props values to refs for later usage\n\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, // actualChildProps: unknown,\nchildPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n} // Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor,\n// check for updates after dispatched actions, and trigger re-renders.\n\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, // forceComponentUpdateDispatch: React.Dispatch<any>,\nadditionalSubscribeListener) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return () => {}; // Capture values for checking if and when this component unmounts\n\n let didUnsubscribe = false;\n let lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n const checkForUpdates = () => {\n if (didUnsubscribe || !isMounted.current) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n } // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it\n\n\n const latestStoreState = store.getState();\n let newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // TODO This is hacky and not how `uSES` is meant to be used\n // Trigger the React `useSyncExternalStore` subscriber\n\n additionalSubscribeListener();\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n const unsubscribeWrapper = () => {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n} // Reducer initial state creation for our update reducer\n\n\nconst initStateUpdates = () => EMPTY_ARRAY;\n\nfunction strictEqual(a, b) {\n return a === b;\n}\n/**\r\n * Infers the type of props that a connector will inject into a component.\r\n */\n\n\nlet hasWarnedAboutDeprecatedPureOption = false;\n/**\r\n * Connects a React component to a Redux store.\r\n *\r\n * - Without arguments, just wraps the component, without changing the behavior / props\r\n *\r\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\r\n * is to override ownProps (as stated in the docs), so what remains is everything that's\r\n * not a state or dispatch prop\r\n *\r\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\r\n * should be valid component props, because it depends on mergeProps implementation.\r\n * As such, it is the user's responsibility to extend ownProps interface from state or\r\n * dispatch props or both when applicable\r\n *\r\n * @param mapStateToProps A function that extracts values from state\r\n * @param mapDispatchToProps Setup for dispatching actions\r\n * @param mergeProps Optional callback to merge state and dispatch props together\r\n * @param options Options for configuring the connection\r\n *\r\n */\n\nfunction connect(mapStateToProps, mapDispatchToProps, mergeProps, {\n // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n // @ts-ignore\n pure,\n areStatesEqual = strictEqual,\n areOwnPropsEqual = shallowEqual,\n areStatePropsEqual = shallowEqual,\n areMergedPropsEqual = shallowEqual,\n // use React's forwardRef to expose a ref of the wrapped component\n forwardRef = false,\n // the context consumer to use\n context = ReactReduxContext\n} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) {\n hasWarnedAboutDeprecatedPureOption = true;\n warning('The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component');\n }\n }\n\n const Context = context;\n const initMapStateToProps = mapStateToPropsFactory(mapStateToProps);\n const initMapDispatchToProps = mapDispatchToPropsFactory(mapDispatchToProps);\n const initMergeProps = mergePropsFactory(mergeProps);\n const shouldHandleStateChanges = Boolean(mapStateToProps);\n\n const wrapWithConnect = WrappedComponent => {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(`You must pass a component to the function returned by connect. Instead received ${stringifyComponent(WrappedComponent)}`);\n }\n\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n const displayName = `Connect(${wrappedComponentName})`;\n const selectorFactoryOptions = {\n shouldHandleStateChanges,\n displayName,\n wrappedComponentName,\n WrappedComponent,\n // @ts-ignore\n initMapStateToProps,\n // @ts-ignore\n initMapDispatchToProps,\n initMergeProps,\n areStatesEqual,\n areStatePropsEqual,\n areOwnPropsEqual,\n areMergedPropsEqual\n };\n\n function ConnectFunction(props) {\n const [propsContext, reactReduxForwardedRef, wrapperProps] = React.useMemo(() => {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n const {\n reactReduxForwardedRef\n } = props,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]);\n const ContextToUse = React.useMemo(() => {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && // @ts-ignore\n isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n const contextValue = React.useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(`Could not find \"store\" in the context of ` + `\"${displayName}\". Either wrap the root component in a <Provider>, ` + `or pass a custom React context provider to <Provider> and the corresponding ` + `React context consumer to ${displayName} in connect options.`);\n } // Based on the previous check, one of these must be true\n\n\n const store = didStoreComeFromProps ? props.store : contextValue.store;\n const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;\n const childPropsSelector = React.useMemo(() => {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return defaultSelectorFactory(store.dispatch, selectorFactoryOptions);\n }, [store]);\n const [subscription, notifyNestedSubs] = React.useMemo(() => {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n const subscription = createSubscription(store, didStoreComeFromProps ? undefined : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]); // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n const overriddenContextValue = React.useMemo(() => {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // Set up refs to coordinate values between the subscription effect and the render logic\n\n const lastChildProps = React.useRef();\n const lastWrapperProps = React.useRef(wrapperProps);\n const childPropsFromStoreUpdate = React.useRef();\n const renderIsScheduled = React.useRef(false);\n const isProcessingDispatch = React.useRef(false);\n const isMounted = React.useRef(false);\n const latestSubscriptionCallbackError = React.useRef();\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n const actualChildPropsSelector = React.useMemo(() => {\n const selector = () => {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n };\n\n return selector;\n }, [store, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n const subscribeForReact = React.useMemo(() => {\n const subscribe = reactListener => {\n if (!subscription) {\n return () => {};\n }\n\n return subscribeUpdates(shouldHandleStateChanges, store, subscription, // @ts-ignore\n childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, reactListener);\n };\n\n return subscribe;\n }, [subscription]);\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs]);\n let actualChildProps;\n\n try {\n actualChildProps = useSyncExternalStore( // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\n subscribeForReact, // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\n // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n actualChildPropsSelector, getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector);\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n ;\n err.message += `\\nThe error may be correlated with this previous error:\\n${latestSubscriptionCallbackError.current.stack}\\n\\n`;\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(() => {\n latestSubscriptionCallbackError.current = undefined;\n childPropsFromStoreUpdate.current = undefined;\n lastChildProps.current = actualChildProps;\n }); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n const renderedWrappedComponent = React.useMemo(() => {\n return (\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }))\n );\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n const renderedChild = React.useMemo(() => {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n }\n\n const _Connect = React.memo(ConnectFunction);\n\n // Add a hacky cast to get the right output type\n const Connect = _Connect;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n const _forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n // @ts-ignore\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n\n const forwarded = _forwarded;\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n\n return wrapWithConnect;\n}\n\nexport default connect;","import * as React from 'react';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider({\n store,\n context,\n children,\n serverState,\n stabilityCheck = 'once',\n noopCheck = 'once'\n}) {\n const contextValue = React.useMemo(() => {\n const subscription = createSubscription(store);\n return {\n store,\n subscription,\n getServerState: serverState ? () => serverState : undefined,\n stabilityCheck,\n noopCheck\n };\n }, [store, serverState, stabilityCheck, noopCheck]);\n const previousState = React.useMemo(() => store.getState(), [store]);\n useIsomorphicLayoutEffect(() => {\n const {\n subscription\n } = contextValue;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return () => {\n subscription.tryUnsubscribe();\n subscription.onStateChange = undefined;\n };\n }, [contextValue, previousState]);\n const Context = context || ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\n\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nexport default Provider;","import { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext, createReduxContextHook } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context = ReactReduxContext) {\n const useReduxContext = // @ts-ignore\n context === ReactReduxContext ? useDefaultReduxContext : // @ts-ignore\n createReduxContextHook(context);\n return function useStore() {\n const {\n store\n } = useReduxContext(); // @ts-ignore\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport const useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context = ReactReduxContext) {\n const useStore = // @ts-ignore\n context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n const store = useStore(); // @ts-ignore\n\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n * <div>\r\n * <span>{value}</span>\r\n * <button onClick={increaseCounter}>Increase counter</button>\r\n * </div>\r\n * )\r\n * }\r\n */\n\nexport const useDispatch = /*#__PURE__*/createDispatchHook();","// The primary entry point assumes we're working with standard ReactDOM/RN, but\n// older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x).\n// Because of that, the useSyncExternalStore compat shim is needed.\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch';\nimport { initializeUseSelector } from './hooks/useSelector';\nimport { initializeConnect } from './components/connect';\ninitializeUseSelector(useSyncExternalStoreWithSelector);\ninitializeConnect(useSyncExternalStore); // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };\nexport * from './exports';","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit<NavigationContextObject, \"future\"> {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n flushSync?: boolean;\n viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `<Router>` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_decodePath as decodePath,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/v6/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a `<Router>`.\n *\n * @see https://reactrouter.com/v6/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/v6/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a <Router> component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * `<NavLink>`.\n *\n * @see https://reactrouter.com/v6/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a <Router> component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath<ParamKey, Path>(pattern, decodePath(pathname)),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters<typeof React.useLayoutEffect>[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by `<Link>`s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a <Router> component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/v6/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `<Outlet>` to render child routes.\n *\n * @see https://reactrouter.com/v6/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/v6/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/v6/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `<Outlet>` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/v6/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial<Location> | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a <Router> component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different <Routes> under a <Route>\n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // <Routes>\n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // <Route path=\"blog\" element={<Blog />} />\n // <Route path=\"blog/feed\" element={<BlogFeed />} />\n // </Routes>\n //\n // function Blog() {\n // return (\n // <Routes>\n // <Route path=\"post/:id\" element={<Post />} />\n // </Routes>\n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an <Outlet /> with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n <LocationContext.Provider\n value={{\n location: {\n pathname: \"/\",\n search: \"\",\n hash: \"\",\n state: null,\n key: \"default\",\n ...location,\n },\n navigationType: NavigationType.Pop,\n }}\n >\n {renderedMatches}\n </LocationContext.Provider>\n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n <p>💿 Hey developer 👋</p>\n <p>\n You can provide a way better UX than this when your app throws errors\n by providing your own <code style={codeStyles}>ErrorBoundary</code> or{\" \"}\n <code style={codeStyles}>errorElement</code> prop on your route.\n </p>\n </>\n );\n }\n\n return (\n <>\n <h2>Unexpected Application Error!</h2>\n <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n {stack ? <pre style={preStyles}>{stack}</pre> : null}\n {devInfo}\n </>\n );\n}\n\nconst defaultErrorElement = <DefaultErrorComponent />;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n <RouteContext.Provider value={this.props.routeContext}>\n <RouteErrorContext.Provider\n value={this.state.error}\n children={this.props.component}\n />\n </RouteContext.Provider>\n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch<string, RouteObject>;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n <RouteContext.Provider value={routeContext}>\n {children}\n </RouteContext.Provider>\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (!dataRouterState) {\n return null;\n }\n\n if (dataRouterState.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else if (\n future?.v7_partialHydration &&\n parentMatches.length === 0 &&\n !dataRouterState.initialized &&\n dataRouterState.matches.length > 0\n ) {\n // Don't bail if we're initializing with partial hydration and we have\n // router matches. That means we're actively running `patchRoutesOnNavigation`\n // so we should render down the partial matches to the appropriate\n // `HydrateFallback`. We only do this if `parentMatches` is empty so it\n // only impacts the root matches for `RouterProvider` and no descendant\n // `<Routes>`\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== undefined\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `<Route Component={...}>` in `<Routes>` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = <match.route.Component />;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n <RenderedRoute\n match={match}\n routeContext={{\n outlet,\n matches,\n isDataRoute: dataRouterState != null,\n }}\n children={children}\n />\n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n <RenderErrorBoundary\n location={dataRouterState.location}\n revalidation={dataRouterState.revalidation}\n component={errorElement}\n error={error}\n children={getChildren()}\n routeContext={{ outlet: null, matches, isDataRoute: true }}\n />\n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/v6/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `<Await />` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `<Await />` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback<BlockerFunction>(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type { FutureConfig as RouterFutureConfig } from \"@remix-run/router\";\nimport type { FutureConfig as RenderFutureConfig } from \"./components\";\n\nconst alreadyWarned: { [key: string]: boolean } = {};\n\nexport function warnOnce(key: string, message: string): void {\n if (!alreadyWarned[message]) {\n alreadyWarned[message] = true;\n console.warn(message);\n }\n}\n\nconst logDeprecation = (flag: string, msg: string, link: string) =>\n warnOnce(\n flag,\n `âš ï¸ React Router Future Flag Warning: ${msg}. ` +\n `You can use the \\`${flag}\\` future flag to opt-in early. ` +\n `For more information, see ${link}.`\n );\n\nexport function logV6DeprecationWarnings(\n renderFuture: Partial<RenderFutureConfig> | undefined,\n routerFuture?: Omit<RouterFutureConfig, \"v7_prependBasename\">\n) {\n if (!renderFuture?.v7_startTransition) {\n logDeprecation(\n \"v7_startTransition\",\n \"React Router will begin wrapping state updates in `React.startTransition` in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_starttransition\"\n );\n }\n\n if (\n !renderFuture?.v7_relativeSplatPath &&\n (!routerFuture || !routerFuture.v7_relativeSplatPath)\n ) {\n logDeprecation(\n \"v7_relativeSplatPath\",\n \"Relative route resolution within Splat routes is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath\"\n );\n }\n\n if (routerFuture) {\n if (!routerFuture.v7_fetcherPersist) {\n logDeprecation(\n \"v7_fetcherPersist\",\n \"The persistence behavior of fetchers is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist\"\n );\n }\n\n if (!routerFuture.v7_normalizeFormMethod) {\n logDeprecation(\n \"v7_normalizeFormMethod\",\n \"Casing of `formMethod` fields is being normalized to uppercase in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod\"\n );\n }\n\n if (!routerFuture.v7_partialHydration) {\n logDeprecation(\n \"v7_partialHydration\",\n \"`RouterProvider` hydration behavior is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_partialhydration\"\n );\n }\n\n if (!routerFuture.v7_skipActionErrorRevalidation) {\n logDeprecation(\n \"v7_skipActionErrorRevalidation\",\n \"The revalidation behavior after 4xx/5xx `action` responses is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation\"\n );\n }\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\nimport { logV6DeprecationWarnings } from \"./deprecations\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial<Pick<FutureConfig, \"v7_startTransition\">>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback<RouterSubscriber>(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`<RouterProvider fallbackElement>` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n React.useEffect(\n () => logV6DeprecationWarnings(future, router.future),\n [router, future]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a <script> here\n // containing the hydrated server-side staticContext (from StaticRouterProvider).\n // useId relies on the component tree structure to generate deterministic id's\n // so we need to ensure it remains the same on the client even though\n // we don't need the <script> tag\n return (\n <>\n <DataRouterContext.Provider value={dataRouterContext}>\n <DataRouterStateContext.Provider value={state}>\n <Router\n basename={basename}\n location={state.location}\n navigationType={state.historyAction}\n navigator={navigator}\n future={{\n v7_relativeSplatPath: router.future.v7_relativeSplatPath,\n }}\n >\n {state.initialized || router.future.v7_partialHydration ? (\n <DataRoutes\n routes={router.routes}\n future={router.future}\n state={state}\n />\n ) : (\n fallbackElement\n )}\n </Router>\n </DataRouterStateContext.Provider>\n </DataRouterContext.Provider>\n {null}\n </>\n );\n}\n\nfunction DataRoutes({\n routes,\n future,\n state,\n}: {\n routes: DataRouteObject[];\n future: RemixRouter[\"future\"];\n state: RouterState;\n}): React.ReactElement | null {\n return useRoutesImpl(routes, undefined, state, future);\n}\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n future?: Partial<FutureConfig>;\n}\n\n/**\n * A `<Router>` that stores all entries in memory.\n *\n * @see https://reactrouter.com/v6/router-components/memory-router\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n future,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef<MemoryHistory>();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({\n initialEntries,\n initialIndex,\n v5Compat: true,\n });\n }\n\n let history = historyRef.current;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location,\n });\n let { v7_startTransition } = future || {};\n let setState = React.useCallback(\n (newState: { action: NavigationType; location: Location }) => {\n v7_startTransition && startTransitionImpl\n ? startTransitionImpl(() => setStateImpl(newState))\n : setStateImpl(newState);\n },\n [setStateImpl, v7_startTransition]\n );\n\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n React.useEffect(() => logV6DeprecationWarnings(future), [future]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n future={future}\n />\n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/v6/components/navigate\n */\nexport function Navigate({\n to,\n replace,\n state,\n relative,\n}: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n `<Navigate> may be used only in the context of a <Router> component.`\n );\n\n let { future, static: isStatic } = React.useContext(NavigationContext);\n\n warning(\n !isStatic,\n `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n `This is a no-op, but you should modify your code so the <Navigate> is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let navigate = useNavigate();\n\n // Resolve the path outside of the effect so that when effects run twice in\n // StrictMode they navigate to the same place\n let path = resolveTo(\n to,\n getResolveToMatches(matches, future.v7_relativeSplatPath),\n locationPathname,\n relative === \"path\"\n );\n let jsonPath = JSON.stringify(path);\n\n React.useEffect(\n () => navigate(JSON.parse(jsonPath), { replace, state, relative }),\n [navigate, jsonPath, relative, replace, state]\n );\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/v6/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n path?: NonIndexRouteObject[\"path\"];\n id?: NonIndexRouteObject[\"id\"];\n lazy?: LazyRouteFunction<NonIndexRouteObject>;\n loader?: NonIndexRouteObject[\"loader\"];\n action?: NonIndexRouteObject[\"action\"];\n hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n handle?: NonIndexRouteObject[\"handle\"];\n index?: false;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n path?: IndexRouteObject[\"path\"];\n id?: IndexRouteObject[\"id\"];\n lazy?: LazyRouteFunction<IndexRouteObject>;\n loader?: IndexRouteObject[\"loader\"];\n action?: IndexRouteObject[\"action\"];\n hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n handle?: IndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/v6/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n invariant(\n false,\n `A <Route> is only ever to be used as the child of <Routes> element, ` +\n `never rendered directly. Please wrap your <Route> in a <Routes>.`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial<Location> | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n future?: Partial<Pick<FutureConfig, \"v7_relativeSplatPath\">>;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a `<Router>` directly. Instead, you'll render a\n * router that is more specific to your environment such as a `<BrowserRouter>`\n * in web browsers or a `<StaticRouter>` for server rendering.\n *\n * @see https://reactrouter.com/v6/router-components/router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n future,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a <Router> inside another <Router>.` +\n ` You should never have more than one in your app.`\n );\n\n // Preserve trailing slashes on basename, so we can let the user control\n // the enforcement of trailing slashes throughout the app\n let basename = basenameProp.replace(/^\\/*/, \"/\");\n let navigationContext = React.useMemo(\n () => ({\n basename,\n navigator,\n static: staticProp,\n future: {\n v7_relativeSplatPath: false,\n ...future,\n },\n }),\n [basename, future, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let locationContext = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n location: {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n },\n navigationType,\n };\n }, [basename, pathname, search, hash, state, key, navigationType]);\n\n warning(\n locationContext != null,\n `<Router basename=\"${basename}\"> is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the <Router> won't render anything.`\n );\n\n if (locationContext == null) {\n return null;\n }\n\n return (\n <NavigationContext.Provider value={navigationContext}>\n <LocationContext.Provider children={children} value={locationContext} />\n </NavigationContext.Provider>\n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of `<Route>` elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/v6/components/routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\nexport interface AwaitResolveRenderFunction {\n (data: Awaited<any>): React.ReactNode;\n}\n\nexport interface AwaitProps {\n children: React.ReactNode | AwaitResolveRenderFunction;\n errorElement?: React.ReactNode;\n resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n return (\n <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n <ResolveAwait>{children}</ResolveAwait>\n </AwaitErrorBoundary>\n );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n errorElement?: React.ReactNode;\n resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n error: any;\n};\n\nenum AwaitRenderStatus {\n pending,\n success,\n error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n AwaitErrorBoundaryProps,\n AwaitErrorBoundaryState\n> {\n constructor(props: AwaitErrorBoundaryProps) {\n super(props);\n this.state = { error: null };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"<Await> caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n let { children, errorElement, resolve } = this.props;\n\n let promise: TrackedPromise | null = null;\n let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n if (!(resolve instanceof Promise)) {\n // Didn't get a promise - provide as a resolved promise\n status = AwaitRenderStatus.success;\n promise = Promise.resolve();\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_data\", { get: () => resolve });\n } else if (this.state.error) {\n // Caught a render error, provide it as a rejected promise\n status = AwaitRenderStatus.error;\n let renderError = this.state.error;\n promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_error\", { get: () => renderError });\n } else if ((resolve as TrackedPromise)._tracked) {\n // Already tracked promise - check contents\n promise = resolve;\n status =\n \"_error\" in promise\n ? AwaitRenderStatus.error\n : \"_data\" in promise\n ? AwaitRenderStatus.success\n : AwaitRenderStatus.pending;\n } else {\n // Raw (untracked) promise - track it\n status = AwaitRenderStatus.pending;\n Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n promise = resolve.then(\n (data: any) =>\n Object.defineProperty(resolve, \"_data\", { get: () => data }),\n (error: any) =>\n Object.defineProperty(resolve, \"_error\", { get: () => error })\n );\n }\n\n if (\n status === AwaitRenderStatus.error &&\n promise._error instanceof AbortedDeferredError\n ) {\n // Freeze the UI by throwing a never resolved promise\n throw neverSettledPromise;\n }\n\n if (status === AwaitRenderStatus.error && !errorElement) {\n // No errorElement, throw to the nearest route-level error boundary\n throw promise._error;\n }\n\n if (status === AwaitRenderStatus.error) {\n // Render via our errorElement\n return <AwaitContext.Provider value={promise} children={errorElement} />;\n }\n\n if (status === AwaitRenderStatus.success) {\n // Render children with resolved value\n return <AwaitContext.Provider value={promise} children={children} />;\n }\n\n // Throw to the suspense boundary\n throw promise;\n }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`\n */\nfunction ResolveAwait({\n children,\n}: {\n children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n let data = useAsyncValue();\n let toRender = typeof children === \"function\" ? children(data) : children;\n return <>{toRender}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/v6/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode,\n parentPath: number[] = []\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element, index) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n let treePath = [...parentPath, index];\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children, treePath)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n );\n\n invariant(\n !element.props.index || !element.props.children,\n \"An index route cannot have child routes.\"\n );\n\n let route: RouteObject = {\n id: element.props.id || treePath.join(\"-\"),\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n Component: element.props.Component,\n index: element.props.index,\n path: element.props.path,\n loader: element.props.loader,\n action: element.props.action,\n errorElement: element.props.errorElement,\n ErrorBoundary: element.props.ErrorBoundary,\n hasErrorBoundary:\n element.props.ErrorBoundary != null ||\n element.props.errorElement != null,\n shouldRevalidate: element.props.shouldRevalidate,\n handle: element.props.handle,\n lazy: element.props.lazy,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(\n element.props.children,\n treePath\n );\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","import React from 'react';\nexport default React.createContext(null);","export { useWebSocket as default } from './lib/use-websocket';\n\nexport { SendMessage, Options } from './lib/types';\n\nexport { useSocketIO } from './lib/use-socket-io';\n\nexport { ReadyState } from './lib/constants';\n\nexport { useEventSource } from './lib/use-event-source';\n\nexport { resetGlobalState } from './lib/util';\n","import { MutableRefObject } from 'react';\nimport { setUpSocketIOPing } from './socket-io';\nimport { heartbeat } from './heartbeat';\nimport {\n DEFAULT_RECONNECT_LIMIT,\n DEFAULT_RECONNECT_INTERVAL_MS,\n ReadyState,\n isEventSourceSupported,\n} from './constants';\nimport { Options, SendMessage, WebSocketLike } from './types';\nimport { assertIsWebSocket } from './util';\n\nexport interface Setters {\n setLastMessage: (message: WebSocketEventMap['message']) => void;\n setReadyState: (readyState: ReadyState) => void;\n}\n\nconst bindMessageHandler = (\n webSocketInstance: WebSocketLike,\n optionsRef: MutableRefObject<Options>,\n setLastMessage: Setters['setLastMessage'],\n lastMessageTime: MutableRefObject<number>,\n) => {\n webSocketInstance.onmessage = (message: WebSocketEventMap['message']) => {\n optionsRef.current.onMessage && optionsRef.current.onMessage(message);\n\n if (typeof lastMessageTime?.current === 'number') {\n lastMessageTime.current = Date.now();\n }\n\n if (typeof optionsRef.current.filter === 'function' && optionsRef.current.filter(message) !== true) {\n return;\n }\n if (\n optionsRef.current.heartbeat &&\n typeof optionsRef.current.heartbeat !== \"boolean\" &&\n optionsRef.current.heartbeat?.returnMessage === message.data\n ) {\n return;\n }\n\n setLastMessage(message);\n };\n};\n\nconst bindOpenHandler = (\n webSocketInstance: WebSocketLike,\n optionsRef: MutableRefObject<Options>,\n setReadyState: Setters['setReadyState'],\n reconnectCount: MutableRefObject<number>,\n lastMessageTime: MutableRefObject<number>,\n) => {\n webSocketInstance.onopen = (event: WebSocketEventMap['open']) => {\n optionsRef.current.onOpen && optionsRef.current.onOpen(event);\n reconnectCount.current = 0;\n setReadyState(ReadyState.OPEN);\n //start heart beat here\n if (optionsRef.current.heartbeat && webSocketInstance instanceof WebSocket) {\n const heartbeatOptions =\n typeof optionsRef.current.heartbeat === \"boolean\"\n ? undefined\n : optionsRef.current.heartbeat;\n lastMessageTime.current = Date.now();\n heartbeat(webSocketInstance, lastMessageTime, heartbeatOptions);\n }\n\n };\n};\n\nconst bindCloseHandler = (\n webSocketInstance: WebSocketLike,\n optionsRef: MutableRefObject<Options>,\n setReadyState: Setters['setReadyState'],\n reconnect: () => void,\n reconnectCount: MutableRefObject<number>,\n) => {\n if (isEventSourceSupported && webSocketInstance instanceof EventSource) {\n return () => { };\n }\n assertIsWebSocket(webSocketInstance, optionsRef.current.skipAssert);\n let reconnectTimeout: number;\n\n webSocketInstance.onclose = (event: WebSocketEventMap['close']) => {\n optionsRef.current.onClose && optionsRef.current.onClose(event);\n setReadyState(ReadyState.CLOSED);\n if (optionsRef.current.shouldReconnect && optionsRef.current.shouldReconnect(event)) {\n const reconnectAttempts = optionsRef.current.reconnectAttempts ?? DEFAULT_RECONNECT_LIMIT;\n if (reconnectCount.current < reconnectAttempts) {\n const nextReconnectInterval = typeof optionsRef.current.reconnectInterval === 'function' ?\n optionsRef.current.reconnectInterval(reconnectCount.current) :\n optionsRef.current.reconnectInterval;\n\n reconnectTimeout = window.setTimeout(() => {\n reconnectCount.current++;\n reconnect();\n }, nextReconnectInterval ?? DEFAULT_RECONNECT_INTERVAL_MS);\n } else {\n optionsRef.current.onReconnectStop && optionsRef.current.onReconnectStop(reconnectAttempts);\n console.warn(`Max reconnect attempts of ${reconnectAttempts} exceeded`);\n }\n }\n };\n\n return () => reconnectTimeout && window.clearTimeout(reconnectTimeout);\n};\n\nconst bindErrorHandler = (\n webSocketInstance: WebSocketLike,\n optionsRef: MutableRefObject<Options>,\n setReadyState: Setters['setReadyState'],\n reconnect: () => void,\n reconnectCount: MutableRefObject<number>,\n) => {\n let reconnectTimeout: number;\n\n webSocketInstance.onerror = (error: WebSocketEventMap['error']) => {\n optionsRef.current.onError && optionsRef.current.onError(error);\n if (isEventSourceSupported && webSocketInstance instanceof EventSource) {\n optionsRef.current.onClose && optionsRef.current.onClose({\n ...error,\n code: 1006,\n reason: `An error occurred with the EventSource: ${error}`,\n wasClean: false,\n });\n\n setReadyState(ReadyState.CLOSED);\n webSocketInstance.close();\n }\n\n if (optionsRef.current.retryOnError) {\n if (reconnectCount.current < (optionsRef.current.reconnectAttempts ?? DEFAULT_RECONNECT_LIMIT)) {\n const nextReconnectInterval = typeof optionsRef.current.reconnectInterval === 'function' ?\n optionsRef.current.reconnectInterval(reconnectCount.current) :\n optionsRef.current.reconnectInterval;\n\n reconnectTimeout = window.setTimeout(() => {\n reconnectCount.current++;\n reconnect();\n }, nextReconnectInterval ?? DEFAULT_RECONNECT_INTERVAL_MS);\n } else {\n optionsRef.current.onReconnectStop && optionsRef.current.onReconnectStop(optionsRef.current.reconnectAttempts as number);\n console.warn(`Max reconnect attempts of ${optionsRef.current.reconnectAttempts} exceeded`);\n }\n }\n };\n\n return () => reconnectTimeout && window.clearTimeout(reconnectTimeout);\n};\n\nexport const attachListeners = (\n webSocketInstance: WebSocketLike,\n setters: Setters,\n optionsRef: MutableRefObject<Options>,\n reconnect: () => void,\n reconnectCount: MutableRefObject<number>,\n lastMessageTime: MutableRefObject<number>,\n sendMessage: SendMessage\n): (() => void) => {\n const { setLastMessage, setReadyState } = setters;\n\n let interval: number;\n let cancelReconnectOnClose: () => void;\n let cancelReconnectOnError: () => void;\n\n if (optionsRef.current.fromSocketIO) {\n interval = setUpSocketIOPing(sendMessage);\n }\n\n bindMessageHandler(\n webSocketInstance,\n optionsRef,\n setLastMessage,\n lastMessageTime\n );\n\n bindOpenHandler(\n webSocketInstance,\n optionsRef,\n setReadyState,\n reconnectCount,\n lastMessageTime,\n );\n\n cancelReconnectOnClose = bindCloseHandler(\n webSocketInstance,\n optionsRef,\n setReadyState,\n reconnect,\n reconnectCount,\n );\n\n cancelReconnectOnError = bindErrorHandler(\n webSocketInstance,\n optionsRef,\n setReadyState,\n reconnect,\n reconnectCount,\n );\n\n return () => {\n setReadyState(ReadyState.CLOSING);\n cancelReconnectOnClose();\n cancelReconnectOnError();\n webSocketInstance.close();\n if (interval) clearInterval(interval);\n };\n};\n","import { sharedWebSockets } from './globals';\nimport { DEFAULT_RECONNECT_LIMIT, DEFAULT_RECONNECT_INTERVAL_MS, ReadyState, isEventSourceSupported } from './constants';\nimport { getSubscribers } from './manage-subscribers';\nimport { MutableRefObject } from 'react';\nimport { HeartbeatOptions, Options, SendMessage, WebSocketLike } from './types';\nimport { setUpSocketIOPing } from './socket-io';\nimport { heartbeat } from './heartbeat';\n\nconst bindMessageHandler = (\n webSocketInstance: WebSocketLike,\n url: string,\n heartbeatOptions?: boolean | HeartbeatOptions\n) => {\n webSocketInstance.onmessage = (message: WebSocketEventMap['message']) => {\n getSubscribers(url).forEach(subscriber => {\n if (subscriber.optionsRef.current.onMessage) {\n subscriber.optionsRef.current.onMessage(message);\n }\n\n if (typeof subscriber?.lastMessageTime?.current === 'number') {\n subscriber.lastMessageTime.current = Date.now();\n }\n\n if (\n typeof subscriber.optionsRef.current.filter === 'function' &&\n subscriber.optionsRef.current.filter(message) !== true\n ) {\n return;\n }\n\n if (\n heartbeatOptions &&\n typeof heartbeatOptions !== \"boolean\" &&\n heartbeatOptions?.returnMessage === message.data\n )\n return;\n\n subscriber.setLastMessage(message);\n });\n };\n};\n\nconst bindOpenHandler = (\n webSocketInstance: WebSocketLike,\n url: string,\n heartbeatOptions?: boolean | HeartbeatOptions\n) => {\n webSocketInstance.onopen = (event: WebSocketEventMap['open']) => {\n getSubscribers(url).forEach(subscriber => {\n subscriber.reconnectCount.current = 0;\n if (subscriber.optionsRef.current.onOpen) {\n subscriber.optionsRef.current.onOpen(event);\n }\n\n subscriber.setReadyState(ReadyState.OPEN);\n\n let onMessageCb: () => void;\n\n if (heartbeatOptions && webSocketInstance instanceof WebSocket) {\n subscriber.lastMessageTime.current = Date.now();\n heartbeat(webSocketInstance, subscriber.lastMessageTime, typeof heartbeatOptions === 'boolean' ? undefined : heartbeatOptions,);\n }\n });\n };\n};\n\nconst bindCloseHandler = (\n webSocketInstance: WebSocketLike,\n url: string,\n) => {\n if (webSocketInstance instanceof WebSocket) {\n webSocketInstance.onclose = (event: WebSocketEventMap['close']) => {\n getSubscribers(url).forEach(subscriber => {\n if (subscriber.optionsRef.current.onClose) {\n subscriber.optionsRef.current.onClose(event);\n }\n\n subscriber.setReadyState(ReadyState.CLOSED);\n });\n\n delete sharedWebSockets[url];\n\n getSubscribers(url).forEach(subscriber => {\n if (\n subscriber.optionsRef.current.shouldReconnect &&\n subscriber.optionsRef.current.shouldReconnect(event)\n ) {\n const reconnectAttempts = subscriber.optionsRef.current.reconnectAttempts ?? DEFAULT_RECONNECT_LIMIT;\n if (subscriber.reconnectCount.current < reconnectAttempts) {\n const nextReconnectInterval = typeof subscriber.optionsRef.current.reconnectInterval === 'function' ?\n subscriber.optionsRef.current.reconnectInterval(subscriber.reconnectCount.current) :\n subscriber.optionsRef.current.reconnectInterval;\n\n setTimeout(() => {\n subscriber.reconnectCount.current++;\n subscriber.reconnect.current();\n }, nextReconnectInterval ?? DEFAULT_RECONNECT_INTERVAL_MS);\n } else {\n subscriber.optionsRef.current.onReconnectStop && subscriber.optionsRef.current.onReconnectStop(subscriber.optionsRef.current.reconnectAttempts as number);\n console.warn(`Max reconnect attempts of ${reconnectAttempts} exceeded`);\n }\n }\n });\n };\n }\n};\n\nconst bindErrorHandler = (\n webSocketInstance: WebSocketLike,\n url: string,\n) => {\n webSocketInstance.onerror = (error: WebSocketEventMap['error']) => {\n getSubscribers(url).forEach(subscriber => {\n if (subscriber.optionsRef.current.onError) {\n subscriber.optionsRef.current.onError(error);\n }\n if (isEventSourceSupported && webSocketInstance instanceof EventSource) {\n subscriber.optionsRef.current.onClose && subscriber.optionsRef.current.onClose({\n ...error,\n code: 1006,\n reason: `An error occurred with the EventSource: ${error}`,\n wasClean: false,\n });\n\n subscriber.setReadyState(ReadyState.CLOSED);\n }\n });\n if (isEventSourceSupported && webSocketInstance instanceof EventSource) {\n webSocketInstance.close();\n }\n };\n};\n\nexport const attachSharedListeners = (\n webSocketInstance: WebSocketLike,\n url: string,\n optionsRef: MutableRefObject<Options>,\n sendMessage: SendMessage,\n) => {\n let interval: number;\n\n if (optionsRef.current.fromSocketIO) {\n interval = setUpSocketIOPing(sendMessage);\n }\n\n bindMessageHandler(webSocketInstance, url, optionsRef.current.heartbeat);\n bindCloseHandler(webSocketInstance, url);\n bindOpenHandler(webSocketInstance, url, optionsRef.current.heartbeat);\n bindErrorHandler(webSocketInstance, url);\n\n return () => {\n if (interval) clearInterval(interval);\n };\n};\n","import { EventSourceEventHandlers, EventSourceOptions } from \"./types\";\n\nconst MILLISECONDS = 1;\nconst SECONDS = 1000 * MILLISECONDS;\n\nexport const DEFAULT_OPTIONS = {};\nexport const EMPTY_EVENT_HANDLERS: EventSourceEventHandlers = {};\nexport const DEFAULT_EVENT_SOURCE_OPTIONS: EventSourceOptions = {\n withCredentials: false,\n events: EMPTY_EVENT_HANDLERS,\n};\nexport const SOCKET_IO_PING_INTERVAL = 25 * SECONDS;\nexport const SOCKET_IO_PATH = '/socket.io/?EIO=3&transport=websocket';\nexport const SOCKET_IO_PING_CODE = '2';\nexport const DEFAULT_RECONNECT_LIMIT = 20;\nexport const DEFAULT_RECONNECT_INTERVAL_MS = 5000;\nexport const UNPARSABLE_JSON_OBJECT = {};\nexport const DEFAULT_HEARTBEAT = {\n message: 'ping',\n timeout: 60000,\n interval: 25000,\n};\n\nexport enum ReadyState {\n UNINSTANTIATED = -1,\n CONNECTING = 0,\n OPEN = 1,\n CLOSING = 2,\n CLOSED = 3,\n}\n\nconst eventSourceSupported = () => {\n try {\n return 'EventSource' in globalThis;\n } catch (e) {\n return false;\n }\n}\n\nexport const isReactNative = typeof navigator !== 'undefined' && navigator.product === 'ReactNative';\nexport const isEventSourceSupported = !isReactNative && eventSourceSupported();\n","import { MutableRefObject } from 'react';\nimport { sharedWebSockets } from './globals';\nimport { Options, SendMessage, Subscriber, WebSocketLike } from './types';\nimport { isEventSourceSupported, ReadyState, isReactNative } from './constants';\nimport { attachListeners } from './attach-listener';\nimport { attachSharedListeners } from './attach-shared-listeners';\nimport { addSubscriber, removeSubscriber, hasSubscribers } from './manage-subscribers';\n\n//TODO ensure that all onClose callbacks are called\n\nconst cleanSubscribers = (\n url: string,\n subscriber: Subscriber,\n optionsRef: MutableRefObject<Options>,\n setReadyState: (readyState: ReadyState) => void,\n clearSocketIoPingInterval: (() => void) | null,\n) => {\n return () => {\n removeSubscriber(url, subscriber);\n if (!hasSubscribers(url)) {\n try {\n const socketLike = sharedWebSockets[url];\n if (socketLike instanceof WebSocket) {\n socketLike.onclose = (event: WebSocketEventMap['close']) => {\n if (optionsRef.current.onClose) {\n optionsRef.current.onClose(event);\n }\n setReadyState(ReadyState.CLOSED);\n };\n }\n socketLike.close();\n } catch (e) {\n\n }\n if (clearSocketIoPingInterval) clearSocketIoPingInterval();\n\n delete sharedWebSockets[url];\n }\n }\n};\n\nexport const createOrJoinSocket = (\n webSocketRef: MutableRefObject<WebSocketLike | null>,\n url: string,\n setReadyState: (readyState: ReadyState) => void,\n optionsRef: MutableRefObject<Options>,\n setLastMessage: (message: WebSocketEventMap['message']) => void,\n startRef: MutableRefObject<() => void>,\n reconnectCount: MutableRefObject<number>,\n lastMessageTime: MutableRefObject<number>,\n sendMessage: SendMessage,\n): (() => void) => {\n if (!isEventSourceSupported && optionsRef.current.eventSourceOptions) {\n if (isReactNative) {\n throw new Error('EventSource is not supported in ReactNative');\n } else {\n throw new Error('EventSource is not supported');\n }\n }\n\n if (optionsRef.current.share) {\n let clearSocketIoPingInterval: ((() => void) | null) = null;\n if (sharedWebSockets[url] === undefined) {\n sharedWebSockets[url] = optionsRef.current.eventSourceOptions ?\n new EventSource(url, optionsRef.current.eventSourceOptions) :\n new WebSocket(url, optionsRef.current.protocols);\n webSocketRef.current = sharedWebSockets[url];\n setReadyState(ReadyState.CONNECTING);\n clearSocketIoPingInterval = attachSharedListeners(\n sharedWebSockets[url],\n url,\n optionsRef,\n sendMessage,\n );\n } else {\n webSocketRef.current = sharedWebSockets[url];\n setReadyState(sharedWebSockets[url].readyState);\n }\n\n const subscriber: Subscriber = {\n setLastMessage,\n setReadyState,\n optionsRef,\n reconnectCount,\n lastMessageTime,\n reconnect: startRef,\n };\n\n addSubscriber(url, subscriber);\n\n return cleanSubscribers(\n url,\n subscriber,\n optionsRef,\n setReadyState,\n clearSocketIoPingInterval,\n );\n } else {\n webSocketRef.current = optionsRef.current.eventSourceOptions ?\n new EventSource(url, optionsRef.current.eventSourceOptions) :\n new WebSocket(url, optionsRef.current.protocols);\n setReadyState(ReadyState.CONNECTING);\n if (!webSocketRef.current) {\n throw new Error('WebSocket failed to be created');\n }\n\n return attachListeners(\n webSocketRef.current,\n {\n setLastMessage,\n setReadyState\n },\n optionsRef,\n startRef.current,\n reconnectCount,\n lastMessageTime,\n sendMessage,\n );\n }\n};\n","import { MutableRefObject } from 'react';\nimport { parseSocketIOUrl, appendQueryParams } from './socket-io';\nimport { Options } from './types';\nimport { DEFAULT_RECONNECT_INTERVAL_MS, DEFAULT_RECONNECT_LIMIT } from './constants';\n\nconst waitFor = (duration: number) => new Promise(resolve => window.setTimeout(resolve, duration));\n\nexport const getUrl = async (\n url: string | (() => string | Promise<string>),\n optionsRef: MutableRefObject<Options>,\n retriedAttempts: number = 0,\n): Promise<string | null> => {\n let convertedUrl: string;\n\n if (typeof url === 'function') {\n try {\n convertedUrl = await url();\n } catch (e) {\n if (\n optionsRef.current.retryOnError\n ) {\n const reconnectLimit = optionsRef.current.reconnectAttempts ?? DEFAULT_RECONNECT_LIMIT;\n if (retriedAttempts < reconnectLimit) {\n const nextReconnectInterval = typeof optionsRef.current.reconnectInterval === 'function' ?\n optionsRef.current.reconnectInterval(retriedAttempts) :\n optionsRef.current.reconnectInterval;\n \n await waitFor(nextReconnectInterval ?? DEFAULT_RECONNECT_INTERVAL_MS);\n return getUrl(url, optionsRef, retriedAttempts + 1);\n } else {\n optionsRef.current.onReconnectStop?.(retriedAttempts);\n return null;\n }\n } else {\n return null;\n }\n }\n } else {\n convertedUrl = url;\n }\n\n const parsedUrl = optionsRef.current.fromSocketIO ?\n parseSocketIOUrl(convertedUrl) :\n convertedUrl;\n\n const parsedWithQueryParams = optionsRef.current.queryParams ?\n appendQueryParams(\n parsedUrl,\n optionsRef.current.queryParams\n ) :\n parsedUrl;\n\n return parsedWithQueryParams;\n};\n","import { WebSocketLike } from \"./types\";\n\nexport interface SharedWebSockets {\n [url: string]: WebSocketLike;\n}\n\nexport const sharedWebSockets: SharedWebSockets = {};\n\nexport const resetWebSockets = (url?: string): void => {\n if (url && sharedWebSockets.hasOwnProperty(url)) {\n delete sharedWebSockets[url];\n } else {\n for (let url in sharedWebSockets){\n if (sharedWebSockets.hasOwnProperty(url)){\n delete sharedWebSockets[url];\n }\n }\n }\n}\n","import { MutableRefObject } from \"react\";\nimport { DEFAULT_HEARTBEAT } from \"./constants\";\nimport { HeartbeatOptions } from \"./types\";\n\nexport function heartbeat(ws: WebSocket, lastMessageTime: MutableRefObject<number>, options?: HeartbeatOptions): () => void {\n const {\n interval = DEFAULT_HEARTBEAT.interval,\n timeout = DEFAULT_HEARTBEAT.timeout,\n message = DEFAULT_HEARTBEAT.message,\n } = options || {};\n\n const heartbeatInterval = setInterval(() => {\n if (lastMessageTime.current + timeout <= Date.now()) {\n console.warn(`Heartbeat timed out, closing connection, last message was seen ${Date.now() - lastMessageTime.current}ms ago`);\n ws.close();\n } else {\n if (lastMessageTime.current + interval <= Date.now()) {\n try {\n if (typeof message === 'function') {\n ws.send(message());\n } else {\n ws.send(message);\n }\n } catch (err: unknown) {\n console.error(`Heartbeat failed, closing connection`, err instanceof Error ? err.message : err);\n ws.close();\n }\n\n }\n }\n }, interval);\n\n ws.addEventListener(\"close\", () => {\n clearInterval(heartbeatInterval);\n });\n\n\n return () => { };\n}\n","import { Subscriber } from './types';\n\nexport type Subscribers = {\n [url: string]: Set<Subscriber>,\n}\n \nconst subscribers: Subscribers = {};\nconst EMPTY_LIST: Subscriber[] = [];\n\nexport const getSubscribers = (url: string): Subscriber[] => {\n if (hasSubscribers(url)) {\n return Array.from(subscribers[url]);\n }\n return EMPTY_LIST;\n};\n\nexport const hasSubscribers = (url: string): boolean => {\n return subscribers[url]?.size > 0;\n};\n\nexport const addSubscriber = (url: string, subscriber: Subscriber): void => {\n subscribers[url] = subscribers[url] || new Set<Subscriber>();\n subscribers[url].add(subscriber);\n};\n\nexport const removeSubscriber = (url: string, subscriber: Subscriber): void => {\n subscribers[url].delete(subscriber);\n};\n\nexport const resetSubscribers = (url?: string): void => {\n if (url && subscribers.hasOwnProperty(url)) {\n delete subscribers[url];\n } else {\n for (let url in subscribers){\n if (subscribers.hasOwnProperty(url)){\n delete subscribers[url];\n }\n }\n }\n}\n","import { MutableRefObject } from 'react';\n\ntype IfEquals<X, Y, A=X, B=never> =\n (<T>() => T extends X ? 1 : 2) extends\n (<T>() => T extends Y ? 1 : 2) ? A : B;\n\ntype WritableKeys<T> = {\n [P in keyof T]-?: IfEquals<{ [Q in P]: T[P] }, { -readonly [Q in P]: T[P] }, P>\n}[keyof T];\n\nexport const websocketWrapper = (\n webSocket: WebSocket,\n start: MutableRefObject<() => void>,\n): WebSocket => {\n\n return new Proxy<WebSocket>(webSocket, {\n get: (obj, key: keyof WebSocket) => {\n const val = obj[key];\n if ((key as any) === 'reconnect') return start;\n if (typeof val === 'function') {\n console.error('Calling methods directly on the websocket is not supported at this moment. You must use the methods returned by useWebSocket.');\n \n //Prevent error thrown by invoking a non-function\n return () => {};\n } else {\n return val;\n }\n },\n set: <T extends WritableKeys<WebSocket>>(obj: WebSocket, key: T, val: WebSocket[T]) => {\n if (/^on/.test(key)) {\n console.warn('The websocket\\'s event handlers should be defined through the options object passed into useWebSocket.')\n return false;\n } else {\n obj[key] = val;\n return true;\n }\n },\n });\n};\n\nexport default websocketWrapper;\n","import { SOCKET_IO_PING_INTERVAL, SOCKET_IO_PATH, SOCKET_IO_PING_CODE } from './constants';\nimport { QueryParams, SendMessage } from './types';\n\nexport const parseSocketIOUrl = (url: string) => {\n if (url) {\n const isSecure = /^https|wss/.test(url);\n const strippedProtocol = url.replace(/^(https?|wss?)(:\\/\\/)?/, '');\n const removedFinalBackSlack = strippedProtocol.replace(/\\/$/, '');\n const protocol = isSecure ? 'wss' : 'ws';\n\n return `${protocol}://${removedFinalBackSlack}${SOCKET_IO_PATH}`;\n } else if (url === '') {\n const isSecure = /^https/.test(window.location.protocol);\n const protocol = isSecure ? 'wss' : 'ws';\n const port = window.location.port ? `:${window.location.port}` : '';\n\n return `${protocol}://${window.location.hostname}${port}${SOCKET_IO_PATH}`;\n }\n\n return url;\n};\n\nexport const appendQueryParams = (url: string, params: QueryParams = {}): string => {\n const hasParamsRegex = /\\?([\\w]+=[\\w]+)/;\n const alreadyHasParams = hasParamsRegex.test(url);\n\n const stringified = `${Object.entries(params).reduce((next, [key, value]) => {\n return next + `${key}=${value}&`;\n }, '').slice(0, -1)}`;\n\n return `${url}${alreadyHasParams ? '&' : '?'}${stringified}`;\n};\n\nexport const setUpSocketIOPing = (sendMessage: SendMessage, interval = SOCKET_IO_PING_INTERVAL) => {\n const ping = () => sendMessage(SOCKET_IO_PING_CODE);\n\n return window.setInterval(ping, interval);\n};\n","import { useEffect, useRef } from 'react'\nimport { useWebSocket } from './use-websocket'\nimport { DEFAULT_EVENT_SOURCE_OPTIONS, EMPTY_EVENT_HANDLERS } from './constants'\nimport { EventSourceOptions, Options, EventSourceHook, EventSourceEventHandlers } from './types';\n\nexport const useEventSource = (\n url: string | (() => string | Promise<string>) | null,\n { withCredentials, events, ...options }: EventSourceOptions = DEFAULT_EVENT_SOURCE_OPTIONS,\n connect: boolean = true,\n): EventSourceHook => {\n const optionsWithEventSource: Options = {\n ...options,\n eventSourceOptions: {\n withCredentials,\n }\n };\n const eventsRef = useRef<EventSourceEventHandlers>(EMPTY_EVENT_HANDLERS);\n if (events) {\n eventsRef.current = events\n }\n\n const {\n lastMessage,\n readyState,\n getWebSocket,\n } = useWebSocket(\n url,\n optionsWithEventSource,\n connect,\n );\n\n useEffect(() => {\n if (lastMessage?.type) {\n Object.entries(eventsRef.current).forEach(([type, handler]) => {\n if (type === lastMessage.type) {\n handler(lastMessage);\n }\n });\n }\n }, [lastMessage]);\n\n return {\n lastEvent: lastMessage,\n readyState,\n getEventSource: getWebSocket,\n };\n}\n","import { useMemo } from 'react'\nimport { useWebSocket } from './use-websocket'\nimport { DEFAULT_OPTIONS } from './constants'\nimport { Options, WebSocketHook } from './types';\n\nexport interface SocketIOMessageData<T = unknown> {\n type: string,\n payload: T | null,\n}\n\nconst emptyEvent: SocketIOMessageData<null> = {\n type: 'empty',\n payload: null,\n}\n\nconst getSocketData = <T = unknown>(event: WebSocketEventMap['message'] | null): SocketIOMessageData<T | null> => {\n if (!event || !event.data) {\n return emptyEvent\n }\n\n const match = event.data.match(/\\[.*]/)\n\n if (!match) {\n return emptyEvent\n }\n\n const data = JSON.parse(match)\n\n if (!Array.isArray(data) || !data[1]) {\n return emptyEvent\n }\n\n return {\n type: data[0],\n payload: data[1],\n }\n}\n\nexport const useSocketIO = <T = unknown>(\n url: string | (() => string | Promise<string>) | null,\n options: Options = DEFAULT_OPTIONS,\n connect: boolean = true,\n): WebSocketHook<SocketIOMessageData<T | null>, SocketIOMessageData<T | null>> => {\n const optionsWithSocketIO = useMemo(() => ({\n ...options,\n fromSocketIO: true,\n }), [])\n\n const {\n sendMessage,\n sendJsonMessage,\n lastMessage,\n readyState,\n getWebSocket,\n } = useWebSocket(\n\n url,\n optionsWithSocketIO,\n connect,\n );\n\n const socketIOLastMessage = useMemo(() =>\n getSocketData<T>(lastMessage), [lastMessage]);\n\n return {\n sendMessage,\n sendJsonMessage,\n lastMessage: socketIOLastMessage,\n lastJsonMessage: socketIOLastMessage,\n readyState,\n getWebSocket,\n };\n}\n","import { useEffect, useRef, useState, useCallback, useMemo } from 'react';\nimport { flushSync } from 'react-dom';\nimport { DEFAULT_OPTIONS, isEventSourceSupported, ReadyState, UNPARSABLE_JSON_OBJECT } from './constants';\nimport { createOrJoinSocket } from './create-or-join';\nimport { getUrl } from './get-url';\nimport websocketWrapper from './proxy';\nimport {\n Options,\n ReadyStateState,\n SendMessage,\n SendJsonMessage,\n WebSocketMessage,\n WebSocketHook,\n WebSocketLike,\n} from './types';\nimport { assertIsWebSocket } from './util';\n\nexport const useWebSocket = <T = unknown>(\n url: string | (() => string | Promise<string>) | null,\n options: Options = DEFAULT_OPTIONS,\n connect: boolean = true,\n): WebSocketHook<T> => {\n const [lastMessage, setLastMessage] = useState<WebSocketEventMap['message'] | null>(null);\n const [readyState, setReadyState] = useState<ReadyStateState>({});\n const lastJsonMessage: T = useMemo(() => {\n if (lastMessage) {\n try {\n return JSON.parse(lastMessage.data);\n } catch (e) {\n return UNPARSABLE_JSON_OBJECT;\n }\n }\n return null;\n }, [lastMessage]);\n const convertedUrl = useRef<string | null>(null);\n const webSocketRef = useRef<WebSocketLike | null>(null);\n const startRef = useRef<() => void>(() => void 0);\n const reconnectCount = useRef<number>(0);\n const lastMessageTime = useRef<number>(Date.now());\n const messageQueue = useRef<WebSocketMessage[]>([]);\n const webSocketProxy = useRef<WebSocketLike | null>(null);\n const optionsCache = useRef<Options>(options);\n optionsCache.current = options;\n\n const readyStateFromUrl: ReadyState =\n convertedUrl.current && readyState[convertedUrl.current] !== undefined ?\n readyState[convertedUrl.current] :\n url !== null && connect === true ?\n ReadyState.CONNECTING :\n ReadyState.UNINSTANTIATED;\n\n const stringifiedQueryParams = options.queryParams ? JSON.stringify(options.queryParams) : null;\n\n const sendMessage: SendMessage = useCallback((message, keep = true) => {\n if (isEventSourceSupported && webSocketRef.current instanceof EventSource) {\n console.warn('Unable to send a message from an eventSource');\n return;\n }\n\n if (webSocketRef.current?.readyState === ReadyState.OPEN) {\n assertIsWebSocket(webSocketRef.current, optionsCache.current.skipAssert);\n webSocketRef.current.send(message);\n } else if (keep) {\n messageQueue.current.push(message);\n }\n }, []);\n\n const sendJsonMessage: SendJsonMessage = useCallback((message, keep = true) => {\n sendMessage(JSON.stringify(message), keep);\n }, [sendMessage]);\n\n const getWebSocket = useCallback(() => {\n if (optionsCache.current.share !== true || (isEventSourceSupported && webSocketRef.current instanceof EventSource)) {\n return webSocketRef.current;\n }\n\n if (webSocketProxy.current === null && webSocketRef.current) {\n assertIsWebSocket(webSocketRef.current, optionsCache.current.skipAssert);\n webSocketProxy.current = websocketWrapper(webSocketRef.current, startRef);\n }\n\n return webSocketProxy.current;\n }, []);\n\n useEffect(() => {\n if (url !== null && connect === true) {\n let removeListeners: () => void;\n let expectClose = false;\n let createOrJoin = true;\n\n const start = async () => {\n convertedUrl.current = await getUrl(url, optionsCache);\n\n if (convertedUrl.current === null) {\n console.error('Failed to get a valid URL. WebSocket connection aborted.');\n convertedUrl.current = 'ABORTED';\n flushSync(() => setReadyState(prev => ({\n ...prev,\n ABORTED: ReadyState.CLOSED,\n })));\n\n return;\n }\n\n const protectedSetLastMessage = (message: WebSocketEventMap['message']) => {\n if (!expectClose) {\n flushSync(() => setLastMessage(message));\n }\n };\n\n const protectedSetReadyState = (state: ReadyState) => {\n if (!expectClose) {\n flushSync(() => setReadyState(prev => ({\n ...prev,\n ...(convertedUrl.current && { [convertedUrl.current]: state }),\n })));\n }\n };\n\n if (createOrJoin) {\n removeListeners = createOrJoinSocket(\n webSocketRef,\n convertedUrl.current,\n protectedSetReadyState,\n optionsCache,\n protectedSetLastMessage,\n startRef,\n reconnectCount,\n lastMessageTime,\n sendMessage,\n );\n }\n };\n\n startRef.current = () => {\n if (!expectClose) {\n if (webSocketProxy.current) webSocketProxy.current = null;\n removeListeners?.();\n start();\n }\n };\n\n start();\n return () => {\n expectClose = true;\n createOrJoin = false;\n if (webSocketProxy.current) webSocketProxy.current = null;\n removeListeners?.();\n setLastMessage(null);\n };\n } else if (url === null || connect === false) {\n reconnectCount.current = 0; // reset reconnection attempts\n setReadyState(prev => ({\n ...prev,\n ...(convertedUrl.current && { [convertedUrl.current]: ReadyState.CLOSED }),\n }));\n }\n }, [url, connect, stringifiedQueryParams, sendMessage]);\n\n useEffect(() => {\n if (readyStateFromUrl === ReadyState.OPEN) {\n messageQueue.current.splice(0).forEach(message => {\n sendMessage(message);\n });\n }\n }, [readyStateFromUrl]);\n\n return {\n sendMessage,\n sendJsonMessage,\n lastMessage,\n lastJsonMessage,\n readyState: readyStateFromUrl,\n getWebSocket,\n };\n};\n","import { WebSocketLike } from './types';\nimport { resetWebSockets } from './globals';\nimport { resetSubscribers } from './manage-subscribers';\n\nexport function assertIsWebSocket (\n webSocketInstance: WebSocketLike,\n skip?: boolean,\n): asserts webSocketInstance is WebSocket {\n if (!skip && webSocketInstance instanceof WebSocket === false) throw new Error('');\n};\n\n\nexport function resetGlobalState (url?: string): void {\n resetSubscribers(url);\n resetWebSockets(url);\n};\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changedâ€. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\nexport var SCOPE = '@scope'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @param {number} position\n * @return {number}\n */\nexport function indexof (value, search, position) {\n\treturn value.indexOf(search, position)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\n/**\n * @param {string[]} array\n * @param {RegExp} pattern\n * @return {string[]}\n */\nexport function filter (array, pattern) {\n\treturn array.filter(function (value) { return !match(value, pattern) })\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {object[]} siblings\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length, siblings) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props)\n}\n\n/**\n * @param {object} root\n */\nexport function lift (root) {\n\twhile (root.root)\n\t\troot = copy(root.root, {children: [root]})\n\n\tappend(root, root.siblings)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\n\tfor (var i = 0; i < children.length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: if (!strlen(element.value = element.props.join(','))) return ''\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT} from './Enum.js'\nimport {hash, charat, strlen, indexof, replace, substr, match} from './Utility.js'\n\n/**\n * @param {string} value\n * @param {number} length\n * @param {object[]} children\n * @return {string}\n */\nexport function prefix (value, length, children) {\n\tswitch (hash(value, length)) {\n\t\t// color-adjust\n\t\tcase 5103:\n\t\t\treturn WEBKIT + 'print-' + value + value\n\t\t// animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\t\tcase 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921:\n\t\t// text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\t\tcase 5572: case 6356: case 5844: case 3191: case 6645: case 3005:\n\t\t// mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\t\tcase 6391: case 5879: case 5623: case 6135: case 4599: case 4855:\n\t\t// background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\t\tcase 4215: case 6389: case 5109: case 5365: case 5621: case 3829:\n\t\t\treturn WEBKIT + value + value\n\t\t// tab-size\n\t\tcase 4789:\n\t\t\treturn MOZ + value + value\n\t\t// appearance, user-select, transform, hyphens, text-size-adjust\n\t\tcase 5349: case 4246: case 4810: case 6968: case 2756:\n\t\t\treturn WEBKIT + value + MOZ + value + MS + value + value\n\t\t// writing-mode\n\t\tcase 5936:\n\t\t\tswitch (charat(value, length + 11)) {\n\t\t\t\t// vertical-l(r)\n\t\t\t\tcase 114:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value\n\t\t\t\t// vertical-r(l)\n\t\t\t\tcase 108:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value\n\t\t\t\t// horizontal(-)tb\n\t\t\t\tcase 45:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value\n\t\t\t\t// default: fallthrough to below\n\t\t\t}\n\t\t// flex, flex-direction, scroll-snap-type, writing-mode\n\t\tcase 6828: case 4268: case 2903:\n\t\t\treturn WEBKIT + value + MS + value + value\n\t\t// order\n\t\tcase 6165:\n\t\t\treturn WEBKIT + value + MS + 'flex-' + value + value\n\t\t// align-items\n\t\tcase 5187:\n\t\t\treturn WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value\n\t\t// align-self\n\t\tcase 5443:\n\t\t\treturn WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/g, '') + (!match(value, /flex-|baseline/) ? MS + 'grid-row-' + replace(value, /flex-|-self/g, '') : '') + value\n\t\t// align-content\n\t\tcase 4675:\n\t\t\treturn WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/g, '') + value\n\t\t// flex-shrink\n\t\tcase 5548:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value\n\t\t// flex-basis\n\t\tcase 5292:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value\n\t\t// flex-grow\n\t\tcase 6060:\n\t\t\treturn WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value\n\t\t// transition\n\t\tcase 4554:\n\t\t\treturn WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value\n\t\t// cursor\n\t\tcase 6187:\n\t\t\treturn replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value\n\t\t// background, background-image\n\t\tcase 5495: case 3959:\n\t\t\treturn replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1')\n\t\t// justify-content\n\t\tcase 4968:\n\t\t\treturn replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value\n\t\t// justify-self\n\t\tcase 4200:\n\t\t\tif (!match(value, /flex-|baseline/)) return MS + 'grid-column-align' + substr(value, length) + value\n\t\t\tbreak\n\t\t// grid-template-(columns|rows)\n\t\tcase 2592: case 3360:\n\t\t\treturn MS + replace(value, 'template-', '') + value\n\t\t// grid-(row|column)-start\n\t\tcase 4384: case 3616:\n\t\t\tif (children && children.some(function (element, index) { return length = index, match(element.props, /grid-\\w+-end/) })) {\n\t\t\t\treturn ~indexof(value + (children = children[length].value), 'span', 0) ? value : (MS + replace(value, '-start', '') + value + MS + 'grid-row-span:' + (~indexof(children, 'span', 0) ? match(children, /\\d+/) : +match(children, /\\d+/) - +match(value, /\\d+/)) + ';')\n\t\t\t}\n\t\t\treturn MS + replace(value, '-start', '') + value\n\t\t// grid-(row|column)-end\n\t\tcase 4896: case 4128:\n\t\t\treturn (children && children.some(function (element) { return match(element.props, /grid-\\w+-start/) })) ? value : MS + replace(replace(value, '-end', '-span'), 'span ', '') + value\n\t\t// (margin|padding)-inline-(start|end)\n\t\tcase 4095: case 3583: case 4068: case 2532:\n\t\t\treturn replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value\n\t\t// (min|max)?(width|height|inline-size|block-size)\n\t\tcase 8116: case 7059: case 5753: case 5535:\n\t\tcase 5445: case 5701: case 4933: case 4677:\n\t\tcase 5533: case 5789: case 5021: case 4765:\n\t\t\t// stretch, max-content, min-content, fill-available\n\t\t\tif (strlen(value) - 1 - length > 6)\n\t\t\t\tswitch (charat(value, length + 1)) {\n\t\t\t\t\t// (m)ax-content, (m)in-content\n\t\t\t\t\tcase 109:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (charat(value, length + 4) !== 45)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t// (f)ill-available, (f)it-content\n\t\t\t\t\tcase 102:\n\t\t\t\t\t\treturn replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value\n\t\t\t\t\t// (s)tretch\n\t\t\t\t\tcase 115:\n\t\t\t\t\t\treturn ~indexof(value, 'stretch', 0) ? prefix(replace(value, 'stretch', 'fill-available'), length, children) + value : value\n\t\t\t\t}\n\t\t\tbreak\n\t\t// grid-(column|row)\n\t\tcase 5152: case 5920:\n\t\t\treturn replace(value, /(.+?):(\\d+)(\\s*\\/\\s*(span)?\\s*(\\d+))?(.*)/, function (_, a, b, c, d, e, f) { return (MS + a + ':' + b + f) + (c ? (MS + a + '-span:' + (d ? e : +e - +b)) + f : '') + value })\n\t\t// position: sticky\n\t\tcase 4949:\n\t\t\t// stick(y)?\n\t\t\tif (charat(value, length + 6) === 121)\n\t\t\t\treturn replace(value, ':', ':' + WEBKIT) + value\n\t\t\tbreak\n\t\t// display: (flex|inline-flex|grid|inline-grid)\n\t\tcase 6444:\n\t\t\tswitch (charat(value, charat(value, 14) === 45 ? 18 : 11)) {\n\t\t\t\t// (inline-)?fle(x)\n\t\t\t\tcase 120:\n\t\t\t\t\treturn replace(value, /(.+:)([^;\\s!]+)(;|(\\s+)?!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value\n\t\t\t\t// (inline-)?gri(d)\n\t\t\t\tcase 100:\n\t\t\t\t\treturn replace(value, ':', ':' + MS) + value\n\t\t\t}\n\t\t\tbreak\n\t\t// scroll-margin, scroll-margin-(top|right|bottom|left)\n\t\tcase 5719: case 2647: case 2135: case 3927: case 2391:\n\t\t\treturn replace(value, 'scroll-', 'scroll-snap-') + value\n\t}\n\n\treturn value\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine, filter, assign} from './Utility.js'\nimport {copy, lift, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(children = element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, callback = /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f', abs(index ? points[index - 1] : 0)) != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length, siblings)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @param {object[]} siblings\n * @return {object}\n */\nexport function comment (value, root, parent, siblings) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function declaration (value, root, parent, length, siblings) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length, siblings)\n}\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","declare let SC_DISABLE_SPEEDY: boolean | null | undefined;\ndeclare let __VERSION__: string;\n\nexport const SC_ATTR: string =\n (typeof process !== 'undefined' &&\n typeof process.env !== 'undefined' &&\n (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR)) ||\n 'data-styled';\n\nexport const SC_ATTR_ACTIVE = 'active';\nexport const SC_ATTR_VERSION = 'data-styled-version';\nexport const SC_VERSION = __VERSION__;\nexport const SPLITTER = '/*!sc*/\\n';\n\nexport const IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\n\nexport const DISABLE_SPEEDY = Boolean(\n typeof SC_DISABLE_SPEEDY === 'boolean'\n ? SC_DISABLE_SPEEDY\n : typeof process !== 'undefined' &&\n typeof process.env !== 'undefined' &&\n typeof process.env.REACT_APP_SC_DISABLE_SPEEDY !== 'undefined' &&\n process.env.REACT_APP_SC_DISABLE_SPEEDY !== ''\n ? process.env.REACT_APP_SC_DISABLE_SPEEDY === 'false'\n ? false\n : process.env.REACT_APP_SC_DISABLE_SPEEDY\n : typeof process !== 'undefined' &&\n typeof process.env !== 'undefined' &&\n typeof process.env.SC_DISABLE_SPEEDY !== 'undefined' &&\n process.env.SC_DISABLE_SPEEDY !== ''\n ? process.env.SC_DISABLE_SPEEDY === 'false'\n ? false\n : process.env.SC_DISABLE_SPEEDY\n : process.env.NODE_ENV !== 'production'\n);\n\n// Shared empty execution context when generating static styles\nexport const STATIC_EXECUTION_CONTEXT = {};\n","import { Dict } from '../types';\n\nexport const EMPTY_ARRAY = Object.freeze([]) as Readonly<any[]>;\nexport const EMPTY_OBJECT = Object.freeze({}) as Readonly<Dict<any>>;\n","import { useRef } from 'react';\n\nconst invalidHookCallRe = /invalid hook call/i;\nconst seen = new Set();\n\nexport const checkDynamicCreation = (displayName: string, componentId?: string | undefined) => {\n if (process.env.NODE_ENV !== 'production') {\n const parsedIdString = componentId ? ` with the id of \"${componentId}\"` : '';\n const message =\n `The component ${displayName}${parsedIdString} has been created dynamically.\\n` +\n \"You may see this warning because you've called styled inside another component.\\n\" +\n 'To resolve this only create new StyledComponents outside of any render method and function component.';\n\n // If a hook is called outside of a component:\n // React 17 and earlier throw an error\n // React 18 and above use console.error\n\n const originalConsoleError = console.error;\n try {\n let didNotCallInvalidHook = true;\n console.error = (consoleErrorMessage, ...consoleErrorArgs) => {\n // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n // be called outside of a React component.\n if (invalidHookCallRe.test(consoleErrorMessage)) {\n didNotCallInvalidHook = false;\n // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n seen.delete(message);\n } else {\n originalConsoleError(consoleErrorMessage, ...consoleErrorArgs);\n }\n };\n // We purposefully call `useRef` outside of a component and expect it to throw\n // If it doesn't, then we're inside another component.\n useRef();\n\n if (didNotCallInvalidHook && !seen.has(message)) {\n console.warn(message);\n seen.add(message);\n }\n } catch (error) {\n // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n // be called outside of a React component.\n if (invalidHookCallRe.test((error as Error).message)) {\n // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n seen.delete(message);\n }\n } finally {\n console.error = originalConsoleError;\n }\n }\n};\n","import { DefaultTheme, ExecutionProps } from '../types';\nimport { EMPTY_OBJECT } from './empties';\n\nexport default function determineTheme(\n props: ExecutionProps,\n providedTheme?: DefaultTheme | undefined,\n defaultProps: { theme?: DefaultTheme | undefined } = EMPTY_OBJECT\n): DefaultTheme | undefined {\n return (props.theme !== defaultProps.theme && props.theme) || providedTheme || defaultProps.theme;\n}\n","// Thanks to ReactDOMFactories for this handy list!\n\nconst elements = [\n 'a',\n 'abbr',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'base',\n 'bdi',\n 'bdo',\n 'big',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'data',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'keygen',\n 'label',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'map',\n 'mark',\n 'menu',\n 'menuitem',\n 'meta',\n 'meter',\n 'nav',\n 'noscript',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'param',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'script',\n 'section',\n 'select',\n 'small',\n 'source',\n 'span',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'u',\n 'ul',\n 'use',\n 'var',\n 'video',\n 'wbr', // SVG\n 'circle',\n 'clipPath',\n 'defs',\n 'ellipse',\n 'foreignObject',\n 'g',\n 'image',\n 'line',\n 'linearGradient',\n 'marker',\n 'mask',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'stop',\n 'svg',\n 'text',\n 'tspan',\n] as const;\n\nexport default new Set(elements);\nexport type SupportedHTMLElements = (typeof elements)[number];\n","// Source: https://www.w3.org/TR/cssom-1/#serialize-an-identifier\n// Control characters and non-letter first symbols are not supported\nconst escapeRegex = /[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~-]+/g;\n\nconst dashesAtEnds = /(^-|-$)/g;\n\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\nexport default function escape(str: string) {\n return str // Replace all possible CSS selectors\n .replace(escapeRegex, '-') // Remove extraneous hyphens at the start and end\n .replace(dashesAtEnds, '');\n}\n","const AD_REPLACER_R = /(a)(d)/gi;\n\n/* This is the \"capacity\" of our alphabet i.e. 2x26 for all letters plus their capitalised\n * counterparts */\nconst charsLength = 52;\n\n/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */\nconst getAlphabeticChar = (code: number) => String.fromCharCode(code + (code > 25 ? 39 : 97));\n\n/* input a number, usually a hash and convert it to base-52 */\nexport default function generateAlphabeticName(code: number) {\n let name = '';\n let x;\n\n /* get a char and divide by alphabet-length */\n for (x = Math.abs(code); x > charsLength; x = (x / charsLength) | 0) {\n name = getAlphabeticChar(x % charsLength) + name;\n }\n\n return (getAlphabeticChar(x % charsLength) + name).replace(AD_REPLACER_R, '$1-$2');\n}\n","export const SEED = 5381;\n\n// When we have separate strings it's useful to run a progressive\n// version of djb2 where we pretend that we're still looping over\n// the same string\nexport const phash = (h: number, x: string) => {\n let i = x.length;\n\n while (i) {\n h = (h * 33) ^ x.charCodeAt(--i);\n }\n\n return h;\n};\n\n// This is a djb2 hashing function\nexport const hash = (x: string) => {\n return phash(SEED, x);\n};\n","import generateAlphabeticName from './generateAlphabeticName';\nimport { hash } from './hash';\n\nexport default function generateComponentId(str: string) {\n return generateAlphabeticName(hash(str) >>> 0);\n}\n","import { StyledTarget } from '../types';\n\nexport default function getComponentName(target: StyledTarget<any>) {\n return (\n (process.env.NODE_ENV !== 'production' ? typeof target === 'string' && target : false) ||\n (target as Exclude<StyledTarget<any>, string>).displayName ||\n (target as Function).name ||\n 'Component'\n );\n}\n","import { StyledTarget } from '../types';\n\nexport default function isTag(target: StyledTarget<'web'>): target is string {\n return (\n typeof target === 'string' &&\n (process.env.NODE_ENV !== 'production'\n ? target.charAt(0) === target.charAt(0).toLowerCase()\n : true)\n );\n}\n","import React from 'react';\nimport { AnyComponent } from '../types';\n\nconst hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\n// copied from react-is\nconst REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nconst REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\n\n/**\n * Adapted from hoist-non-react-statics to avoid the react-is dependency.\n */\nconst REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true,\n};\n\nconst KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true,\n};\n\nconst FORWARD_REF_STATICS = {\n $$typeof: true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n};\n\nconst MEMO_STATICS = {\n $$typeof: true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true,\n};\n\nconst TYPE_STATICS = {\n [REACT_FORWARD_REF_TYPE]: FORWARD_REF_STATICS,\n [REACT_MEMO_TYPE]: MEMO_STATICS,\n};\n\ntype OmniComponent = AnyComponent;\n\n// adapted from react-is\nfunction isMemo(\n object: OmniComponent | React.MemoExoticComponent<any>\n): object is React.MemoExoticComponent<any> {\n const $$typeofType = 'type' in object && object.type.$$typeof;\n\n return $$typeofType === REACT_MEMO_TYPE;\n}\n\nfunction getStatics(component: OmniComponent) {\n // React v16.11 and below\n if (isMemo(component)) {\n return MEMO_STATICS;\n }\n\n // React v16.12 and above\n return '$$typeof' in component\n ? TYPE_STATICS[component['$$typeof'] as unknown as string]\n : REACT_STATICS;\n}\n\nconst defineProperty = Object.defineProperty;\nconst getOwnPropertyNames = Object.getOwnPropertyNames;\nconst getOwnPropertySymbols = Object.getOwnPropertySymbols;\nconst getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nconst getPrototypeOf = Object.getPrototypeOf;\nconst objectPrototype = Object.prototype;\n\ntype ExcludeList = {\n [key: string]: true;\n};\n\ntype NonReactStatics<S extends OmniComponent, C extends ExcludeList = {}> = {\n [key in Exclude<\n keyof S,\n S extends React.MemoExoticComponent<any>\n ? keyof typeof MEMO_STATICS | keyof C\n : S extends React.ForwardRefExoticComponent<any>\n ? keyof typeof FORWARD_REF_STATICS | keyof C\n : keyof typeof REACT_STATICS | keyof typeof KNOWN_STATICS | keyof C\n >]: S[key];\n};\n\nexport default function hoistNonReactStatics<\n T extends OmniComponent,\n S extends OmniComponent,\n C extends ExcludeList = {},\n>(targetComponent: T, sourceComponent: S, excludelist?: C | undefined) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n const inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, excludelist);\n }\n }\n\n let keys: (String | Symbol)[] = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n const targetStatics = getStatics(targetComponent);\n const sourceStatics = getStatics(sourceComponent);\n\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i] as unknown as string;\n if (\n !(key in KNOWN_STATICS) &&\n !(excludelist && excludelist[key]) &&\n !(sourceStatics && key in sourceStatics) &&\n !(targetStatics && key in targetStatics)\n ) {\n const descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor!);\n } catch (e) {\n /* ignore */\n }\n }\n }\n }\n\n return targetComponent as T & NonReactStatics<S, C>;\n}\n","export default function isFunction(test: any): test is Function {\n return typeof test === 'function';\n}\n","import { StyledComponentBrand } from '../types';\n\nexport default function isStyledComponent(target: any): target is StyledComponentBrand {\n return typeof target === 'object' && 'styledComponentId' in target;\n}\n","/**\n * Convenience function for joining strings to form className chains\n */\nexport function joinStrings(a?: string | undefined, b?: string | undefined): string {\n return a && b ? `${a} ${b}` : a || b || '';\n}\n\nexport function joinStringArray(arr: string[], sep?: string | undefined): string {\n if (arr.length === 0) {\n return '';\n }\n\n let result = arr[0];\n for (let i = 1; i < arr.length; i++) {\n result += sep ? sep + arr[i] : arr[i];\n }\n return result;\n}\n","export default function isPlainObject(x: any): x is Record<any, any> {\n return (\n x !== null &&\n typeof x === 'object' &&\n x.constructor.name === Object.name &&\n /* check for reasonable markers that the object isn't an element for react & preact/compat */\n !('props' in x && x.$$typeof)\n );\n}\n","import isPlainObject from './isPlainObject';\n\nfunction mixinRecursively(target: any, source: any, forceMerge = false) {\n /* only merge into POJOs, Arrays, but for top level objects only\n * allow to merge into anything by passing forceMerge = true */\n if (!forceMerge && !isPlainObject(target) && !Array.isArray(target)) {\n return source;\n }\n\n if (Array.isArray(source)) {\n for (let key = 0; key < source.length; key++) {\n target[key] = mixinRecursively(target[key], source[key]);\n }\n } else if (isPlainObject(source)) {\n for (const key in source) {\n target[key] = mixinRecursively(target[key], source[key]);\n }\n }\n\n return target;\n}\n\n/**\n * Arrays & POJOs merged recursively, other objects and value types are overridden\n * If target is not a POJO or an Array, it will get source properties injected via shallow merge\n * Source objects applied left to right. Mutates & returns target. Similar to lodash merge.\n */\nexport default function mixinDeep(target: any, ...sources: any[]) {\n for (const source of sources) {\n mixinRecursively(target, source, true);\n }\n\n return target;\n}\n","/**\n * If the Object prototype is frozen, the \"toString\" property is non-writable. This means that any objects which inherit this property\n * cannot have the property changed using a \"=\" assignment operator. If using strict mode, attempting that will cause an error. If not using\n * strict mode, attempting that will be silently ignored.\n *\n * If the Object prototype is frozen, inherited non-writable properties can still be shadowed using one of two mechanisms:\n *\n * 1. ES6 class methods: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#methods\n * 2. Using the `Object.defineProperty()` static method:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty\n *\n * However, this project uses Babel to transpile ES6 classes, and transforms ES6 class methods to use the assignment operator instead:\n * https://babeljs.io/docs/babel-plugin-transform-class-properties#options\n *\n * Therefore, the most compatible way to shadow the prototype's \"toString\" property is to define a new \"toString\" property on this object.\n */\nexport function setToString(object: object, toStringFn: () => string) {\n Object.defineProperty(object, 'toString', { value: toStringFn });\n}\n","import { Dict } from '../types';\nimport errorMap from './errors';\n\nconst ERRORS: Dict<any> = process.env.NODE_ENV !== 'production' ? errorMap : {};\n\n/**\n * super basic version of sprintf\n */\nfunction format(...args: [string, ...any]) {\n let a = args[0];\n const b = [];\n\n for (let c = 1, len = args.length; c < len; c += 1) {\n b.push(args[c]);\n }\n\n b.forEach(d => {\n a = a.replace(/%[a-z]/, d);\n });\n\n return a;\n}\n\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n */\nexport default function throwStyledComponentsError(\n code: string | number,\n ...interpolations: any[]\n) {\n if (process.env.NODE_ENV === 'production') {\n return new Error(\n `An error occurred. See https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#${code} for more information.${\n interpolations.length > 0 ? ` Args: ${interpolations.join(', ')}` : ''\n }`\n );\n } else {\n return new Error(format(ERRORS[code], ...interpolations).trim());\n }\n}\n","import { SPLITTER } from '../constants';\nimport styledError from '../utils/error';\nimport { GroupedTag, Tag } from './types';\n\n/** Create a GroupedTag with an underlying Tag implementation */\nexport const makeGroupedTag = (tag: Tag) => {\n return new DefaultGroupedTag(tag);\n};\n\nconst BASE_SIZE = 1 << 9;\n\nconst DefaultGroupedTag = class DefaultGroupedTag implements GroupedTag {\n groupSizes: Uint32Array;\n length: number;\n tag: Tag;\n\n constructor(tag: Tag) {\n this.groupSizes = new Uint32Array(BASE_SIZE);\n this.length = BASE_SIZE;\n this.tag = tag;\n }\n\n indexOfGroup(group: number) {\n let index = 0;\n for (let i = 0; i < group; i++) {\n index += this.groupSizes[i];\n }\n\n return index;\n }\n\n insertRules(group: number, rules: string[]) {\n if (group >= this.groupSizes.length) {\n const oldBuffer = this.groupSizes;\n const oldSize = oldBuffer.length;\n\n let newSize = oldSize;\n while (group >= newSize) {\n newSize <<= 1;\n if (newSize < 0) {\n throw styledError(16, `${group}`);\n }\n }\n\n this.groupSizes = new Uint32Array(newSize);\n this.groupSizes.set(oldBuffer);\n this.length = newSize;\n\n for (let i = oldSize; i < newSize; i++) {\n this.groupSizes[i] = 0;\n }\n }\n\n let ruleIndex = this.indexOfGroup(group + 1);\n\n for (let i = 0, l = rules.length; i < l; i++) {\n if (this.tag.insertRule(ruleIndex, rules[i])) {\n this.groupSizes[group]++;\n ruleIndex++;\n }\n }\n }\n\n clearGroup(group: number) {\n if (group < this.length) {\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n this.groupSizes[group] = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n this.tag.deleteRule(startIndex);\n }\n }\n }\n\n getGroup(group: number) {\n let css = '';\n if (group >= this.length || this.groupSizes[group] === 0) {\n return css;\n }\n\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n for (let i = startIndex; i < endIndex; i++) {\n css += `${this.tag.getRule(i)}${SPLITTER}`;\n }\n\n return css;\n }\n};\n","import styledError from '../utils/error';\n\nconst MAX_SMI = 1 << (31 - 1);\n\nlet groupIDRegister: Map<string, number> = new Map();\nlet reverseRegister: Map<number, string> = new Map();\nlet nextFreeGroup = 1;\n\nexport const resetGroupIds = () => {\n groupIDRegister = new Map();\n reverseRegister = new Map();\n nextFreeGroup = 1;\n};\n\nexport const getGroupForId = (id: string): number => {\n if (groupIDRegister.has(id)) {\n return groupIDRegister.get(id) as any;\n }\n\n while (reverseRegister.has(nextFreeGroup)) {\n nextFreeGroup++;\n }\n\n const group = nextFreeGroup++;\n\n if (process.env.NODE_ENV !== 'production' && ((group | 0) < 0 || group > MAX_SMI)) {\n throw styledError(16, `${group}`);\n }\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n return group;\n};\n\nexport const getIdForGroup = (group: number): void | string => {\n return reverseRegister.get(group);\n};\n\nexport const setGroupForId = (id: string, group: number) => {\n // move pointer\n nextFreeGroup = group + 1;\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n};\n","import { SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION, SPLITTER } from '../constants';\nimport { getIdForGroup, setGroupForId } from './GroupIDAllocator';\nimport { Sheet } from './types';\n\nconst SELECTOR = `style[${SC_ATTR}][${SC_ATTR_VERSION}=\"${SC_VERSION}\"]`;\nconst MARKER_RE = new RegExp(`^${SC_ATTR}\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)`);\n\nexport const outputSheet = (sheet: Sheet) => {\n const tag = sheet.getTag();\n const { length } = tag;\n\n let css = '';\n for (let group = 0; group < length; group++) {\n const id = getIdForGroup(group);\n if (id === undefined) continue;\n\n const names = sheet.names.get(id);\n const rules = tag.getGroup(group);\n if (names === undefined || !names.size || rules.length === 0) continue;\n\n const selector = `${SC_ATTR}.g${group}[id=\"${id}\"]`;\n\n let content = '';\n if (names !== undefined) {\n names.forEach(name => {\n if (name.length > 0) {\n content += `${name},`;\n }\n });\n }\n\n // NOTE: It's easier to collect rules and have the marker\n // after the actual rules to simplify the rehydration\n css += `${rules}${selector}{content:\"${content}\"}${SPLITTER}`;\n }\n\n return css;\n};\n\nconst rehydrateNamesFromContent = (sheet: Sheet, id: string, content: string) => {\n const names = content.split(',');\n let name;\n\n for (let i = 0, l = names.length; i < l; i++) {\n if ((name = names[i])) {\n sheet.registerName(id, name);\n }\n }\n};\n\nconst rehydrateSheetFromTag = (sheet: Sheet, style: HTMLStyleElement) => {\n const parts = (style.textContent ?? '').split(SPLITTER);\n const rules: string[] = [];\n\n for (let i = 0, l = parts.length; i < l; i++) {\n const part = parts[i].trim();\n if (!part) continue;\n\n const marker = part.match(MARKER_RE);\n\n if (marker) {\n const group = parseInt(marker[1], 10) | 0;\n const id = marker[2];\n\n if (group !== 0) {\n // Rehydrate componentId to group index mapping\n setGroupForId(id, group);\n // Rehydrate names and rules\n // looks like: data-styled.g11[id=\"idA\"]{content:\"nameA,\"}\n rehydrateNamesFromContent(sheet, id, marker[3]);\n sheet.getTag().insertRules(group, rules);\n }\n\n rules.length = 0;\n } else {\n rules.push(part);\n }\n }\n};\n\nexport const rehydrateSheet = (sheet: Sheet) => {\n const nodes = document.querySelectorAll(SELECTOR);\n\n for (let i = 0, l = nodes.length; i < l; i++) {\n const node = nodes[i] as any as HTMLStyleElement;\n if (node && node.getAttribute(SC_ATTR) !== SC_ATTR_ACTIVE) {\n rehydrateSheetFromTag(sheet, node);\n\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n }\n};\n","declare let __webpack_nonce__: string;\n\nexport default function getNonce() {\n return typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n}\n","import { SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport { InsertionTarget } from '../types';\nimport styledError from '../utils/error';\nimport getNonce from '../utils/nonce';\n\n/** Find last style element if any inside target */\nconst findLastStyleTag = (target: InsertionTarget): void | HTMLStyleElement => {\n const arr = Array.from(target.querySelectorAll<HTMLStyleElement>(`style[${SC_ATTR}]`));\n\n return arr[arr.length - 1];\n};\n\n/** Create a style element inside `target` or <head> after the last */\nexport const makeStyleTag = (target?: InsertionTarget | undefined): HTMLStyleElement => {\n const head = document.head;\n const parent = target || head;\n const style = document.createElement('style');\n const prevStyle = findLastStyleTag(parent);\n const nextSibling = prevStyle !== undefined ? prevStyle.nextSibling : null;\n\n style.setAttribute(SC_ATTR, SC_ATTR_ACTIVE);\n style.setAttribute(SC_ATTR_VERSION, SC_VERSION);\n\n const nonce = getNonce();\n\n if (nonce) style.setAttribute('nonce', nonce);\n\n parent.insertBefore(style, nextSibling);\n\n return style;\n};\n\n/** Get the CSSStyleSheet instance for a given style element */\nexport const getSheet = (tag: HTMLStyleElement): CSSStyleSheet => {\n if (tag.sheet) {\n return tag.sheet as any as CSSStyleSheet;\n }\n\n // Avoid Firefox quirk where the style element might not have a sheet property\n const { styleSheets } = document;\n for (let i = 0, l = styleSheets.length; i < l; i++) {\n const sheet = styleSheets[i];\n if (sheet.ownerNode === tag) {\n return sheet as any as CSSStyleSheet;\n }\n }\n\n throw styledError(17);\n};\n","import { InsertionTarget } from '../types';\nimport { getSheet, makeStyleTag } from './dom';\nimport { SheetOptions, Tag } from './types';\n\n/** Create a CSSStyleSheet-like tag depending on the environment */\nexport const makeTag = ({ isServer, useCSSOMInjection, target }: SheetOptions) => {\n if (isServer) {\n return new VirtualTag(target);\n } else if (useCSSOMInjection) {\n return new CSSOMTag(target);\n } else {\n return new TextTag(target);\n }\n};\n\nexport const CSSOMTag = class CSSOMTag implements Tag {\n element: HTMLStyleElement;\n\n sheet: CSSStyleSheet;\n\n length: number;\n\n constructor(target?: InsertionTarget | undefined) {\n this.element = makeStyleTag(target);\n\n // Avoid Edge bug where empty style elements don't create sheets\n this.element.appendChild(document.createTextNode(''));\n\n this.sheet = getSheet(this.element);\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n try {\n this.sheet.insertRule(rule, index);\n this.length++;\n return true;\n } catch (_error) {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.sheet.deleteRule(index);\n this.length--;\n }\n\n getRule(index: number): string {\n const rule = this.sheet.cssRules[index];\n\n // Avoid IE11 quirk where cssText is inaccessible on some invalid rules\n if (rule && rule.cssText) {\n return rule.cssText;\n } else {\n return '';\n }\n }\n};\n\n/** A Tag that emulates the CSSStyleSheet API but uses text nodes */\nexport const TextTag = class TextTag implements Tag {\n element: HTMLStyleElement;\n nodes: NodeListOf<Node>;\n length: number;\n\n constructor(target?: InsertionTarget | undefined) {\n this.element = makeStyleTag(target);\n this.nodes = this.element.childNodes;\n this.length = 0;\n }\n\n insertRule(index: number, rule: string) {\n if (index <= this.length && index >= 0) {\n const node = document.createTextNode(rule);\n const refNode = this.nodes[index];\n this.element.insertBefore(node, refNode || null);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number) {\n this.element.removeChild(this.nodes[index]);\n this.length--;\n }\n\n getRule(index: number) {\n if (index < this.length) {\n return this.nodes[index].textContent as string;\n } else {\n return '';\n }\n }\n};\n\n/** A completely virtual (server-side) Tag that doesn't manipulate the DOM */\nexport const VirtualTag = class VirtualTag implements Tag {\n rules: string[];\n\n length: number;\n\n constructor(_target?: InsertionTarget | undefined) {\n this.rules = [];\n this.length = 0;\n }\n\n insertRule(index: number, rule: string) {\n if (index <= this.length) {\n this.rules.splice(index, 0, rule);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number) {\n this.rules.splice(index, 1);\n this.length--;\n }\n\n getRule(index: number) {\n if (index < this.length) {\n return this.rules[index];\n } else {\n return '';\n }\n }\n};\n","import { DISABLE_SPEEDY, IS_BROWSER } from '../constants';\nimport { InsertionTarget } from '../types';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport { setToString } from '../utils/setToString';\nimport { makeGroupedTag } from './GroupedTag';\nimport { getGroupForId } from './GroupIDAllocator';\nimport { outputSheet, rehydrateSheet } from './Rehydration';\nimport { makeTag } from './Tag';\nimport { GroupedTag, Sheet, SheetOptions } from './types';\n\nlet SHOULD_REHYDRATE = IS_BROWSER;\n\ntype SheetConstructorArgs = {\n isServer?: boolean;\n useCSSOMInjection?: boolean;\n target?: InsertionTarget | undefined;\n};\n\ntype GlobalStylesAllocationMap = {\n [key: string]: number;\n};\ntype NamesAllocationMap = Map<string, Set<string>>;\n\nconst defaultOptions: SheetOptions = {\n isServer: !IS_BROWSER,\n useCSSOMInjection: !DISABLE_SPEEDY,\n};\n\n/** Contains the main stylesheet logic for stringification and caching */\nexport default class StyleSheet implements Sheet {\n gs: GlobalStylesAllocationMap;\n names: NamesAllocationMap;\n options: SheetOptions;\n server: boolean;\n tag?: GroupedTag | undefined;\n\n /** Register a group ID to give it an index */\n static registerId(id: string): number {\n return getGroupForId(id);\n }\n\n constructor(\n options: SheetConstructorArgs = EMPTY_OBJECT as Object,\n globalStyles: GlobalStylesAllocationMap = {},\n names?: NamesAllocationMap | undefined\n ) {\n this.options = {\n ...defaultOptions,\n ...options,\n };\n\n this.gs = globalStyles;\n this.names = new Map(names as NamesAllocationMap);\n this.server = !!options.isServer;\n\n // We rehydrate only once and use the sheet that is created first\n if (!this.server && IS_BROWSER && SHOULD_REHYDRATE) {\n SHOULD_REHYDRATE = false;\n rehydrateSheet(this);\n }\n\n setToString(this, () => outputSheet(this));\n }\n\n rehydrate(): void {\n if (!this.server && IS_BROWSER) {\n rehydrateSheet(this);\n }\n }\n\n reconstructWithOptions(options: SheetConstructorArgs, withNames = true) {\n return new StyleSheet(\n { ...this.options, ...options },\n this.gs,\n (withNames && this.names) || undefined\n );\n }\n\n allocateGSInstance(id: string) {\n return (this.gs[id] = (this.gs[id] || 0) + 1);\n }\n\n /** Lazily initialises a GroupedTag for when it's actually needed */\n getTag() {\n return this.tag || (this.tag = makeGroupedTag(makeTag(this.options)));\n }\n\n /** Check whether a name is known for caching */\n hasNameForId(id: string, name: string): boolean {\n return this.names.has(id) && (this.names.get(id) as any).has(name);\n }\n\n /** Mark a group's name as known for caching */\n registerName(id: string, name: string) {\n getGroupForId(id);\n\n if (!this.names.has(id)) {\n const groupNames = new Set<string>();\n groupNames.add(name);\n this.names.set(id, groupNames);\n } else {\n (this.names.get(id) as any).add(name);\n }\n }\n\n /** Insert new rules which also marks the name as known */\n insertRules(id: string, name: string, rules: string | string[]) {\n this.registerName(id, name);\n this.getTag().insertRules(getGroupForId(id), rules);\n }\n\n /** Clears all cached names for a given group ID */\n clearNames(id: string) {\n if (this.names.has(id)) {\n (this.names.get(id) as any).clear();\n }\n }\n\n /** Clears all rules for a given group ID */\n clearRules(id: string) {\n this.getTag().clearGroup(getGroupForId(id));\n this.clearNames(id);\n }\n\n /** Clears the entire tag which deletes all rules but not its names */\n clearTag() {\n // NOTE: This does not clear the names, since it's only used during SSR\n // so that we can continuously output only new rules\n this.tag = undefined;\n }\n}\n","import * as stylis from 'stylis';\nimport { Stringifier } from '../types';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from './empties';\nimport throwStyledError from './error';\nimport { SEED, phash } from './hash';\n\nconst AMP_REGEX = /&/g;\nconst COMMENT_REGEX = /^\\s*\\/\\/.*$/gm;\n\nexport type ICreateStylisInstance = {\n options?: { namespace?: string | undefined; prefix?: boolean | undefined } | undefined;\n plugins?: stylis.Middleware[] | undefined;\n};\n\n/**\n * Takes an element and recurses through it's rules added the namespace to the start of each selector.\n * Takes into account media queries by recursing through child rules if they are present.\n */\nfunction recursivelySetNamepace(compiled: stylis.Element[], namespace: String): stylis.Element[] {\n return compiled.map(rule => {\n if (rule.type === 'rule') {\n // add the namespace to the start\n rule.value = `${namespace} ${rule.value}`;\n // add the namespace after each comma for subsequent selectors.\n rule.value = rule.value.replaceAll(',', `,${namespace} `);\n rule.props = (rule.props as string[]).map(prop => {\n return `${namespace} ${prop}`;\n });\n }\n\n if (Array.isArray(rule.children) && rule.type !== '@keyframes') {\n rule.children = recursivelySetNamepace(rule.children, namespace);\n }\n return rule;\n });\n}\n\nexport default function createStylisInstance(\n {\n options = EMPTY_OBJECT as object,\n plugins = EMPTY_ARRAY as unknown as stylis.Middleware[],\n }: ICreateStylisInstance = EMPTY_OBJECT as object\n) {\n let _componentId: string;\n let _selector: string;\n let _selectorRegexp: RegExp;\n\n const selfReferenceReplacer = (match: string, offset: number, string: string) => {\n if (\n /**\n * We only want to refer to the static class directly if the selector is part of a\n * self-reference selector `& + & { color: red; }`\n */\n string.startsWith(_selector) &&\n string.endsWith(_selector) &&\n string.replaceAll(_selector, '').length > 0\n ) {\n return `.${_componentId}`;\n }\n\n return match;\n };\n\n /**\n * When writing a style like\n *\n * & + & {\n * color: red;\n * }\n *\n * The second ampersand should be a reference to the static component class. stylis\n * has no knowledge of static class so we have to intelligently replace the base selector.\n *\n * https://github.com/thysultan/stylis.js/tree/v4.0.2#abstract-syntax-structure\n */\n const selfReferenceReplacementPlugin: stylis.Middleware = element => {\n if (element.type === stylis.RULESET && element.value.includes('&')) {\n (element.props as string[])[0] = element.props[0]\n // catch any hanging references that stylis missed\n .replace(AMP_REGEX, _selector)\n .replace(_selectorRegexp, selfReferenceReplacer);\n }\n };\n\n const middlewares = plugins.slice();\n\n middlewares.push(selfReferenceReplacementPlugin);\n\n /**\n * Enables automatic vendor-prefixing for styles.\n */\n if (options.prefix) {\n middlewares.push(stylis.prefixer);\n }\n\n middlewares.push(stylis.stringify);\n\n const stringifyRules: Stringifier = (\n css: string,\n selector = '',\n /**\n * This \"prefix\" referes to a _selector_ prefix.\n */\n prefix = '',\n componentId = '&'\n ) => {\n // stylis has no concept of state to be passed to plugins\n // but since JS is single-threaded, we can rely on that to ensure\n // these properties stay in sync with the current stylis run\n _componentId = componentId;\n _selector = selector;\n _selectorRegexp = new RegExp(`\\\\${_selector}\\\\b`, 'g');\n\n const flatCSS = css.replace(COMMENT_REGEX, '');\n let compiled = stylis.compile(\n prefix || selector ? `${prefix} ${selector} { ${flatCSS} }` : flatCSS\n );\n\n if (options.namespace) {\n compiled = recursivelySetNamepace(compiled, options.namespace);\n }\n\n const stack: string[] = [];\n\n stylis.serialize(\n compiled,\n stylis.middleware(middlewares.concat(stylis.rulesheet(value => stack.push(value))))\n );\n\n return stack;\n };\n\n stringifyRules.hash = plugins.length\n ? plugins\n .reduce((acc, plugin) => {\n if (!plugin.name) {\n throwStyledError(15);\n }\n\n return phash(acc, plugin.name);\n }, SEED)\n .toString()\n : '';\n\n return stringifyRules;\n}\n","import React, { useContext, useEffect, useMemo, useState } from 'react';\nimport shallowequal from 'shallowequal';\nimport type stylis from 'stylis';\nimport StyleSheet from '../sheet';\nimport { InsertionTarget, ShouldForwardProp, Stringifier } from '../types';\nimport createStylisInstance from '../utils/stylis';\n\nexport const mainSheet: StyleSheet = new StyleSheet();\nexport const mainStylis: Stringifier = createStylisInstance();\n\nexport type IStyleSheetContext = {\n shouldForwardProp?: ShouldForwardProp<'web'> | undefined;\n styleSheet: StyleSheet;\n stylis: Stringifier;\n};\n\nexport const StyleSheetContext = React.createContext<IStyleSheetContext>({\n shouldForwardProp: undefined,\n styleSheet: mainSheet,\n stylis: mainStylis,\n});\n\nexport const StyleSheetConsumer = StyleSheetContext.Consumer;\n\nexport type IStylisContext = Stringifier | void;\nexport const StylisContext = React.createContext<IStylisContext>(undefined);\nexport const StylisConsumer = StylisContext.Consumer;\n\nexport function useStyleSheetContext() {\n return useContext(StyleSheetContext);\n}\n\nexport type IStyleSheetManager = React.PropsWithChildren<{\n /**\n * If desired, you can pass this prop to disable \"speedy\" insertion mode, which\n * uses the browser [CSSOM APIs](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet).\n * When disabled, rules are inserted as simple text into style blocks.\n */\n disableCSSOMInjection?: undefined | boolean;\n /**\n * If you are working exclusively with modern browsers, vendor prefixes can often be omitted\n * to reduce the weight of CSS on the page.\n */\n enableVendorPrefixes?: undefined | boolean;\n /**\n * Provide an optional selector to be prepended to all generated style rules.\n */\n namespace?: undefined | string;\n /**\n * Create and provide your own `StyleSheet` if necessary for advanced SSR scenarios.\n */\n sheet?: undefined | StyleSheet;\n /**\n * Starting in v6, styled-components no longer does its own prop validation\n * and recommends use of transient props \"$prop\" to pass style-only props to\n * components. If for some reason you are not able to use transient props, a\n * prop validation function can be provided via `StyleSheetManager`, such as\n * `@emotion/is-prop-valid`.\n *\n * When the return value is `true`, props will be forwarded to the DOM/underlying\n * component. If return value is `false`, the prop will be discarded after styles\n * are calculated.\n *\n * Manually composing `styled.{element}.withConfig({shouldForwardProp})` will\n * override this default.\n */\n shouldForwardProp?: undefined | IStyleSheetContext['shouldForwardProp'];\n /**\n * An array of plugins to be run by stylis (style processor) during compilation.\n * Check out [what's available on npm*](https://www.npmjs.com/search?q=keywords%3Astylis).\n *\n * \\* The plugin(s) must be compatible with stylis v4 or above.\n */\n stylisPlugins?: undefined | stylis.Middleware[];\n /**\n * Provide an alternate DOM node to host generated styles; useful for iframes.\n */\n target?: undefined | InsertionTarget;\n}>;\n\nexport function StyleSheetManager(props: IStyleSheetManager): React.JSX.Element {\n const [plugins, setPlugins] = useState(props.stylisPlugins);\n const { styleSheet } = useStyleSheetContext();\n\n const resolvedStyleSheet = useMemo(() => {\n let sheet = styleSheet;\n\n if (props.sheet) {\n sheet = props.sheet;\n } else if (props.target) {\n sheet = sheet.reconstructWithOptions({ target: props.target }, false);\n }\n\n if (props.disableCSSOMInjection) {\n sheet = sheet.reconstructWithOptions({ useCSSOMInjection: false });\n }\n\n return sheet;\n }, [props.disableCSSOMInjection, props.sheet, props.target, styleSheet]);\n\n const stylis = useMemo(\n () =>\n createStylisInstance({\n options: { namespace: props.namespace, prefix: props.enableVendorPrefixes },\n plugins,\n }),\n [props.enableVendorPrefixes, props.namespace, plugins]\n );\n\n useEffect(() => {\n if (!shallowequal(plugins, props.stylisPlugins)) setPlugins(props.stylisPlugins);\n }, [props.stylisPlugins]);\n\n const styleSheetContextValue = useMemo(\n () => ({\n shouldForwardProp: props.shouldForwardProp,\n styleSheet: resolvedStyleSheet,\n stylis,\n }),\n [props.shouldForwardProp, resolvedStyleSheet, stylis]\n );\n\n return (\n <StyleSheetContext.Provider value={styleSheetContextValue}>\n <StylisContext.Provider value={stylis}>{props.children}</StylisContext.Provider>\n </StyleSheetContext.Provider>\n );\n}\n","import StyleSheet from '../sheet';\nimport { Keyframes as KeyframesType, Stringifier } from '../types';\nimport styledError from '../utils/error';\nimport { setToString } from '../utils/setToString';\nimport { mainStylis } from './StyleSheetManager';\n\nexport default class Keyframes implements KeyframesType {\n id: string;\n name: string;\n rules: string;\n\n constructor(name: string, rules: string) {\n this.name = name;\n this.id = `sc-keyframes-${name}`;\n this.rules = rules;\n\n setToString(this, () => {\n throw styledError(12, String(this.name));\n });\n }\n\n inject = (styleSheet: StyleSheet, stylisInstance: Stringifier = mainStylis): void => {\n const resolvedName = this.name + stylisInstance.hash;\n\n if (!styleSheet.hasNameForId(this.id, resolvedName)) {\n styleSheet.insertRules(\n this.id,\n resolvedName,\n stylisInstance(this.rules, resolvedName, '@keyframes')\n );\n }\n };\n\n getName(stylisInstance: Stringifier = mainStylis): string {\n return this.name + stylisInstance.hash;\n }\n}\n","const isUpper = (c: string) => c >= 'A' && c <= 'Z';\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n */\nexport default function hyphenateStyleName(string: string): string {\n let output = '';\n\n for (let i = 0; i < string.length; i++) {\n const c = string[i];\n // Check for CSS variable prefix\n if (i === 1 && c === '-' && string[0] === '-') {\n return string;\n }\n\n if (isUpper(c)) {\n output += '-' + c.toLowerCase();\n } else {\n output += c;\n }\n }\n\n return output.startsWith('ms-') ? '-' + output : output;\n}\n","import Keyframes from '../models/Keyframes';\nimport StyleSheet from '../sheet';\nimport {\n AnyComponent,\n Dict,\n ExecutionContext,\n Interpolation,\n IStyledComponent,\n RuleSet,\n Stringifier,\n StyledObject,\n} from '../types';\nimport addUnitIfNeeded from './addUnitIfNeeded';\nimport { EMPTY_ARRAY } from './empties';\nimport getComponentName from './getComponentName';\nimport hyphenate from './hyphenateStyleName';\nimport isFunction from './isFunction';\nimport isPlainObject from './isPlainObject';\nimport isStatelessFunction from './isStatelessFunction';\nimport isStyledComponent from './isStyledComponent';\n\n/**\n * It's falsish not falsy because 0 is allowed.\n */\nconst isFalsish = (chunk: any): chunk is undefined | null | false | '' =>\n chunk === undefined || chunk === null || chunk === false || chunk === '';\n\nexport const objToCssArray = (obj: Dict<any>): string[] => {\n const rules = [];\n\n for (const key in obj) {\n const val = obj[key];\n if (!obj.hasOwnProperty(key) || isFalsish(val)) continue;\n\n // @ts-expect-error Property 'isCss' does not exist on type 'any[]'\n if ((Array.isArray(val) && val.isCss) || isFunction(val)) {\n rules.push(`${hyphenate(key)}:`, val, ';');\n } else if (isPlainObject(val)) {\n rules.push(`${key} {`, ...objToCssArray(val), '}');\n } else {\n rules.push(`${hyphenate(key)}: ${addUnitIfNeeded(key, val)};`);\n }\n }\n\n return rules;\n};\n\nexport default function flatten<Props extends object>(\n chunk: Interpolation<object>,\n executionContext?: (ExecutionContext & Props) | undefined,\n styleSheet?: StyleSheet | undefined,\n stylisInstance?: Stringifier | undefined\n): RuleSet<Props> {\n if (isFalsish(chunk)) {\n return [];\n }\n\n /* Handle other components */\n if (isStyledComponent(chunk)) {\n return [`.${(chunk as unknown as IStyledComponent<'web', any>).styledComponentId}`];\n }\n\n /* Either execute or defer the function */\n if (isFunction(chunk)) {\n if (isStatelessFunction(chunk) && executionContext) {\n const result = chunk(executionContext);\n\n if (\n process.env.NODE_ENV !== 'production' &&\n typeof result === 'object' &&\n !Array.isArray(result) &&\n !(result instanceof Keyframes) &&\n !isPlainObject(result) &&\n result !== null\n ) {\n console.error(\n `${getComponentName(\n chunk as AnyComponent\n )} is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.`\n );\n }\n\n return flatten<Props>(result, executionContext, styleSheet, stylisInstance);\n } else {\n return [chunk as unknown as IStyledComponent<'web'>];\n }\n }\n\n if (chunk instanceof Keyframes) {\n if (styleSheet) {\n chunk.inject(styleSheet, stylisInstance);\n return [chunk.getName(stylisInstance)];\n } else {\n return [chunk];\n }\n }\n\n /* Handle objects */\n if (isPlainObject(chunk)) {\n return objToCssArray(chunk as StyledObject<Props>);\n }\n\n if (!Array.isArray(chunk)) {\n return [chunk.toString()];\n }\n\n return flatMap(chunk, chunklet =>\n flatten<Props>(chunklet, executionContext, styleSheet, stylisInstance)\n );\n}\n\nfunction flatMap<T, U>(array: T[], transform: (value: T, index: number, array: T[]) => U[]): U[] {\n return Array.prototype.concat.apply(EMPTY_ARRAY, array.map(transform));\n}\n","import unitless from '@emotion/unitless';\n\n// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js\nexport default function addUnitIfNeeded(name: string, value: any) {\n // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133\n if (value == null || typeof value === 'boolean' || value === '') {\n return '';\n }\n\n if (typeof value === 'number' && value !== 0 && !(name in unitless) && !name.startsWith('--')) {\n return `${value}px`; // Presumes implicit 'px' suffix for unitless numbers except for CSS variables\n }\n\n return String(value).trim();\n}\n","import isFunction from './isFunction';\n\nexport default function isStatelessFunction(test: any): test is Function {\n return isFunction(test) && !(test.prototype && test.prototype.isReactComponent);\n}\n","import { RuleSet } from '../types';\nimport isFunction from './isFunction';\nimport isStyledComponent from './isStyledComponent';\n\nexport default function isStaticRules<Props extends object>(rules: RuleSet<Props>) {\n for (let i = 0; i < rules.length; i += 1) {\n const rule = rules[i];\n\n if (isFunction(rule) && !isStyledComponent(rule)) {\n // functions are allowed to be static if they're just being\n // used to get the classname of a nested styled component\n return false;\n }\n }\n\n return true;\n}\n","import { SC_VERSION } from '../constants';\nimport StyleSheet from '../sheet';\nimport { ExecutionContext, RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport generateName from '../utils/generateAlphabeticName';\nimport { hash, phash } from '../utils/hash';\nimport isStaticRules from '../utils/isStaticRules';\nimport { joinStringArray, joinStrings } from '../utils/joinStrings';\n\nconst SEED = hash(SC_VERSION);\n\n/**\n * ComponentStyle is all the CSS-specific stuff, not the React-specific stuff.\n */\nexport default class ComponentStyle {\n baseHash: number;\n baseStyle: ComponentStyle | null | undefined;\n componentId: string;\n isStatic: boolean;\n rules: RuleSet<any>;\n staticRulesId: string;\n\n constructor(rules: RuleSet<any>, componentId: string, baseStyle?: ComponentStyle | undefined) {\n this.rules = rules;\n this.staticRulesId = '';\n this.isStatic =\n process.env.NODE_ENV === 'production' &&\n (baseStyle === undefined || baseStyle.isStatic) &&\n isStaticRules(rules);\n this.componentId = componentId;\n this.baseHash = phash(SEED, componentId);\n this.baseStyle = baseStyle;\n\n // NOTE: This registers the componentId, which ensures a consistent order\n // for this component's styles compared to others\n StyleSheet.registerId(componentId);\n }\n\n generateAndInjectStyles(\n executionContext: ExecutionContext,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ): string {\n let names = this.baseStyle\n ? this.baseStyle.generateAndInjectStyles(executionContext, styleSheet, stylis)\n : '';\n\n // force dynamic classnames if user-supplied stylis plugins are in use\n if (this.isStatic && !stylis.hash) {\n if (this.staticRulesId && styleSheet.hasNameForId(this.componentId, this.staticRulesId)) {\n names = joinStrings(names, this.staticRulesId);\n } else {\n const cssStatic = joinStringArray(\n flatten(this.rules, executionContext, styleSheet, stylis) as string[]\n );\n const name = generateName(phash(this.baseHash, cssStatic) >>> 0);\n\n if (!styleSheet.hasNameForId(this.componentId, name)) {\n const cssStaticFormatted = stylis(cssStatic, `.${name}`, undefined, this.componentId);\n styleSheet.insertRules(this.componentId, name, cssStaticFormatted);\n }\n\n names = joinStrings(names, name);\n this.staticRulesId = name;\n }\n } else {\n let dynamicHash = phash(this.baseHash, stylis.hash);\n let css = '';\n\n for (let i = 0; i < this.rules.length; i++) {\n const partRule = this.rules[i];\n\n if (typeof partRule === 'string') {\n css += partRule;\n\n if (process.env.NODE_ENV !== 'production') dynamicHash = phash(dynamicHash, partRule);\n } else if (partRule) {\n const partString = joinStringArray(\n flatten(partRule, executionContext, styleSheet, stylis) as string[]\n );\n // The same value can switch positions in the array, so we include \"i\" in the hash.\n dynamicHash = phash(dynamicHash, partString + i);\n css += partString;\n }\n }\n\n if (css) {\n const name = generateName(dynamicHash >>> 0);\n\n if (!styleSheet.hasNameForId(this.componentId, name)) {\n styleSheet.insertRules(\n this.componentId,\n name,\n stylis(css, `.${name}`, undefined, this.componentId)\n );\n }\n\n names = joinStrings(names, name);\n }\n }\n\n return names;\n }\n}\n","import React, { useContext, useMemo } from 'react';\nimport styledError from '../utils/error';\nimport isFunction from '../utils/isFunction';\n\n/**\n * Override DefaultTheme to get accurate typings for your project.\n *\n * ```\n * // create styled-components.d.ts in your project source\n * // if it isn't being picked up, check tsconfig compilerOptions.types\n * import type { CSSProp } from \"styled-components\";\n * import Theme from './theme';\n *\n * type ThemeType = typeof Theme;\n *\n * declare module \"styled-components\" {\n * export interface DefaultTheme extends ThemeType {}\n * }\n *\n * declare module \"react\" {\n * interface DOMAttributes<T> {\n * css?: CSSProp;\n * }\n * }\n * ```\n */\nexport interface DefaultTheme {\n [key: string]: any;\n}\n\ntype ThemeFn = (outerTheme?: DefaultTheme | undefined) => DefaultTheme;\ntype ThemeArgument = DefaultTheme | ThemeFn;\n\ntype Props = {\n children?: React.ReactNode;\n theme: ThemeArgument;\n};\n\nexport const ThemeContext = React.createContext<DefaultTheme | undefined>(undefined);\n\nexport const ThemeConsumer = ThemeContext.Consumer;\n\nfunction mergeTheme(theme: ThemeArgument, outerTheme?: DefaultTheme | undefined): DefaultTheme {\n if (!theme) {\n throw styledError(14);\n }\n\n if (isFunction(theme)) {\n const themeFn = theme as ThemeFn;\n const mergedTheme = themeFn(outerTheme);\n\n if (\n process.env.NODE_ENV !== 'production' &&\n (mergedTheme === null || Array.isArray(mergedTheme) || typeof mergedTheme !== 'object')\n ) {\n throw styledError(7);\n }\n\n return mergedTheme;\n }\n\n if (Array.isArray(theme) || typeof theme !== 'object') {\n throw styledError(8);\n }\n\n return outerTheme ? { ...outerTheme, ...theme } : theme;\n}\n\n/**\n * Returns the current theme (as provided by the closest ancestor `ThemeProvider`.)\n *\n * If no `ThemeProvider` is found, the function will error. If you need access to the theme in an\n * uncertain composition scenario, `React.useContext(ThemeContext)` will not emit an error if there\n * is no `ThemeProvider` ancestor.\n */\nexport function useTheme(): DefaultTheme {\n const theme = useContext(ThemeContext);\n\n if (!theme) {\n throw styledError(18);\n }\n\n return theme;\n}\n\n/**\n * Provide a theme to an entire react component tree via context\n */\nexport default function ThemeProvider(props: Props): React.JSX.Element | null {\n const outerTheme = React.useContext(ThemeContext);\n const themeContext = useMemo(\n () => mergeTheme(props.theme, outerTheme),\n [props.theme, outerTheme]\n );\n\n if (!props.children) {\n return null;\n }\n\n return <ThemeContext.Provider value={themeContext}>{props.children}</ThemeContext.Provider>;\n}\n","import isPropValid from '@emotion/is-prop-valid';\nimport React, { createElement, Ref, useDebugValue } from 'react';\nimport { SC_VERSION } from '../constants';\nimport type {\n AnyComponent,\n Attrs,\n BaseObject,\n Dict,\n ExecutionContext,\n ExecutionProps,\n IStyledComponent,\n IStyledComponentFactory,\n IStyledStatics,\n OmitNever,\n RuleSet,\n StyledOptions,\n WebTarget,\n} from '../types';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport createWarnTooManyClasses from '../utils/createWarnTooManyClasses';\nimport determineTheme from '../utils/determineTheme';\nimport domElements from '../utils/domElements';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '../utils/empties';\nimport escape from '../utils/escape';\nimport generateComponentId from '../utils/generateComponentId';\nimport generateDisplayName from '../utils/generateDisplayName';\nimport hoist from '../utils/hoist';\nimport isFunction from '../utils/isFunction';\nimport isStyledComponent from '../utils/isStyledComponent';\nimport isTag from '../utils/isTag';\nimport { joinStrings } from '../utils/joinStrings';\nimport merge from '../utils/mixinDeep';\nimport { setToString } from '../utils/setToString';\nimport ComponentStyle from './ComponentStyle';\nimport { useStyleSheetContext } from './StyleSheetManager';\nimport { DefaultTheme, ThemeContext } from './ThemeProvider';\n\nconst identifiers: { [key: string]: number } = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(\n displayName?: string | undefined,\n parentComponentId?: string | undefined\n): string {\n const name = typeof displayName !== 'string' ? 'sc' : escape(displayName);\n // Ensure that no displayName can lead to duplicate componentIds\n identifiers[name] = (identifiers[name] || 0) + 1;\n\n const componentId = `${name}-${generateComponentId(\n // SC_VERSION gives us isolation between multiple runtimes on the page at once\n // this is improved further with use of the babel plugin \"namespace\" feature\n SC_VERSION + name + identifiers[name]\n )}`;\n\n return parentComponentId ? `${parentComponentId}-${componentId}` : componentId;\n}\n\nfunction useInjectedStyle<T extends ExecutionContext>(\n componentStyle: ComponentStyle,\n resolvedAttrs: T\n) {\n const ssc = useStyleSheetContext();\n\n const className = componentStyle.generateAndInjectStyles(\n resolvedAttrs,\n ssc.styleSheet,\n ssc.stylis\n );\n\n if (process.env.NODE_ENV !== 'production') useDebugValue(className);\n\n return className;\n}\n\nfunction resolveContext<Props extends object>(\n attrs: Attrs<React.HTMLAttributes<Element> & Props>[],\n props: React.HTMLAttributes<Element> & ExecutionProps & Props,\n theme: DefaultTheme\n) {\n const context: React.HTMLAttributes<Element> &\n ExecutionContext &\n Props & { [key: string]: any; class?: string; ref?: React.Ref<any> } = {\n ...props,\n // unset, add `props.className` back at the end so props always \"wins\"\n className: undefined,\n theme,\n };\n let attrDef;\n\n for (let i = 0; i < attrs.length; i += 1) {\n attrDef = attrs[i];\n const resolvedAttrDef = isFunction(attrDef) ? attrDef(context) : attrDef;\n\n for (const key in resolvedAttrDef) {\n context[key as keyof typeof context] =\n key === 'className'\n ? joinStrings(context[key] as string | undefined, resolvedAttrDef[key] as string)\n : key === 'style'\n ? { ...context[key], ...resolvedAttrDef[key] }\n : resolvedAttrDef[key as keyof typeof resolvedAttrDef];\n }\n }\n\n if (props.className) {\n context.className = joinStrings(context.className, props.className);\n }\n\n return context;\n}\n\nlet seenUnknownProps = new Set();\n\nfunction useStyledComponentImpl<Props extends object>(\n forwardedComponent: IStyledComponent<'web', Props>,\n props: ExecutionProps & Props,\n forwardedRef: Ref<Element>\n) {\n const {\n attrs: componentAttrs,\n componentStyle,\n defaultProps,\n foldedComponentIds,\n styledComponentId,\n target,\n } = forwardedComponent;\n\n const contextTheme = React.useContext(ThemeContext);\n const ssc = useStyleSheetContext();\n const shouldForwardProp = forwardedComponent.shouldForwardProp || ssc.shouldForwardProp;\n\n if (process.env.NODE_ENV !== 'production') useDebugValue(styledComponentId);\n\n // NOTE: the non-hooks version only subscribes to this when !componentStyle.isStatic,\n // but that'd be against the rules-of-hooks. We could be naughty and do it anyway as it\n // should be an immutable value, but behave for now.\n const theme = determineTheme(props, contextTheme, defaultProps) || EMPTY_OBJECT;\n\n const context = resolveContext<Props>(componentAttrs, props, theme);\n const elementToBeCreated: WebTarget = context.as || target;\n const propsForElement: Dict<any> = {};\n\n for (const key in context) {\n if (context[key] === undefined) {\n // Omit undefined values from props passed to wrapped element.\n // This enables using .attrs() to remove props, for example.\n } else if (key[0] === '$' || key === 'as' || (key === 'theme' && context.theme === theme)) {\n // Omit transient props and execution props.\n } else if (key === 'forwardedAs') {\n propsForElement.as = context.forwardedAs;\n } else if (!shouldForwardProp || shouldForwardProp(key, elementToBeCreated)) {\n propsForElement[key] = context[key];\n\n if (\n !shouldForwardProp &&\n process.env.NODE_ENV === 'development' &&\n !isPropValid(key) &&\n !seenUnknownProps.has(key) &&\n // Only warn on DOM Element.\n domElements.has(elementToBeCreated as any)\n ) {\n seenUnknownProps.add(key);\n console.warn(\n `styled-components: it looks like an unknown prop \"${key}\" is being sent through to the DOM, which will likely trigger a React console error. If you would like automatic filtering of unknown props, you can opt-into that behavior via \\`<StyleSheetManager shouldForwardProp={...}>\\` (connect an API like \\`@emotion/is-prop-valid\\`) or consider using transient props (\\`$\\` prefix for automatic filtering.)`\n );\n }\n }\n }\n\n const generatedClassName = useInjectedStyle(componentStyle, context);\n\n if (process.env.NODE_ENV !== 'production' && forwardedComponent.warnTooManyClasses) {\n forwardedComponent.warnTooManyClasses(generatedClassName);\n }\n\n let classString = joinStrings(foldedComponentIds, styledComponentId);\n if (generatedClassName) {\n classString += ' ' + generatedClassName;\n }\n if (context.className) {\n classString += ' ' + context.className;\n }\n\n propsForElement[\n // handle custom elements which React doesn't properly alias\n isTag(elementToBeCreated) &&\n !domElements.has(elementToBeCreated as Extract<typeof domElements, string>)\n ? 'class'\n : 'className'\n ] = classString;\n\n propsForElement.ref = forwardedRef;\n\n return createElement(elementToBeCreated, propsForElement);\n}\n\nfunction createStyledComponent<\n Target extends WebTarget,\n OuterProps extends object,\n Statics extends object = BaseObject,\n>(\n target: Target,\n options: StyledOptions<'web', OuterProps>,\n rules: RuleSet<OuterProps>\n): ReturnType<IStyledComponentFactory<'web', Target, OuterProps, Statics>> {\n const isTargetStyledComp = isStyledComponent(target);\n const styledComponentTarget = target as IStyledComponent<'web', OuterProps>;\n const isCompositeComponent = !isTag(target);\n\n const {\n attrs = EMPTY_ARRAY,\n componentId = generateId(options.displayName, options.parentComponentId),\n displayName = generateDisplayName(target),\n } = options;\n\n const styledComponentId =\n options.displayName && options.componentId\n ? `${escape(options.displayName)}-${options.componentId}`\n : options.componentId || componentId;\n\n // fold the underlying StyledComponent attrs up (implicit extend)\n const finalAttrs =\n isTargetStyledComp && styledComponentTarget.attrs\n ? styledComponentTarget.attrs.concat(attrs as unknown as Attrs<OuterProps>[]).filter(Boolean)\n : (attrs as Attrs<OuterProps>[]);\n\n let { shouldForwardProp } = options;\n\n if (isTargetStyledComp && styledComponentTarget.shouldForwardProp) {\n const shouldForwardPropFn = styledComponentTarget.shouldForwardProp;\n\n if (options.shouldForwardProp) {\n const passedShouldForwardPropFn = options.shouldForwardProp;\n\n // compose nested shouldForwardProp calls\n shouldForwardProp = (prop, elementToBeCreated) =>\n shouldForwardPropFn(prop, elementToBeCreated) &&\n passedShouldForwardPropFn(prop, elementToBeCreated);\n } else {\n shouldForwardProp = shouldForwardPropFn;\n }\n }\n\n const componentStyle = new ComponentStyle(\n rules,\n styledComponentId,\n isTargetStyledComp ? (styledComponentTarget.componentStyle as ComponentStyle) : undefined\n );\n\n function forwardRefRender(props: ExecutionProps & OuterProps, ref: Ref<Element>) {\n return useStyledComponentImpl<OuterProps>(WrappedStyledComponent, props, ref);\n }\n\n forwardRefRender.displayName = displayName;\n\n /**\n * forwardRef creates a new interim component, which we'll take advantage of\n * instead of extending ParentComponent to create _another_ interim class\n */\n let WrappedStyledComponent = React.forwardRef(forwardRefRender) as unknown as IStyledComponent<\n 'web',\n any\n > &\n Statics;\n WrappedStyledComponent.attrs = finalAttrs;\n WrappedStyledComponent.componentStyle = componentStyle;\n WrappedStyledComponent.displayName = displayName;\n WrappedStyledComponent.shouldForwardProp = shouldForwardProp;\n\n // this static is used to preserve the cascade of static classes for component selector\n // purposes; this is especially important with usage of the css prop\n WrappedStyledComponent.foldedComponentIds = isTargetStyledComp\n ? joinStrings(styledComponentTarget.foldedComponentIds, styledComponentTarget.styledComponentId)\n : '';\n\n WrappedStyledComponent.styledComponentId = styledComponentId;\n\n // fold the underlying StyledComponent target up since we folded the styles\n WrappedStyledComponent.target = isTargetStyledComp ? styledComponentTarget.target : target;\n\n Object.defineProperty(WrappedStyledComponent, 'defaultProps', {\n get() {\n return this._foldedDefaultProps;\n },\n\n set(obj) {\n this._foldedDefaultProps = isTargetStyledComp\n ? merge({}, styledComponentTarget.defaultProps, obj)\n : obj;\n },\n });\n\n if (process.env.NODE_ENV !== 'production') {\n checkDynamicCreation(displayName, styledComponentId);\n\n WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(\n displayName,\n styledComponentId\n );\n }\n\n setToString(WrappedStyledComponent, () => `.${WrappedStyledComponent.styledComponentId}`);\n\n if (isCompositeComponent) {\n const compositeComponentTarget = target as AnyComponent;\n\n hoist<typeof WrappedStyledComponent, typeof compositeComponentTarget>(\n WrappedStyledComponent,\n compositeComponentTarget,\n {\n // all SC-specific things should not be hoisted\n attrs: true,\n componentStyle: true,\n displayName: true,\n foldedComponentIds: true,\n shouldForwardProp: true,\n styledComponentId: true,\n target: true,\n } as { [key in keyof OmitNever<IStyledStatics<'web', OuterProps>>]: true }\n );\n }\n\n return WrappedStyledComponent;\n}\n\nexport default createStyledComponent;\n","import { StyledTarget } from '../types';\nimport getComponentName from './getComponentName';\nimport isTag from './isTag';\n\nexport default function generateDisplayName(target: StyledTarget<any>) {\n return isTag(target) ? `styled.${target}` : `Styled(${getComponentName(target)})`;\n}\n","import { Interpolation } from '../types';\n\nexport default function interleave<Props extends object>(\n strings: readonly string[],\n interpolations: Interpolation<Props>[]\n): Interpolation<Props>[] {\n const result: Interpolation<Props>[] = [strings[0]];\n\n for (let i = 0, len = interpolations.length; i < len; i += 1) {\n result.push(interpolations[i], strings[i + 1]);\n }\n\n return result;\n}\n","import {\n BaseObject,\n Interpolation,\n NoInfer,\n RuleSet,\n StyledObject,\n StyleFunction,\n Styles,\n} from '../types';\nimport { EMPTY_ARRAY } from '../utils/empties';\nimport flatten from '../utils/flatten';\nimport interleave from '../utils/interleave';\nimport isFunction from '../utils/isFunction';\nimport isPlainObject from '../utils/isPlainObject';\n\n/**\n * Used when flattening object styles to determine if we should\n * expand an array of styles.\n */\nconst addTag = <T extends RuleSet<any>>(arg: T): T & { isCss: true } =>\n Object.assign(arg, { isCss: true } as const);\n\nfunction css(styles: Styles<object>, ...interpolations: Interpolation<object>[]): RuleSet<object>;\nfunction css<Props extends object>(\n styles: Styles<NoInfer<Props>>,\n ...interpolations: Interpolation<NoInfer<Props>>[]\n): RuleSet<NoInfer<Props>>;\nfunction css<Props extends object = BaseObject>(\n styles: Styles<NoInfer<Props>>,\n ...interpolations: Interpolation<NoInfer<Props>>[]\n): RuleSet<NoInfer<Props>> {\n if (isFunction(styles) || isPlainObject(styles)) {\n const styleFunctionOrObject = styles as StyleFunction<Props> | StyledObject<Props>;\n\n return addTag(\n flatten<Props>(\n interleave<Props>(EMPTY_ARRAY, [\n styleFunctionOrObject,\n ...interpolations,\n ]) as Interpolation<object>\n )\n );\n }\n\n const styleStringArray = styles as TemplateStringsArray;\n\n if (\n interpolations.length === 0 &&\n styleStringArray.length === 1 &&\n typeof styleStringArray[0] === 'string'\n ) {\n return flatten<Props>(styleStringArray);\n }\n\n return addTag(\n flatten<Props>(interleave<Props>(styleStringArray, interpolations) as Interpolation<object>)\n );\n}\n\nexport default css;\n","import {\n Attrs,\n BaseObject,\n ExecutionProps,\n Interpolation,\n IStyledComponent,\n IStyledComponentFactory,\n KnownTarget,\n NoInfer,\n Runtime,\n StyledOptions,\n StyledTarget,\n Styles,\n Substitute,\n} from '../types';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport styledError from '../utils/error';\nimport css from './css';\n\ntype AttrsResult<T extends Attrs<any>> = T extends (...args: any) => infer P\n ? P extends object\n ? P\n : never\n : T extends object\n ? T\n : never;\n\n/**\n * Based on Attrs being a simple object or function that returns\n * a prop object, inspect the attrs result and attempt to extract\n * any \"as\" prop usage to modify the runtime target.\n */\ntype AttrsTarget<\n R extends Runtime,\n T extends Attrs<any>,\n FallbackTarget extends StyledTarget<R>,\n Result extends ExecutionProps = AttrsResult<T>,\n> = Result extends { as: infer RuntimeTarget }\n ? RuntimeTarget extends KnownTarget\n ? RuntimeTarget\n : FallbackTarget\n : FallbackTarget;\n\nexport interface Styled<\n R extends Runtime,\n Target extends StyledTarget<R>,\n OuterProps extends object,\n OuterStatics extends object = BaseObject,\n> {\n <Props extends object = BaseObject, Statics extends object = BaseObject>(\n initialStyles: Styles<Substitute<OuterProps, NoInfer<Props>>>,\n ...interpolations: Interpolation<Substitute<OuterProps, NoInfer<Props>>>[]\n ): IStyledComponent<R, Substitute<OuterProps, Props>> &\n OuterStatics &\n Statics &\n (R extends 'web'\n ? Target extends string\n ? {}\n : Omit<Target, keyof React.Component<any>>\n : {});\n\n attrs: <\n Props extends object = BaseObject,\n PrivateMergedProps extends object = Substitute<OuterProps, Props>,\n PrivateAttrsArg extends Attrs<PrivateMergedProps> = Attrs<PrivateMergedProps>,\n PrivateResolvedTarget extends StyledTarget<R> = AttrsTarget<R, PrivateAttrsArg, Target>,\n >(\n attrs: PrivateAttrsArg\n ) => Styled<\n R,\n PrivateResolvedTarget,\n PrivateResolvedTarget extends KnownTarget\n ? Substitute<\n Substitute<OuterProps, React.ComponentPropsWithRef<PrivateResolvedTarget>>,\n Props\n >\n : PrivateMergedProps,\n OuterStatics\n >;\n\n withConfig: (config: StyledOptions<R, OuterProps>) => Styled<R, Target, OuterProps, OuterStatics>;\n}\n\nexport default function constructWithOptions<\n R extends Runtime,\n Target extends StyledTarget<R>,\n OuterProps extends object = Target extends KnownTarget\n ? React.ComponentPropsWithRef<Target>\n : BaseObject,\n OuterStatics extends object = BaseObject,\n>(\n componentConstructor: IStyledComponentFactory<R, StyledTarget<R>, object, any>,\n tag: StyledTarget<R>,\n options: StyledOptions<R, OuterProps> = EMPTY_OBJECT\n): Styled<R, Target, OuterProps, OuterStatics> {\n /**\n * We trust that the tag is a valid component as long as it isn't\n * falsish. Typically the tag here is a string or function (i.e.\n * class or pure function component), however a component may also be\n * an object if it uses another utility, e.g. React.memo. React will\n * output an appropriate warning however if the `tag` isn't valid.\n */\n if (!tag) {\n throw styledError(1, tag);\n }\n\n /* This is callable directly as a template function */\n const templateFunction = <Props extends object = BaseObject, Statics extends object = BaseObject>(\n initialStyles: Styles<Substitute<OuterProps, Props>>,\n ...interpolations: Interpolation<Substitute<OuterProps, Props>>[]\n ) =>\n componentConstructor<Substitute<OuterProps, Props>, Statics>(\n tag,\n options as StyledOptions<R, Substitute<OuterProps, Props>>,\n css<Substitute<OuterProps, Props>>(initialStyles, ...interpolations)\n );\n\n /**\n * Attrs allows for accomplishing two goals:\n *\n * 1. Backfilling props at runtime more expressively than defaultProps\n * 2. Amending the prop interface of a wrapped styled component\n */\n templateFunction.attrs = <\n Props extends object = BaseObject,\n PrivateMergedProps extends object = Substitute<OuterProps, Props>,\n PrivateAttrsArg extends Attrs<PrivateMergedProps> = Attrs<PrivateMergedProps>,\n PrivateResolvedTarget extends StyledTarget<R> = AttrsTarget<R, PrivateAttrsArg, Target>,\n >(\n attrs: PrivateAttrsArg\n ) =>\n constructWithOptions<\n R,\n PrivateResolvedTarget,\n PrivateResolvedTarget extends KnownTarget\n ? Substitute<\n Substitute<OuterProps, React.ComponentPropsWithRef<PrivateResolvedTarget>>,\n Props\n >\n : PrivateMergedProps,\n OuterStatics\n >(componentConstructor, tag, {\n ...options,\n attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean),\n });\n\n /**\n * If config methods are called, wrap up a new template function\n * and merge options.\n */\n templateFunction.withConfig = (config: StyledOptions<R, OuterProps>) =>\n constructWithOptions<R, Target, OuterProps, OuterStatics>(componentConstructor, tag, {\n ...options,\n ...config,\n });\n\n return templateFunction;\n}\n","import * as React from 'react';\nimport createStyledComponent from '../models/StyledComponent';\nimport { BaseObject, KnownTarget, WebTarget } from '../types';\nimport domElements, { SupportedHTMLElements } from '../utils/domElements';\nimport constructWithOptions, { Styled as StyledInstance } from './constructWithOptions';\n\nconst baseStyled = <Target extends WebTarget, InjectedProps extends object = BaseObject>(\n tag: Target\n) =>\n constructWithOptions<\n 'web',\n Target,\n Target extends KnownTarget ? React.ComponentPropsWithRef<Target> & InjectedProps : InjectedProps\n >(createStyledComponent, tag);\n\nconst styled = baseStyled as typeof baseStyled & {\n [E in SupportedHTMLElements]: StyledInstance<'web', E, React.JSX.IntrinsicElements[E]>;\n};\n\n// Shorthands for all valid HTML Elements\ndomElements.forEach(domElement => {\n // @ts-expect-error some react typing bs\n styled[domElement] = baseStyled<typeof domElement>(domElement);\n});\n\nexport default styled;\nexport { StyledInstance };\n\n/**\n * This is the type of the `styled` HOC.\n */\nexport type Styled = typeof styled;\n\n/**\n * Use this higher-order type for scenarios where you are wrapping `styled`\n * and providing extra props as a third-party library.\n */\nexport type LibraryStyled<LibraryProps extends object = BaseObject> = <Target extends WebTarget>(\n tag: Target\n) => typeof baseStyled<Target, LibraryProps>;\n","import StyleSheet from '../sheet';\nimport { ExecutionContext, RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport isStaticRules from '../utils/isStaticRules';\nimport { joinStringArray } from '../utils/joinStrings';\n\nexport default class GlobalStyle<Props extends object> {\n componentId: string;\n isStatic: boolean;\n rules: RuleSet<Props>;\n\n constructor(rules: RuleSet<Props>, componentId: string) {\n this.rules = rules;\n this.componentId = componentId;\n this.isStatic = isStaticRules(rules);\n\n // pre-register the first instance to ensure global styles\n // load before component ones\n StyleSheet.registerId(this.componentId + 1);\n }\n\n createStyles(\n instance: number,\n executionContext: ExecutionContext & Props,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ): void {\n const flatCSS = joinStringArray(\n flatten(this.rules as RuleSet<object>, executionContext, styleSheet, stylis) as string[]\n );\n const css = stylis(flatCSS, '');\n const id = this.componentId + instance;\n\n // NOTE: We use the id as a name as well, since these rules never change\n styleSheet.insertRules(id, id, css);\n }\n\n removeStyles(instance: number, styleSheet: StyleSheet): void {\n styleSheet.clearRules(this.componentId + instance);\n }\n\n renderStyles(\n instance: number,\n executionContext: ExecutionContext & Props,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ): void {\n if (instance > 2) StyleSheet.registerId(this.componentId + instance);\n\n // NOTE: Remove old styles, then inject the new ones\n this.removeStyles(instance, styleSheet);\n this.createStyles(instance, executionContext, styleSheet, stylis);\n }\n}\n","import React from 'react';\nimport { STATIC_EXECUTION_CONTEXT } from '../constants';\nimport GlobalStyle from '../models/GlobalStyle';\nimport { useStyleSheetContext } from '../models/StyleSheetManager';\nimport { DefaultTheme, ThemeContext } from '../models/ThemeProvider';\nimport StyleSheet from '../sheet';\nimport { ExecutionContext, ExecutionProps, Interpolation, Stringifier, Styles } from '../types';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport determineTheme from '../utils/determineTheme';\nimport generateComponentId from '../utils/generateComponentId';\nimport css from './css';\n\nexport default function createGlobalStyle<Props extends object>(\n strings: Styles<Props>,\n ...interpolations: Array<Interpolation<Props>>\n) {\n const rules = css<Props>(strings, ...interpolations);\n const styledComponentId = `sc-global-${generateComponentId(JSON.stringify(rules))}`;\n const globalStyle = new GlobalStyle<Props>(rules, styledComponentId);\n\n if (process.env.NODE_ENV !== 'production') {\n checkDynamicCreation(styledComponentId);\n }\n\n const GlobalStyleComponent: React.ComponentType<ExecutionProps & Props> = props => {\n const ssc = useStyleSheetContext();\n const theme = React.useContext(ThemeContext);\n const instanceRef = React.useRef(ssc.styleSheet.allocateGSInstance(styledComponentId));\n\n const instance = instanceRef.current;\n\n if (process.env.NODE_ENV !== 'production' && React.Children.count(props.children)) {\n console.warn(\n `The global style component ${styledComponentId} was given child JSX. createGlobalStyle does not render children.`\n );\n }\n\n if (\n process.env.NODE_ENV !== 'production' &&\n rules.some(rule => typeof rule === 'string' && rule.indexOf('@import') !== -1)\n ) {\n console.warn(\n `Please do not use @import CSS syntax in createGlobalStyle at this time, as the CSSOM APIs we use in production do not handle it well. Instead, we recommend using a library such as react-helmet to inject a typical <link> meta tag to the stylesheet, or simply embedding it manually in your index.html <head> section for a simpler app.`\n );\n }\n\n if (ssc.styleSheet.server) {\n renderStyles(instance, props, ssc.styleSheet, theme, ssc.stylis);\n }\n\n if (!__SERVER__) {\n React.useLayoutEffect(() => {\n if (!ssc.styleSheet.server) {\n renderStyles(instance, props, ssc.styleSheet, theme, ssc.stylis);\n return () => globalStyle.removeStyles(instance, ssc.styleSheet);\n }\n }, [instance, props, ssc.styleSheet, theme, ssc.stylis]);\n }\n\n return null;\n };\n\n function renderStyles(\n instance: number,\n props: ExecutionProps,\n styleSheet: StyleSheet,\n theme: DefaultTheme | undefined,\n stylis: Stringifier\n ) {\n if (globalStyle.isStatic) {\n globalStyle.renderStyles(\n instance,\n STATIC_EXECUTION_CONTEXT as unknown as ExecutionContext & Props,\n styleSheet,\n stylis\n );\n } else {\n const context = {\n ...props,\n theme: determineTheme(props, theme, GlobalStyleComponent.defaultProps),\n } as ExecutionContext & Props;\n\n globalStyle.renderStyles(instance, context, styleSheet, stylis);\n }\n }\n\n return React.memo(GlobalStyleComponent);\n}\n","import Keyframes from '../models/Keyframes';\nimport { Interpolation, Styles } from '../types';\nimport generateComponentId from '../utils/generateComponentId';\nimport { joinStringArray } from '../utils/joinStrings';\nimport css from './css';\n\nexport default function keyframes<Props extends object = {}>(\n strings: Styles<Props>,\n ...interpolations: Array<Interpolation<Props>>\n): Keyframes {\n /* Warning if you've used keyframes on React Native */\n if (\n process.env.NODE_ENV !== 'production' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative'\n ) {\n console.warn(\n '`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.'\n );\n }\n\n const rules = joinStringArray(css<Props>(strings, ...interpolations) as string[]);\n const name = generateComponentId(rules);\n return new Keyframes(name, rules);\n}\n","import React from 'react';\nimport type * as streamInternal from 'stream';\nimport { Readable } from 'stream';\nimport { IS_BROWSER, SC_ATTR, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport StyleSheet from '../sheet';\nimport styledError from '../utils/error';\nimport { joinStringArray } from '../utils/joinStrings';\nimport getNonce from '../utils/nonce';\nimport { StyleSheetManager } from './StyleSheetManager';\n\ndeclare const __SERVER__: boolean;\n\nconst CLOSING_TAG_R = /^\\s*<\\/[a-z]/i;\n\nexport default class ServerStyleSheet {\n instance: StyleSheet;\n sealed: boolean;\n\n constructor() {\n this.instance = new StyleSheet({ isServer: true });\n this.sealed = false;\n }\n\n _emitSheetCSS = (): string => {\n const css = this.instance.toString();\n if (!css) return '';\n const nonce = getNonce();\n const attrs = [\n nonce && `nonce=\"${nonce}\"`,\n `${SC_ATTR}=\"true\"`,\n `${SC_ATTR_VERSION}=\"${SC_VERSION}\"`,\n ];\n const htmlAttr = joinStringArray(attrs.filter(Boolean) as string[], ' ');\n\n return `<style ${htmlAttr}>${css}</style>`;\n };\n\n collectStyles(children: any): React.JSX.Element {\n if (this.sealed) {\n throw styledError(2);\n }\n\n return <StyleSheetManager sheet={this.instance}>{children}</StyleSheetManager>;\n }\n\n getStyleTags = (): string => {\n if (this.sealed) {\n throw styledError(2);\n }\n\n return this._emitSheetCSS();\n };\n\n getStyleElement = () => {\n if (this.sealed) {\n throw styledError(2);\n }\n\n const css = this.instance.toString();\n if (!css) return [];\n\n const props = {\n [SC_ATTR]: '',\n [SC_ATTR_VERSION]: SC_VERSION,\n dangerouslySetInnerHTML: {\n __html: css,\n },\n };\n\n const nonce = getNonce();\n if (nonce) {\n (props as any).nonce = nonce;\n }\n\n // v4 returned an array for this fn, so we'll do the same for v5 for backward compat\n return [<style {...props} key=\"sc-0-0\" />];\n };\n\n // @ts-expect-error alternate return types are not possible due to code transformation\n interleaveWithNodeStream(input: Readable): streamInternal.Transform {\n if (!__SERVER__ || IS_BROWSER) {\n throw styledError(3);\n } else if (this.sealed) {\n throw styledError(2);\n }\n\n if (__SERVER__) {\n this.seal();\n\n const { Transform } = require('stream');\n\n const readableStream: Readable = input;\n const { instance: sheet, _emitSheetCSS } = this;\n\n const transformer: streamInternal.Transform = new Transform({\n transform: function appendStyleChunks(\n chunk: string,\n /* encoding */\n _: string,\n callback: Function\n ) {\n // Get the chunk and retrieve the sheet's CSS as an HTML chunk,\n // then reset its rules so we get only new ones for the next chunk\n const renderedHtml = chunk.toString();\n const html = _emitSheetCSS();\n\n sheet.clearTag();\n\n // prepend style html to chunk, unless the start of the chunk is a\n // closing tag in which case append right after that\n if (CLOSING_TAG_R.test(renderedHtml)) {\n const endOfClosingTag = renderedHtml.indexOf('>') + 1;\n const before = renderedHtml.slice(0, endOfClosingTag);\n const after = renderedHtml.slice(endOfClosingTag);\n\n this.push(before + html + after);\n } else {\n this.push(html + renderedHtml);\n }\n\n callback();\n },\n });\n\n readableStream.on('error', err => {\n // forward the error to the transform stream\n transformer.emit('error', err);\n });\n\n return readableStream.pipe(transformer);\n }\n }\n\n seal = (): void => {\n this.sealed = true;\n };\n}\n","/* Import singletons */\nimport { SC_ATTR, SC_VERSION } from './constants';\nimport createGlobalStyle from './constructors/createGlobalStyle';\nimport css from './constructors/css';\nimport keyframes from './constructors/keyframes';\n/* Import Higher Order Components */\nimport withTheme from './hoc/withTheme';\n/* Import hooks */\nimport ServerStyleSheet from './models/ServerStyleSheet';\nimport {\n IStyleSheetContext,\n IStyleSheetManager,\n IStylisContext,\n StyleSheetConsumer,\n StyleSheetContext,\n StyleSheetManager,\n} from './models/StyleSheetManager';\n/* Import components */\nimport ThemeProvider, { ThemeConsumer, ThemeContext, useTheme } from './models/ThemeProvider';\nimport isStyledComponent from './utils/isStyledComponent';\n\n/* Warning if you've imported this file on React Native */\nif (\n process.env.NODE_ENV !== 'production' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative'\n) {\n console.warn(\n `It looks like you've imported 'styled-components' on React Native.\\nPerhaps you're looking to import 'styled-components/native'?\\nRead more about this at https://www.styled-components.com/docs/basics#react-native`\n );\n}\n\nconst windowGlobalKey = `__sc-${SC_ATTR}__`;\n\n/* Warning if there are several instances of styled-components */\nif (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n typeof window !== 'undefined'\n) {\n // @ts-expect-error dynamic key not in window object\n window[windowGlobalKey] ||= 0;\n\n // @ts-expect-error dynamic key not in window object\n if (window[windowGlobalKey] === 1) {\n console.warn(\n `It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\\n\\nSee https://s-c.sh/2BAXzed for more info.`\n );\n }\n\n // @ts-expect-error dynamic key not in window object\n window[windowGlobalKey] += 1;\n}\n\n/* Export everything */\nexport * from './secretInternals';\nexport { Attrs, DefaultTheme, ShouldForwardProp } from './types';\nexport {\n IStyleSheetContext,\n IStyleSheetManager,\n IStylisContext,\n ServerStyleSheet,\n StyleSheetConsumer,\n StyleSheetContext,\n StyleSheetManager,\n ThemeConsumer,\n ThemeContext,\n ThemeProvider,\n createGlobalStyle,\n css,\n isStyledComponent,\n keyframes,\n useTheme,\n SC_VERSION as version,\n withTheme,\n};\n","/* UAParser.js v1.0.39\n Copyright © 2012-2021 Faisal Salman <f@faisalman.com>\n MIT License */\n(function(window,undefined){\"use strict\";var LIBVERSION=\"1.0.39\",EMPTY=\"\",UNKNOWN=\"?\",FUNC_TYPE=\"function\",UNDEF_TYPE=\"undefined\",OBJ_TYPE=\"object\",STR_TYPE=\"string\",MAJOR=\"major\",MODEL=\"model\",NAME=\"name\",TYPE=\"type\",VENDOR=\"vendor\",VERSION=\"version\",ARCHITECTURE=\"architecture\",CONSOLE=\"console\",MOBILE=\"mobile\",TABLET=\"tablet\",SMARTTV=\"smarttv\",WEARABLE=\"wearable\",EMBEDDED=\"embedded\",UA_MAX_LENGTH=500;var AMAZON=\"Amazon\",APPLE=\"Apple\",ASUS=\"ASUS\",BLACKBERRY=\"BlackBerry\",BROWSER=\"Browser\",CHROME=\"Chrome\",EDGE=\"Edge\",FIREFOX=\"Firefox\",GOOGLE=\"Google\",HUAWEI=\"Huawei\",LG=\"LG\",MICROSOFT=\"Microsoft\",MOTOROLA=\"Motorola\",OPERA=\"Opera\",SAMSUNG=\"Samsung\",SHARP=\"Sharp\",SONY=\"Sony\",XIAOMI=\"Xiaomi\",ZEBRA=\"Zebra\",FACEBOOK=\"Facebook\",CHROMIUM_OS=\"Chromium OS\",MAC_OS=\"Mac OS\",SUFFIX_BROWSER=\" Browser\";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i])}else{mergedRegexes[i]=regexes[i]}}return mergedRegexes},enumerize=function(arr){var enums={};for(var i=0;i<arr.length;i++){enums[arr[i].toUpperCase()]=arr[i]}return enums},has=function(str1,str2){return typeof str1===STR_TYPE?lowerize(str2).indexOf(lowerize(str1))!==-1:false},lowerize=function(str){return str.toLowerCase()},majorize=function(version){return typeof version===STR_TYPE?version.replace(/[^\\d\\.]/g,EMPTY).split(\".\")[0]:undefined},trim=function(str,len){if(typeof str===STR_TYPE){str=str.replace(/^\\s\\s*/,EMPTY);return typeof len===UNDEF_TYPE?str:str.substring(0,UA_MAX_LENGTH)}};var rgxMapper=function(ua,arrays){var i=0,j,k,p,q,matches,match;while(i<arrays.length&&!matches){var regex=arrays[i],props=arrays[i+1];j=k=0;while(j<regex.length&&!matches){if(!regex[j]){break}matches=regex[j++].exec(ua);if(!!matches){for(p=0;p<props.length;p++){match=matches[++k];q=props[p];if(typeof q===OBJ_TYPE&&q.length>0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length===3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length===4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j<map[i].length;j++){if(has(map[i][j],str)){return i===UNKNOWN?undefined:i}}}else if(has(map[i],str)){return i===UNKNOWN?undefined:i}}return map.hasOwnProperty(\"*\")?map[\"*\"]:str};var oldSafariMap={\"1.0\":\"/8\",1.2:\"/1\",1.3:\"/3\",\"2.0\":\"/412\",\"2.0.2\":\"/416\",\"2.0.3\":\"/417\",\"2.0.4\":\"/419\",\"?\":\"/\"},windowsVersionMap={ME:\"4.90\",\"NT 3.11\":\"NT3.51\",\"NT 4.0\":\"NT4.0\",2e3:\"NT 5.0\",XP:[\"NT 5.1\",\"NT 5.2\"],Vista:\"NT 6.0\",7:\"NT 6.1\",8:\"NT 6.2\",8.1:\"NT 6.3\",10:[\"NT 6.4\",\"NT 10.0\"],RT:\"ARM\"};var regexes={browser:[[/\\b(?:crmo|crios)\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Chrome\"]],[/edg(?:e|ios|a)?\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Edge\"]],[/(opera mini)\\/([-\\w\\.]+)/i,/(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,/(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i],[NAME,VERSION],[/opios[\\/ ]+([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Mini\"]],[/\\bop(?:rg)?x\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" GX\"]],[/\\bopr\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA]],[/\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i],[VERSION,[NAME,\"Baidu\"]],[/(kindle)\\/([\\w\\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i,/(avant|iemobile|slim)\\s?(?:browser)?[\\/ ]?([\\w\\.]*)/i,/(?:ms|\\()(ie) ([\\w\\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio)\\/([-\\w\\.]+)/i,/(heytap|ovi)browser\\/([\\d\\.]+)/i,/(weibo)__([\\d\\.]+)/i],[NAME,VERSION],[/quark(?:pc)?\\/([-\\w\\.]+)/i],[VERSION,[NAME,\"Quark\"]],[/\\bddg\\/([\\w\\.]+)/i],[VERSION,[NAME,\"DuckDuckGo\"]],[/(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i],[VERSION,[NAME,\"UC\"+BROWSER]],[/microm.+\\bqbcore\\/([\\w\\.]+)/i,/\\bqbcore\\/([\\w\\.]+).+microm/i,/micromessenger\\/([\\w\\.]+)/i],[VERSION,[NAME,\"WeChat\"]],[/konqueror\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Konqueror\"]],[/trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i],[VERSION,[NAME,\"IE\"]],[/ya(?:search)?browser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Yandex\"]],[/slbrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Smart Lenovo \"+BROWSER]],[/(avast|avg)\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1 Secure \"+BROWSER],VERSION],[/\\bfocus\\/([\\w\\.]+)/i],[VERSION,[NAME,FIREFOX+\" Focus\"]],[/\\bopt\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Touch\"]],[/coc_coc\\w+\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Coc Coc\"]],[/dolfin\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Dolphin\"]],[/coast\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Coast\"]],[/miuibrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"MIUI \"+BROWSER]],[/fxios\\/([-\\w\\.]+)/i],[VERSION,[NAME,FIREFOX]],[/\\bqihu|(qi?ho?o?|360)browser/i],[[NAME,\"360\"+SUFFIX_BROWSER]],[/\\b(qq)\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1Browser\"],VERSION],[/(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1\"+SUFFIX_BROWSER],VERSION],[/samsungbrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,SAMSUNG+\" Internet\"]],[/(comodo_dragon)\\/([\\w\\.]+)/i],[[NAME,/_/g,\" \"],VERSION],[/metasr[\\/ ]?([\\d\\.]+)/i],[VERSION,[NAME,\"Sogou Explorer\"]],[/(sogou)mo\\w+\\/([\\d\\.]+)/i],[[NAME,\"Sogou Mobile\"],VERSION],[/(electron)\\/([\\w\\.]+) safari/i,/(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,/m?(qqbrowser|2345Explorer)[\\/ ]?([\\w\\.]+)/i],[NAME,VERSION],[/(lbbrowser|rekonq)/i,/\\[(linkedin)app\\]/i],[NAME],[/((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i],[[NAME,FACEBOOK],VERSION],[/(Klarna)\\/([\\w\\.]+)/i,/(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,/(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,/safari (line)\\/([\\w\\.]+)/i,/\\b(line)\\/([\\w\\.]+)\\/iab/i,/(alipay)client\\/([\\w\\.]+)/i,/(twitter)(?:and| f.+e\\/([\\w\\.]+))/i,/(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i],[NAME,VERSION],[/\\bgsa\\/([\\w\\.]+) .*safari\\//i],[VERSION,[NAME,\"GSA\"]],[/musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i],[VERSION,[NAME,\"TikTok\"]],[/headlesschrome(?:\\/([\\w\\.]+)| )/i],[VERSION,[NAME,CHROME+\" Headless\"]],[/ wv\\).+(chrome)\\/([\\w\\.]+)/i],[[NAME,CHROME+\" WebView\"],VERSION],[/droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i],[VERSION,[NAME,\"Android \"+BROWSER]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i],[NAME,VERSION],[/version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i],[VERSION,[NAME,\"Mobile Safari\"]],[/version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i],[VERSION,NAME],[/webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i],[NAME,[VERSION,strMapper,oldSafariMap]],[/(webkit|khtml)\\/([\\w\\.]+)/i],[NAME,VERSION],[/(navigator|netscape\\d?)\\/([-\\w\\.]+)/i],[[NAME,\"Netscape\"],VERSION],[/(wolvic)\\/([\\w\\.]+)/i],[NAME,VERSION],[/mobile vr; rv:([\\w\\.]+)\\).+firefox/i],[VERSION,[NAME,FIREFOX+\" Reality\"]],[/ekiohf.+(flow)\\/([\\w\\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,/(firefox)\\/([\\w\\.]+)/i,/(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,/(links) \\(([\\w\\.]+)/i],[NAME,[VERSION,/_/g,\".\"]],[/(cobalt)\\/([\\w\\.]+)/i],[NAME,[VERSION,/master.|lts./,\"\"]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i],[[ARCHITECTURE,\"amd64\"]],[/(ia32(?=;))/i],[[ARCHITECTURE,lowerize]],[/((?:i[346]|x)86)[;\\)]/i],[[ARCHITECTURE,\"ia32\"]],[/\\b(aarch64|arm(v?8e?l?|_?64))\\b/i],[[ARCHITECTURE,\"arm64\"]],[/\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i],[[ARCHITECTURE,\"armhf\"]],[/windows (ce|mobile); ppc;/i],[[ARCHITECTURE,\"arm\"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i],[[ARCHITECTURE,/ower/,EMPTY,lowerize]],[/(sun4\\w)[;\\)]/i],[[ARCHITECTURE,\"sparc\"]],[/((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i],[[ARCHITECTURE,lowerize]]],device:[[/\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,TABLET]],[/\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\\w]+)/i,/sec-(sgh\\w+)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,MOBILE]],[/(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i],[MODEL,[VENDOR,APPLE],[TYPE,MOBILE]],[/\\((ipad);[-\\w\\),; ]+apple/i,/applecoremedia\\/[\\w\\.]+ \\((ipad)/i,/\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i],[MODEL,[VENDOR,APPLE],[TYPE,TABLET]],[/(macintosh);/i],[MODEL,[VENDOR,APPLE]],[/\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i],[MODEL,[VENDOR,SHARP],[TYPE,MOBILE]],[/\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,TABLET]],[/(?:huawei|honor)([-\\w ]+)[;\\)]/i,/\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,MOBILE]],[/\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i,/\\b; (\\w+) build\\/hm\\1/i,/\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,/\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i,/oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i,/\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i],[[MODEL,/_/g,\" \"],[VENDOR,XIAOMI],[TYPE,MOBILE]],[/oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i,/\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i],[[MODEL,/_/g,\" \"],[VENDOR,XIAOMI],[TYPE,TABLET]],[/; (\\w+) bui.+ oppo/i,/\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i],[MODEL,[VENDOR,\"OPPO\"],[TYPE,MOBILE]],[/\\b(opd2\\d{3}a?) bui/i],[MODEL,[VENDOR,\"OPPO\"],[TYPE,TABLET]],[/vivo (\\w+)(?: bui|\\))/i,/\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i],[MODEL,[VENDOR,\"Vivo\"],[TYPE,MOBILE]],[/\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i],[MODEL,[VENDOR,\"Realme\"],[TYPE,MOBILE]],[/\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,/\\bmot(?:orola)?[- ](\\w*)/i,/((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,MOBILE]],[/\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i],[MODEL,[VENDOR,MOTOROLA],[TYPE,TABLET]],[/((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i],[MODEL,[VENDOR,LG],[TYPE,TABLET]],[/(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,/\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,/\\blg-?([\\d\\w]+) bui/i],[MODEL,[VENDOR,LG],[TYPE,MOBILE]],[/(ideatab[-\\w ]+)/i,/lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i],[MODEL,[VENDOR,\"Lenovo\"],[TYPE,TABLET]],[/(?:maemo|nokia).*(n900|lumia \\d+)/i,/nokia[-_ ]?([-\\w\\.]*)/i],[[MODEL,/_/g,\" \"],[VENDOR,\"Nokia\"],[TYPE,MOBILE]],[/(pixel c)\\b/i],[MODEL,[VENDOR,GOOGLE],[TYPE,TABLET]],[/droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i],[MODEL,[VENDOR,GOOGLE],[TYPE,MOBILE]],[/droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i],[MODEL,[VENDOR,SONY],[TYPE,MOBILE]],[/sony tablet [ps]/i,/\\b(?:sony)?sgp\\w+(?: bui|\\))/i],[[MODEL,\"Xperia Tablet\"],[VENDOR,SONY],[TYPE,TABLET]],[/ (kb2005|in20[12]5|be20[12][59])\\b/i,/(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i],[MODEL,[VENDOR,\"OnePlus\"],[TYPE,MOBILE]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i,/(kf[a-z]+)( bui|\\)).+silk\\//i],[MODEL,[VENDOR,AMAZON],[TYPE,TABLET]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i],[[MODEL,/(.+)/g,\"Fire Phone $1\"],[VENDOR,AMAZON],[TYPE,MOBILE]],[/(playbook);[-\\w\\),; ]+(rim)/i],[MODEL,VENDOR,[TYPE,TABLET]],[/\\b((?:bb[a-f]|st[hv])100-\\d)/i,/\\(bb10; (\\w+)/i],[MODEL,[VENDOR,BLACKBERRY],[TYPE,MOBILE]],[/(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i],[MODEL,[VENDOR,ASUS],[TYPE,TABLET]],[/ (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i],[MODEL,[VENDOR,ASUS],[TYPE,MOBILE]],[/(nexus 9)/i],[MODEL,[VENDOR,\"HTC\"],[TYPE,TABLET]],[/(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,/(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i],[VENDOR,[MODEL,/_/g,\" \"],[TYPE,MOBILE]],[/droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\\w*(\\)| bui)/i],[MODEL,[VENDOR,\"TCL\"],[TYPE,TABLET]],[/(itel) ((\\w+))/i],[[VENDOR,lowerize],MODEL,[TYPE,strMapper,{tablet:[\"p10001l\",\"w7001\"],\"*\":\"mobile\"}]],[/droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i],[MODEL,[VENDOR,\"Acer\"],[TYPE,TABLET]],[/droid.+; (m[1-5] note) bui/i,/\\bmz-([-\\w]{2,})/i],[MODEL,[VENDOR,\"Meizu\"],[TYPE,MOBILE]],[/; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i],[MODEL,[VENDOR,\"Ulefone\"],[TYPE,MOBILE]],[/droid.+; (a(?:015|06[35]|142p?))/i],[MODEL,[VENDOR,\"Nothing\"],[TYPE,MOBILE]],[/(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\\w]*)/i,/(hp) ([\\w ]+\\w)/i,/(asus)-?(\\w+)/i,/(microsoft); (lumia[\\w ]+)/i,/(lenovo)[-_ ]?([-\\w]+)/i,/(jolla)/i,/(oppo) ?([\\w ]+) bui/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kobo)\\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\\/([\\w\\.]+)/i,/(nook)[\\w ]+build\\/(\\w+)/i,/(dell) (strea[kpr\\d ]*[\\dko])/i,/(le[- ]+pan)[- ]+(\\w{1,9}) bui/i,/(trinity)[- ]*(t\\d{3}) bui/i,/(gigaset)[- ]+(q\\w{1,9}) bui/i,/(vodafone) ([\\w ]+)(?:\\)| bui)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(surface duo)/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,TABLET]],[/droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i],[MODEL,[VENDOR,\"Fairphone\"],[TYPE,MOBILE]],[/(u304aa)/i],[MODEL,[VENDOR,\"AT&T\"],[TYPE,MOBILE]],[/\\bsie-(\\w*)/i],[MODEL,[VENDOR,\"Siemens\"],[TYPE,MOBILE]],[/\\b(rct\\w+) b/i],[MODEL,[VENDOR,\"RCA\"],[TYPE,TABLET]],[/\\b(venue[\\d ]{2,7}) b/i],[MODEL,[VENDOR,\"Dell\"],[TYPE,TABLET]],[/\\b(q(?:mv|ta)\\w+) b/i],[MODEL,[VENDOR,\"Verizon\"],[TYPE,TABLET]],[/\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i],[MODEL,[VENDOR,\"Barnes & Noble\"],[TYPE,TABLET]],[/\\b(tm\\d{3}\\w+) b/i],[MODEL,[VENDOR,\"NuVision\"],[TYPE,TABLET]],[/\\b(k88) b/i],[MODEL,[VENDOR,\"ZTE\"],[TYPE,TABLET]],[/\\b(nx\\d{3}j) b/i],[MODEL,[VENDOR,\"ZTE\"],[TYPE,MOBILE]],[/\\b(gen\\d{3}) b.+49h/i],[MODEL,[VENDOR,\"Swiss\"],[TYPE,MOBILE]],[/\\b(zur\\d{3}) b/i],[MODEL,[VENDOR,\"Swiss\"],[TYPE,TABLET]],[/\\b((zeki)?tb.*\\b) b/i],[MODEL,[VENDOR,\"Zeki\"],[TYPE,TABLET]],[/\\b([yr]\\d{2}) b/i,/\\b(dragon[- ]+touch |dt)(\\w{5}) b/i],[[VENDOR,\"Dragon Touch\"],MODEL,[TYPE,TABLET]],[/\\b(ns-?\\w{0,9}) b/i],[MODEL,[VENDOR,\"Insignia\"],[TYPE,TABLET]],[/\\b((nxa|next)-?\\w{0,9}) b/i],[MODEL,[VENDOR,\"NextBook\"],[TYPE,TABLET]],[/\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[VENDOR,\"Voice\"],MODEL,[TYPE,MOBILE]],[/\\b(lvtel\\-)?(v1[12]) b/i],[[VENDOR,\"LvTel\"],MODEL,[TYPE,MOBILE]],[/\\b(ph-1) /i],[MODEL,[VENDOR,\"Essential\"],[TYPE,MOBILE]],[/\\b(v(100md|700na|7011|917g).*\\b) b/i],[MODEL,[VENDOR,\"Envizen\"],[TYPE,TABLET]],[/\\b(trio[-\\w\\. ]+) b/i],[MODEL,[VENDOR,\"MachSpeed\"],[TYPE,TABLET]],[/\\btu_(1491) b/i],[MODEL,[VENDOR,\"Rotor\"],[TYPE,TABLET]],[/(shield[\\w ]+) b/i],[MODEL,[VENDOR,\"Nvidia\"],[TYPE,TABLET]],[/(sprint) (\\w+)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kin\\.[onetw]{3})/i],[[MODEL,/\\./g,\" \"],[VENDOR,MICROSOFT],[TYPE,MOBILE]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,TABLET]],[/droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,MOBILE]],[/smart-tv.+(samsung)/i],[VENDOR,[TYPE,SMARTTV]],[/hbbtv.+maple;(\\d+)/i],[[MODEL,/^/,\"SmartTV\"],[VENDOR,SAMSUNG],[TYPE,SMARTTV]],[/(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i],[[VENDOR,LG],[TYPE,SMARTTV]],[/(apple) ?tv/i],[VENDOR,[MODEL,APPLE+\" TV\"],[TYPE,SMARTTV]],[/crkey/i],[[MODEL,CHROME+\"cast\"],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/droid.+aft(\\w+)( bui|\\))/i],[MODEL,[VENDOR,AMAZON],[TYPE,SMARTTV]],[/\\(dtv[\\);].+(aquos)/i,/(aquos-tv[\\w ]+)\\)/i],[MODEL,[VENDOR,SHARP],[TYPE,SMARTTV]],[/(bravia[\\w ]+)( bui|\\))/i],[MODEL,[VENDOR,SONY],[TYPE,SMARTTV]],[/(mitv-\\w{5}) bui/i],[MODEL,[VENDOR,XIAOMI],[TYPE,SMARTTV]],[/Hbbtv.*(technisat) (.*);/i],[VENDOR,MODEL,[TYPE,SMARTTV]],[/\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,/hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i],[[VENDOR,trim],[MODEL,trim],[TYPE,SMARTTV]],[/\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i],[[TYPE,SMARTTV]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[VENDOR,MODEL,[TYPE,CONSOLE]],[/droid.+; (shield) bui/i],[MODEL,[VENDOR,\"Nvidia\"],[TYPE,CONSOLE]],[/(playstation [345portablevi]+)/i],[MODEL,[VENDOR,SONY],[TYPE,CONSOLE]],[/\\b(xbox(?: one)?(?!; xbox))[\\); ]/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,CONSOLE]],[/\\b(sm-[lr]\\d\\d[05][fnuw]?s?)\\b/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,WEARABLE]],[/((pebble))app/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i],[MODEL,[VENDOR,APPLE],[TYPE,WEARABLE]],[/droid.+; (glass) \\d/i],[MODEL,[VENDOR,GOOGLE],[TYPE,WEARABLE]],[/droid.+; (wt63?0{2,3})\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,WEARABLE]],[/(quest( \\d| pro)?)/i],[MODEL,[VENDOR,FACEBOOK],[TYPE,WEARABLE]],[/(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i],[VENDOR,[TYPE,EMBEDDED]],[/(aeobc)\\b/i],[MODEL,[VENDOR,AMAZON],[TYPE,EMBEDDED]],[/droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i],[MODEL,[TYPE,MOBILE]],[/droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i],[MODEL,[TYPE,TABLET]],[/\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i],[[TYPE,TABLET]],[/(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i],[[TYPE,MOBILE]],[/(android[-\\w\\. ]{0,9});.+buil/i],[MODEL,[VENDOR,\"Generic\"]]],engine:[[/windows.+ edge\\/([\\w\\.]+)/i],[VERSION,[NAME,EDGE+\"HTML\"]],[/webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i],[VERSION,[NAME,\"Blink\"]],[/(presto)\\/([\\w\\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i,/ekioh(flow)\\/([\\w\\.]+)/i,/(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i,/(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,/\\b(libweb)/i],[NAME,VERSION],[/rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i],[VERSION,NAME]],os:[[/microsoft (windows) (vista|xp)/i],[NAME,VERSION],[/(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i],[NAME,[VERSION,strMapper,windowsVersionMap]],[/windows nt 6\\.2; (arm)/i,/windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i],[[VERSION,strMapper,windowsVersionMap],[NAME,\"Windows\"]],[/ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i,/(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,/cfnetwork\\/.+darwin/i],[[VERSION,/_/g,\".\"],[NAME,\"iOS\"]],[/(mac os x) ?([\\w\\. ]*)/i,/(macintosh|mac_powerpc\\b)(?!.+haiku)/i],[[NAME,MAC_OS],[VERSION,/_/g,\".\"]],[/droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i],[VERSION,NAME],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,/(blackberry)\\w*\\/([\\w\\.]*)/i,/(tizen|kaios)[\\/ ]([\\w\\.]+)/i,/\\((series40);/i],[NAME,VERSION],[/\\(bb(10);/i],[VERSION,[NAME,BLACKBERRY]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i],[VERSION,[NAME,\"Symbian\"]],[/mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i],[VERSION,[NAME,FIREFOX+\" OS\"]],[/web0s;.+rt(tv)/i,/\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i],[VERSION,[NAME,\"webOS\"]],[/watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i],[VERSION,[NAME,\"watchOS\"]],[/crkey\\/([\\d\\.]+)/i],[VERSION,[NAME,CHROME+\"cast\"]],[/(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i],[[NAME,CHROMIUM_OS],VERSION],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\\/(\\d+\\.[\\w\\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\\);]+)/i,/\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,/(mint)[\\/\\(\\) ]?(\\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,/(hurd|linux) ?([\\w\\.]*)/i,/(gnu) ?([\\w\\.]*)/i,/\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i,/(haiku) (\\w+)/i],[NAME,VERSION],[/(sunos) ?([\\w\\.\\d]*)/i],[[NAME,\"Solaris\"],VERSION],[/((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,/(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i,/\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\\w\\.]*)/i],[NAME,VERSION]]};var UAParser=function(ua,extensions){if(typeof ua===OBJ_TYPE){extensions=ua;ua=undefined}if(!(this instanceof UAParser)){return new UAParser(ua,extensions).getResult()}var _navigator=typeof window!==UNDEF_TYPE&&window.navigator?window.navigator:undefined;var _ua=ua||(_navigator&&_navigator.userAgent?_navigator.userAgent:EMPTY);var _uach=_navigator&&_navigator.userAgentData?_navigator.userAgentData:undefined;var _rgxmap=extensions?extend(regexes,extensions):regexes;var _isSelfNav=_navigator&&_navigator.userAgent==_ua;this.getBrowser=function(){var _browser={};_browser[NAME]=undefined;_browser[VERSION]=undefined;rgxMapper.call(_browser,_ua,_rgxmap.browser);_browser[MAJOR]=majorize(_browser[VERSION]);if(_isSelfNav&&_navigator&&_navigator.brave&&typeof _navigator.brave.isBrave==FUNC_TYPE){_browser[NAME]=\"Brave\"}return _browser};this.getCPU=function(){var _cpu={};_cpu[ARCHITECTURE]=undefined;rgxMapper.call(_cpu,_ua,_rgxmap.cpu);return _cpu};this.getDevice=function(){var _device={};_device[VENDOR]=undefined;_device[MODEL]=undefined;_device[TYPE]=undefined;rgxMapper.call(_device,_ua,_rgxmap.device);if(_isSelfNav&&!_device[TYPE]&&_uach&&_uach.mobile){_device[TYPE]=MOBILE}if(_isSelfNav&&_device[MODEL]==\"Macintosh\"&&_navigator&&typeof _navigator.standalone!==UNDEF_TYPE&&_navigator.maxTouchPoints&&_navigator.maxTouchPoints>2){_device[MODEL]=\"iPad\";_device[TYPE]=TABLET}return _device};this.getEngine=function(){var _engine={};_engine[NAME]=undefined;_engine[VERSION]=undefined;rgxMapper.call(_engine,_ua,_rgxmap.engine);return _engine};this.getOS=function(){var _os={};_os[NAME]=undefined;_os[VERSION]=undefined;rgxMapper.call(_os,_ua,_rgxmap.os);if(_isSelfNav&&!_os[NAME]&&_uach&&_uach.platform&&_uach.platform!=\"Unknown\"){_os[NAME]=_uach.platform.replace(/chrome os/i,CHROMIUM_OS).replace(/macos/i,MAC_OS)}return _os};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return _ua};this.setUA=function(ua){_ua=typeof ua===STR_TYPE&&ua.length>UA_MAX_LENGTH?trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR]);UAParser.CPU=enumerize([ARCHITECTURE]);UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]);UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]);if(typeof exports!==UNDEF_TYPE){if(typeof module!==UNDEF_TYPE&&module.exports){exports=module.exports=UAParser}exports.UAParser=UAParser}else{if(typeof define===FUNC_TYPE&&define.amd){define(function(){return UAParser})}else if(typeof window!==UNDEF_TYPE){window.UAParser=UAParser}}var $=typeof window!==UNDEF_TYPE&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop]}}}})(typeof window===\"object\"?window:this);","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","function _extends() {\n return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict'\n\nconst format = require('quick-format-unescaped')\n\nmodule.exports = pino\n\nconst _console = pfGlobalThisOrFallback().console || {}\nconst stdSerializers = {\n mapHttpRequest: mock,\n mapHttpResponse: mock,\n wrapRequestSerializer: passthrough,\n wrapResponseSerializer: passthrough,\n wrapErrorSerializer: passthrough,\n req: mock,\n res: mock,\n err: asErrValue\n}\n\nfunction shouldSerialize (serialize, serializers) {\n if (Array.isArray(serialize)) {\n const hasToFilter = serialize.filter(function (k) {\n return k !== '!stdSerializers.err'\n })\n return hasToFilter\n } else if (serialize === true) {\n return Object.keys(serializers)\n }\n\n return false\n}\n\nfunction pino (opts) {\n opts = opts || {}\n opts.browser = opts.browser || {}\n\n const transmit = opts.browser.transmit\n if (transmit && typeof transmit.send !== 'function') { throw Error('pino: transmit option must have a send function') }\n\n const proto = opts.browser.write || _console\n if (opts.browser.write) opts.browser.asObject = true\n const serializers = opts.serializers || {}\n const serialize = shouldSerialize(opts.browser.serialize, serializers)\n let stdErrSerialize = opts.browser.serialize\n\n if (\n Array.isArray(opts.browser.serialize) &&\n opts.browser.serialize.indexOf('!stdSerializers.err') > -1\n ) stdErrSerialize = false\n\n const levels = ['error', 'fatal', 'warn', 'info', 'debug', 'trace']\n\n if (typeof proto === 'function') {\n proto.error = proto.fatal = proto.warn =\n proto.info = proto.debug = proto.trace = proto\n }\n if (opts.enabled === false) opts.level = 'silent'\n const level = opts.level || 'info'\n const logger = Object.create(proto)\n if (!logger.log) logger.log = noop\n\n Object.defineProperty(logger, 'levelVal', {\n get: getLevelVal\n })\n Object.defineProperty(logger, 'level', {\n get: getLevel,\n set: setLevel\n })\n\n const setOpts = {\n transmit,\n serialize,\n asObject: opts.browser.asObject,\n levels,\n timestamp: getTimeFunction(opts)\n }\n logger.levels = pino.levels\n logger.level = level\n\n logger.setMaxListeners = logger.getMaxListeners =\n logger.emit = logger.addListener = logger.on =\n logger.prependListener = logger.once =\n logger.prependOnceListener = logger.removeListener =\n logger.removeAllListeners = logger.listeners =\n logger.listenerCount = logger.eventNames =\n logger.write = logger.flush = noop\n logger.serializers = serializers\n logger._serialize = serialize\n logger._stdErrSerialize = stdErrSerialize\n logger.child = child\n\n if (transmit) logger._logEvent = createLogEventShape()\n\n function getLevelVal () {\n return this.level === 'silent'\n ? Infinity\n : this.levels.values[this.level]\n }\n\n function getLevel () {\n return this._level\n }\n function setLevel (level) {\n if (level !== 'silent' && !this.levels.values[level]) {\n throw Error('unknown level ' + level)\n }\n this._level = level\n\n set(setOpts, logger, 'error', 'log') // <-- must stay first\n set(setOpts, logger, 'fatal', 'error')\n set(setOpts, logger, 'warn', 'error')\n set(setOpts, logger, 'info', 'log')\n set(setOpts, logger, 'debug', 'log')\n set(setOpts, logger, 'trace', 'log')\n }\n\n function child (bindings, childOptions) {\n if (!bindings) {\n throw new Error('missing bindings for child Pino')\n }\n childOptions = childOptions || {}\n if (serialize && bindings.serializers) {\n childOptions.serializers = bindings.serializers\n }\n const childOptionsSerializers = childOptions.serializers\n if (serialize && childOptionsSerializers) {\n var childSerializers = Object.assign({}, serializers, childOptionsSerializers)\n var childSerialize = opts.browser.serialize === true\n ? Object.keys(childSerializers)\n : serialize\n delete bindings.serializers\n applySerializers([bindings], childSerialize, childSerializers, this._stdErrSerialize)\n }\n function Child (parent) {\n this._childLevel = (parent._childLevel | 0) + 1\n this.error = bind(parent, bindings, 'error')\n this.fatal = bind(parent, bindings, 'fatal')\n this.warn = bind(parent, bindings, 'warn')\n this.info = bind(parent, bindings, 'info')\n this.debug = bind(parent, bindings, 'debug')\n this.trace = bind(parent, bindings, 'trace')\n if (childSerializers) {\n this.serializers = childSerializers\n this._serialize = childSerialize\n }\n if (transmit) {\n this._logEvent = createLogEventShape(\n [].concat(parent._logEvent.bindings, bindings)\n )\n }\n }\n Child.prototype = this\n return new Child(this)\n }\n return logger\n}\n\npino.levels = {\n values: {\n fatal: 60,\n error: 50,\n warn: 40,\n info: 30,\n debug: 20,\n trace: 10\n },\n labels: {\n 10: 'trace',\n 20: 'debug',\n 30: 'info',\n 40: 'warn',\n 50: 'error',\n 60: 'fatal'\n }\n}\n\npino.stdSerializers = stdSerializers\npino.stdTimeFunctions = Object.assign({}, { nullTime, epochTime, unixTime, isoTime })\n\nfunction set (opts, logger, level, fallback) {\n const proto = Object.getPrototypeOf(logger)\n logger[level] = logger.levelVal > logger.levels.values[level]\n ? noop\n : (proto[level] ? proto[level] : (_console[level] || _console[fallback] || noop))\n\n wrap(opts, logger, level)\n}\n\nfunction wrap (opts, logger, level) {\n if (!opts.transmit && logger[level] === noop) return\n\n logger[level] = (function (write) {\n return function LOG () {\n const ts = opts.timestamp()\n const args = new Array(arguments.length)\n const proto = (Object.getPrototypeOf && Object.getPrototypeOf(this) === _console) ? _console : this\n for (var i = 0; i < args.length; i++) args[i] = arguments[i]\n\n if (opts.serialize && !opts.asObject) {\n applySerializers(args, this._serialize, this.serializers, this._stdErrSerialize)\n }\n if (opts.asObject) write.call(proto, asObject(this, level, args, ts))\n else write.apply(proto, args)\n\n if (opts.transmit) {\n const transmitLevel = opts.transmit.level || logger.level\n const transmitValue = pino.levels.values[transmitLevel]\n const methodValue = pino.levels.values[level]\n if (methodValue < transmitValue) return\n transmit(this, {\n ts,\n methodLevel: level,\n methodValue,\n transmitLevel,\n transmitValue: pino.levels.values[opts.transmit.level || logger.level],\n send: opts.transmit.send,\n val: logger.levelVal\n }, args)\n }\n }\n })(logger[level])\n}\n\nfunction asObject (logger, level, args, ts) {\n if (logger._serialize) applySerializers(args, logger._serialize, logger.serializers, logger._stdErrSerialize)\n const argsCloned = args.slice()\n let msg = argsCloned[0]\n const o = {}\n if (ts) {\n o.time = ts\n }\n o.level = pino.levels.values[level]\n let lvl = (logger._childLevel | 0) + 1\n if (lvl < 1) lvl = 1\n // deliberate, catching objects, arrays\n if (msg !== null && typeof msg === 'object') {\n while (lvl-- && typeof argsCloned[0] === 'object') {\n Object.assign(o, argsCloned.shift())\n }\n msg = argsCloned.length ? format(argsCloned.shift(), argsCloned) : undefined\n } else if (typeof msg === 'string') msg = format(argsCloned.shift(), argsCloned)\n if (msg !== undefined) o.msg = msg\n return o\n}\n\nfunction applySerializers (args, serialize, serializers, stdErrSerialize) {\n for (const i in args) {\n if (stdErrSerialize && args[i] instanceof Error) {\n args[i] = pino.stdSerializers.err(args[i])\n } else if (typeof args[i] === 'object' && !Array.isArray(args[i])) {\n for (const k in args[i]) {\n if (serialize && serialize.indexOf(k) > -1 && k in serializers) {\n args[i][k] = serializers[k](args[i][k])\n }\n }\n }\n }\n}\n\nfunction bind (parent, bindings, level) {\n return function () {\n const args = new Array(1 + arguments.length)\n args[0] = bindings\n for (var i = 1; i < args.length; i++) {\n args[i] = arguments[i - 1]\n }\n return parent[level].apply(this, args)\n }\n}\n\nfunction transmit (logger, opts, args) {\n const send = opts.send\n const ts = opts.ts\n const methodLevel = opts.methodLevel\n const methodValue = opts.methodValue\n const val = opts.val\n const bindings = logger._logEvent.bindings\n\n applySerializers(\n args,\n logger._serialize || Object.keys(logger.serializers),\n logger.serializers,\n logger._stdErrSerialize === undefined ? true : logger._stdErrSerialize\n )\n logger._logEvent.ts = ts\n logger._logEvent.messages = args.filter(function (arg) {\n // bindings can only be objects, so reference equality check via indexOf is fine\n return bindings.indexOf(arg) === -1\n })\n\n logger._logEvent.level.label = methodLevel\n logger._logEvent.level.value = methodValue\n\n send(methodLevel, logger._logEvent, val)\n\n logger._logEvent = createLogEventShape(bindings)\n}\n\nfunction createLogEventShape (bindings) {\n return {\n ts: 0,\n messages: [],\n bindings: bindings || [],\n level: { label: '', value: 0 }\n }\n}\n\nfunction asErrValue (err) {\n const obj = {\n type: err.constructor.name,\n msg: err.message,\n stack: err.stack\n }\n for (const key in err) {\n if (obj[key] === undefined) {\n obj[key] = err[key]\n }\n }\n return obj\n}\n\nfunction getTimeFunction (opts) {\n if (typeof opts.timestamp === 'function') {\n return opts.timestamp\n }\n if (opts.timestamp === false) {\n return nullTime\n }\n return epochTime\n}\n\nfunction mock () { return {} }\nfunction passthrough (a) { return a }\nfunction noop () {}\n\nfunction nullTime () { return false }\nfunction epochTime () { return Date.now() }\nfunction unixTime () { return Math.round(Date.now() / 1000.0) }\nfunction isoTime () { return new Date(Date.now()).toISOString() } // using Date.now() for testability\n\n/* eslint-disable */\n/* istanbul ignore next */\nfunction pfGlobalThisOrFallback () {\n function defd (o) { return typeof o !== 'undefined' && o }\n try {\n if (typeof globalThis !== 'undefined') return globalThis\n Object.defineProperty(Object.prototype, 'globalThis', {\n get: function () {\n delete Object.prototype.globalThis\n return (this.globalThis = this)\n },\n configurable: true\n })\n return globalThis\n } catch (e) {\n return defd(self) || defd(window) || defd(this) || {}\n }\n}\n/* eslint-enable */\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import { hash as assertHash, bytes as assertBytes, exists as assertExists } from './_assert.js';\nimport { Hash, CHash, Input, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nexport class HMAC<T extends Hash<T>> extends Hash<HMAC<T>> {\n oHash: T;\n iHash: T;\n blockLen: number;\n outputLen: number;\n private finished = false;\n private destroyed = false;\n\n constructor(hash: CHash, _key: Input) {\n super();\n assertHash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create() as T;\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create() as T;\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf: Input) {\n assertExists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out: Uint8Array) {\n assertExists(this);\n assertBytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to?: HMAC<T>): HMAC<T> {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to ||= Object.create(Object.getPrototypeOf(this), {});\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to as this;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac = (hash: CHash, key: Input, message: Input): Uint8Array =>\n new HMAC<any>(hash, key).update(message).digest();\nhmac.create = (hash: CHash, key: Input) => new HMAC<any>(hash, key);\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nexport type Hex = Uint8Array | string; // hex strings are accepted for simplicity\nexport type PrivKey = Hex | bigint; // bigints are accepted to ease learning curve\nexport type CHash = {\n (message: Uint8Array | string): Uint8Array;\n blockLen: number;\n outputLen: number;\n create(opts?: { dkLen?: number }): any; // For shake\n};\nexport type FHash = (message: Uint8Array | string) => Uint8Array;\n\nexport function isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\nexport function abytes(item: unknown): void {\n if (!isBytes(item)) throw new Error('Uint8Array expected');\n}\n\nexport function abool(title: string, value: boolean): void {\n if (typeof value !== 'boolean')\n throw new Error(`${title} must be valid boolean, got \"${value}\".`);\n}\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\nexport function numberToHexUnpadded(num: number | bigint): string {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\n\nexport function hexToNumber(hex: string): bigint {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n // Big Endian\n return BigInt(hex === '' ? '0' : `0x${hex}`);\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 } as const;\nfunction asciiToBase16(char: number): number | undefined {\n if (char >= asciis._0 && char <= asciis._9) return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F) return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f) return char - (asciis._a - 10);\n return;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes: Uint8Array): bigint {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes: Uint8Array): bigint {\n abytes(bytes);\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\n\nexport function numberToBytesBE(n: number | bigint, len: number): Uint8Array {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n: number | bigint, len: number): Uint8Array {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n: number | bigint): Uint8Array {\n return hexToBytes(numberToHexUnpadded(n));\n}\n\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title: string, hex: Hex, expectedLength?: number): Uint8Array {\n let res: Uint8Array;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n } catch (e) {\n throw new Error(`${title} must be valid hex string, got \"${hex}\". Cause: ${e}`);\n }\n } else if (isBytes(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n } else {\n throw new Error(`${title} must be hex string or Uint8Array`);\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(`${title} expected ${expectedLength} bytes, got ${len}`);\n return res;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a: Uint8Array, b: Uint8Array) {\n if (a.length !== b.length) return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++) diff |= a[i] ^ b[i];\n return diff === 0;\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n// Is positive bigint\nconst isPosBig = (n: bigint) => typeof n === 'bigint' && _0n <= n;\n\nexport function inRange(n: bigint, min: bigint, max: bigint) {\n return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\n\n/**\n * Asserts min <= n < max. NOTE: It's < max and not <= max.\n * @example\n * aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)\n */\nexport function aInRange(title: string, n: bigint, min: bigint, max: bigint) {\n // Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?\n // consider P=256n, min=0n, max=P\n // - a for min=0 would require -1: `inRange('x', x, -1n, P)`\n // - b would commonly require subtraction: `inRange('x', x, 0n, P - 1n)`\n // - our way is the cleanest: `inRange('x', x, 0n, P)\n if (!inRange(n, min, max))\n throw new Error(`expected valid ${title}: ${min} <= n < ${max}, got ${typeof n} ${n}`);\n}\n\n// Bit operations\n\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n */\nexport function bitLen(n: bigint) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1);\n return len;\n}\n\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n: bigint, pos: number) {\n return (n >> BigInt(pos)) & _1n;\n}\n\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n: bigint, pos: number, value: boolean) {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n}\n\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n: number) => (_2n << BigInt(n - 1)) - _1n;\n\n// DRBG\n\nconst u8n = (data?: any) => new Uint8Array(data); // creates Uint8Array\nconst u8fr = (arr: any) => Uint8Array.from(arr); // another shortcut\ntype Pred<T> = (v: Uint8Array) => T | undefined;\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG<Key>(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg<T>(\n hashLen: number,\n qByteLen: number,\n hmacFn: (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array\n): (seed: Uint8Array, predicate: Pred<T>) => T {\n if (typeof hashLen !== 'number' || hashLen < 2) throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2) throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function') throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b: Uint8Array[]) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n()) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0) return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000) throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out: Uint8Array[] = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed: Uint8Array, pred: Pred<T>): T => {\n reset();\n reseed(seed); // Steps D-G\n let res: T | undefined = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen()))) reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n\n// Validating curves and fields\n\nconst validatorFns = {\n bigint: (val: any) => typeof val === 'bigint',\n function: (val: any) => typeof val === 'function',\n boolean: (val: any) => typeof val === 'boolean',\n string: (val: any) => typeof val === 'string',\n stringOrUint8Array: (val: any) => typeof val === 'string' || isBytes(val),\n isSafeInteger: (val: any) => Number.isSafeInteger(val),\n array: (val: any) => Array.isArray(val),\n field: (val: any, object: any) => (object as any).Fp.isValid(val),\n hash: (val: any) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n} as const;\ntype Validator = keyof typeof validatorFns;\ntype ValMap<T extends Record<string, any>> = { [K in keyof T]?: Validator };\n// type Record<K extends string | number | symbol, T> = { [P in K]: T; }\n\nexport function validateObject<T extends Record<string, any>>(\n object: T,\n validators: ValMap<T>,\n optValidators: ValMap<T> = {}\n) {\n const checkField = (fieldName: keyof T, type: Validator, isOptional: boolean) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error(`Invalid validator \"${type}\", expected function`);\n\n const val = object[fieldName as keyof typeof object];\n if (isOptional && val === undefined) return;\n if (!checkVal(val, object)) {\n throw new Error(\n `Invalid param ${String(fieldName)}=${val} (${typeof val}), expected ${type}`\n );\n }\n };\n for (const [fieldName, type] of Object.entries(validators)) checkField(fieldName, type!, false);\n for (const [fieldName, type] of Object.entries(optValidators)) checkField(fieldName, type!, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n\n/**\n * throws not implemented error\n */\nexport const notImplemented = () => {\n throw new Error('not implemented');\n};\n\n/**\n * Memoizes (caches) computation result.\n * Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.\n */\nexport function memoized<T extends object, R, O extends any[]>(fn: (arg: T, ...args: O) => R) {\n const map = new WeakMap<T, R>();\n return (arg: T, ...args: O): R => {\n const val = map.get(arg);\n if (val !== undefined) return val;\n const computed = fn(arg, ...args);\n map.set(arg, computed);\n return computed;\n };\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Utilities for modular arithmetics and finite fields\nimport {\n bitMask,\n bytesToNumberBE,\n bytesToNumberLE,\n ensureBytes,\n numberToBytesBE,\n numberToBytesLE,\n validateObject,\n} from './utils.js';\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _4n = BigInt(4), _5n = BigInt(5), _8n = BigInt(8);\n// prettier-ignore\nconst _9n = BigInt(9), _16n = BigInt(16);\n\n// Calculates a modulo b\nexport function mod(a: bigint, b: bigint): bigint {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\n// TODO: use field version && remove\nexport function pow(num: bigint, power: bigint, modulo: bigint): bigint {\n if (modulo <= _0n || power < _0n) throw new Error('Expected power/modulo > 0');\n if (modulo === _1n) return _0n;\n let res = _1n;\n while (power > _0n) {\n if (power & _1n) res = (res * num) % modulo;\n num = (num * num) % modulo;\n power >>= _1n;\n }\n return res;\n}\n\n// Does x ^ (2 ^ power) mod p. pow2(30, 4) == 30 ^ (2 ^ 4)\nexport function pow2(x: bigint, power: bigint, modulo: bigint): bigint {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n\n// Inverses number over modulo\nexport function invert(number: bigint, modulo: bigint): bigint {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n // Euclidean GCD https://brilliant.org/wiki/extended-euclidean-algorithm/\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n) throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * Will start an infinite loop if field order P is not prime.\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P: bigint) {\n // Legendre constant: used to calculate Legendre symbol (a | p),\n // which denotes the value of a^((p-1)/2) (mod p).\n // (a | p) ≡ 1 if a is a square (mod p)\n // (a | p) ≡ -1 if a is not a square (mod p)\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreC = (P - _1n) / _2n;\n\n let Q: bigint, S: number, Z: bigint;\n // Step 1: By factoring out powers of 2 from p - 1,\n // find q and s such that p - 1 = q*(2^s) with q odd\n for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++);\n\n // Step 2: Select a non-square z such that (z | p) ≡ -1 and set c ≡ zq\n for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++);\n\n // Fast-path\n if (S === 1) {\n const p1div4 = (P + _1n) / _4n;\n return function tonelliFast<T>(Fp: IField<T>, n: T) {\n const root = Fp.pow(n, p1div4);\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // Slow-path\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow<T>(Fp: IField<T>, n: T): T {\n // Step 0: Check that n is indeed a square: (n | p) should not be ≡ -1\n if (Fp.pow(n, legendreC) === Fp.neg(Fp.ONE)) throw new Error('Cannot find square root');\n let r = S;\n // TODO: will fail at Fp2/etc\n let g = Fp.pow(Fp.mul(Fp.ONE, Z), Q); // will update both x and b\n let x = Fp.pow(n, Q1div2); // first guess at the square root\n let b = Fp.pow(n, Q); // first guess at the fudge factor\n\n while (!Fp.eql(b, Fp.ONE)) {\n if (Fp.eql(b, Fp.ZERO)) return Fp.ZERO; // https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm (4. If t = 0, return r = 0)\n // Find m such b^(2^m)==1\n let m = 1;\n for (let t2 = Fp.sqr(b); m < r; m++) {\n if (Fp.eql(t2, Fp.ONE)) break;\n t2 = Fp.sqr(t2); // t2 *= t2\n }\n // NOTE: r-m-1 can be bigger than 32, need to convert to bigint before shift, otherwise there will be overflow\n const ge = Fp.pow(g, _1n << BigInt(r - m - 1)); // ge = 2^(r-m-1)\n g = Fp.sqr(ge); // g = ge * ge\n x = Fp.mul(x, ge); // x *= ge\n b = Fp.mul(b, g); // b *= g\n r = m;\n }\n return x;\n };\n}\n\nexport function FpSqrt(P: bigint) {\n // NOTE: different algorithms can give different roots, it is up to user to decide which one they want.\n // For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n\n // P ≡ 3 (mod 4)\n // √n = n^((P+1)/4)\n if (P % _4n === _3n) {\n // Not all roots possible!\n // const ORDER =\n // 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;\n // const NUM = 72057594037927816n;\n const p1div4 = (P + _1n) / _4n;\n return function sqrt3mod4<T>(Fp: IField<T>, n: T) {\n const root = Fp.pow(n, p1div4);\n // Throw if root**2 != n\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // Atkin algorithm for q ≡ 5 (mod 8), https://eprint.iacr.org/2012/685.pdf (page 10)\n if (P % _8n === _5n) {\n const c1 = (P - _5n) / _8n;\n return function sqrt5mod8<T>(Fp: IField<T>, n: T) {\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, c1);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n return root;\n };\n }\n\n // P ≡ 9 (mod 16)\n if (P % _16n === _9n) {\n // NOTE: tonelli is too slow for bls-Fp2 calculations even on start\n // Means we cannot use sqrt for constants at all!\n //\n // const c1 = Fp.sqrt(Fp.negate(Fp.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n // const c2 = Fp.sqrt(c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n // const c3 = Fp.sqrt(Fp.negate(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n // const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n // sqrt = (x) => {\n // let tv1 = Fp.pow(x, c4); // 1. tv1 = x^c4\n // let tv2 = Fp.mul(c1, tv1); // 2. tv2 = c1 * tv1\n // const tv3 = Fp.mul(c2, tv1); // 3. tv3 = c2 * tv1\n // let tv4 = Fp.mul(c3, tv1); // 4. tv4 = c3 * tv1\n // const e1 = Fp.equals(Fp.square(tv2), x); // 5. e1 = (tv2^2) == x\n // const e2 = Fp.equals(Fp.square(tv3), x); // 6. e2 = (tv3^2) == x\n // tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n // tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n // const e3 = Fp.equals(Fp.square(tv2), x); // 9. e3 = (tv2^2) == x\n // return Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n // }\n }\n // Other cases: Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num: bigint, modulo: bigint) => (mod(num, modulo) & _1n) === _1n;\n\n// Field is not always over prime: for example, Fp2 has ORDER(q)=p^m\nexport interface IField<T> {\n ORDER: bigint;\n BYTES: number;\n BITS: number;\n MASK: bigint;\n ZERO: T;\n ONE: T;\n // 1-arg\n create: (num: T) => T;\n isValid: (num: T) => boolean;\n is0: (num: T) => boolean;\n neg(num: T): T;\n inv(num: T): T;\n sqrt(num: T): T;\n sqr(num: T): T;\n // 2-args\n eql(lhs: T, rhs: T): boolean;\n add(lhs: T, rhs: T): T;\n sub(lhs: T, rhs: T): T;\n mul(lhs: T, rhs: T | bigint): T;\n pow(lhs: T, power: bigint): T;\n div(lhs: T, rhs: T | bigint): T;\n // N for NonNormalized (for now)\n addN(lhs: T, rhs: T): T;\n subN(lhs: T, rhs: T): T;\n mulN(lhs: T, rhs: T | bigint): T;\n sqrN(num: T): T;\n\n // Optional\n // Should be same as sgn0 function in\n // [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#section-4.1).\n // NOTE: sgn0 is 'negative in LE', which is same as odd. And negative in LE is kinda strange definition anyway.\n isOdd?(num: T): boolean; // Odd instead of even since we have it for Fp2\n // legendre?(num: T): T;\n pow(lhs: T, power: bigint): T;\n invertBatch: (lst: T[]) => T[];\n toBytes(num: T): Uint8Array;\n fromBytes(bytes: Uint8Array): T;\n // If c is False, CMOV returns a, otherwise it returns b.\n cmov(a: T, b: T, c: boolean): T;\n}\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n] as const;\nexport function validateField<T>(field: IField<T>) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'isSafeInteger',\n BITS: 'isSafeInteger',\n } as Record<string, string>;\n const opts = FIELD_FIELDS.reduce((map, val: string) => {\n map[val] = 'function';\n return map;\n }, initial);\n return validateObject(field, opts);\n}\n\n// Generic field functions\n\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow<T>(f: IField<T>, num: T, power: bigint): T {\n // Should have same speed as pow for bigints\n // TODO: benchmark!\n if (power < _0n) throw new Error('Expected power > 0');\n if (power === _0n) return f.ONE;\n if (power === _1n) return num;\n let p = f.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n) p = f.mul(p, d);\n d = f.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n\n/**\n * Efficiently invert an array of Field elements.\n * `inv(0)` will return `undefined` here: make sure to throw an error.\n */\nexport function FpInvertBatch<T>(f: IField<T>, nums: T[]): T[] {\n const tmp = new Array(nums.length);\n // Walk from first to last, multiply them by each other MOD p\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (f.is0(num)) return acc;\n tmp[i] = acc;\n return f.mul(acc, num);\n }, f.ONE);\n // Invert last element\n const inverted = f.inv(lastMultiplied);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (f.is0(num)) return acc;\n tmp[i] = f.mul(acc, tmp[i]);\n return f.mul(acc, num);\n }, inverted);\n return tmp;\n}\n\nexport function FpDiv<T>(f: IField<T>, lhs: T, rhs: T | bigint): T {\n return f.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, f.ORDER) : f.inv(rhs));\n}\n\nexport function FpLegendre(order: bigint) {\n // (a | p) ≡ 1 if a is a square (mod p), quadratic residue\n // (a | p) ≡ -1 if a is not a square (mod p), quadratic non residue\n // (a | p) ≡ 0 if a ≡ 0 (mod p)\n const legendreConst = (order - _1n) / _2n; // Integer arithmetic\n return <T>(f: IField<T>, x: T): T => f.pow(x, legendreConst);\n}\n\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare<T>(f: IField<T>) {\n const legendre = FpLegendre(f.ORDER);\n return (x: T): boolean => {\n const p = legendre(f, x);\n return f.eql(p, f.ZERO) || f.eql(p, f.ONE);\n };\n}\n\n// CURVE.n lengths\nexport function nLength(n: bigint, nBitLength?: number) {\n // Bit size, byte size of CURVE.n\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n\ntype FpField = IField<bigint> & Required<Pick<IField<bigint>, 'isOdd'>>;\n/**\n * Initializes a finite field over prime. **Non-primes are not supported.**\n * Do not init in loop: slow. Very fragile: always run a benchmark on a change.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * NOTE: operations don't check 'isValid' for all elements for performance reasons,\n * it is caller responsibility to check this.\n * This is low-level code, please make sure you know what you doing.\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(\n ORDER: bigint,\n bitLen?: number,\n isLE = false,\n redef: Partial<IField<bigint>> = {}\n): Readonly<FpField> {\n if (ORDER <= _0n) throw new Error(`Expected Field ORDER > 0, got ${ORDER}`);\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n if (BYTES > 2048) throw new Error('Field lengths over 2048 bytes are not supported');\n const sqrtP = FpSqrt(ORDER);\n const f: Readonly<FpField> = Object.freeze({\n ORDER,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error(`Invalid field element: expected bigint, got ${typeof num}`);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n\n inv: (num) => invert(num, ORDER),\n sqrt: redef.sqrt || ((n) => sqrtP(f, n)),\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // TODO: do we really need constant cmov?\n // We don't have const-time bigints anyway, so probably will be not very useful\n cmov: (a, b, c) => (c ? b : a),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes) => {\n if (bytes.length !== BYTES)\n throw new Error(`Fp.fromBytes: expected ${BYTES}, got ${bytes.length}`);\n return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n },\n } as FpField);\n return Object.freeze(f);\n}\n\nexport function FpSqrtOdd<T>(Fp: IField<T>, elm: T) {\n if (!Fp.isOdd) throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\n\nexport function FpSqrtEven<T>(Fp: IField<T>, elm: T) {\n if (!Fp.isOdd) throw new Error(`Field doesn't have isOdd`);\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use mapKeyToField instead\n */\nexport function hashToPrivateScalar(\n hash: string | Uint8Array,\n groupOrder: bigint,\n isLE = false\n): bigint {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error(`hashToPrivateScalar: expected ${minLen}-1024 bytes of input, got ${hashLen}`);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder: bigint): number {\n if (typeof fieldOrder !== 'bigint') throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder: bigint): number {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key: Uint8Array, fieldOrder: bigint, isLE = false): Uint8Array {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error(`expected ${minLen}-1024 bytes of input, got ${len}`);\n const num = isLE ? bytesToNumberBE(key) : bytesToNumberLE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Abelian group utilities\nimport { IField, validateField, nLength } from './modular.js';\nimport { validateObject, bitLen } from './utils.js';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\n\nexport type AffinePoint<T> = {\n x: T;\n y: T;\n} & { z?: never; t?: never };\n\nexport interface Group<T extends Group<T>> {\n double(): T;\n negate(): T;\n add(other: T): T;\n subtract(other: T): T;\n equals(other: T): boolean;\n multiply(scalar: bigint): T;\n}\n\nexport type GroupConstructor<T> = {\n BASE: T;\n ZERO: T;\n};\nexport type Mapper<T> = (i: T[]) => T[];\n\n// Since points in different groups cannot be equal (different object constructor),\n// we can have single place to store precomputes\nconst pointPrecomputes = new WeakMap<any, any[]>();\nconst pointWindowSizes = new WeakMap<any, number>(); // This allows use make points immutable (nothing changes inside)\n\n// Elliptic curve multiplication of Point by scalar. Fragile.\n// Scalars should always be less than curve order: this should be checked inside of a curve itself.\n// Creates precomputation tables for fast multiplication:\n// - private scalar is split by fixed size windows of W bits\n// - every window point is collected from window's table & added to accumulator\n// - since windows are different, same point inside tables won't be accessed more than once per calc\n// - each multiplication is 'Math.ceil(CURVE_ORDER / ð‘Š) + 1' point additions (fixed for any scalar)\n// - +1 window is neccessary for wNAF\n// - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n// TODO: Research returning 2d JS array of windows, instead of a single window. This would allow\n// windows to be in different memory locations\nexport function wNAF<T extends Group<T>>(c: GroupConstructor<T>, bits: number) {\n const constTimeNegate = (condition: boolean, item: T): T => {\n const neg = item.negate();\n return condition ? neg : item;\n };\n const validateW = (W: number) => {\n if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n throw new Error(`Wrong window size=${W}, should be [1..${bits}]`);\n };\n const opts = (W: number) => {\n validateW(W);\n const windows = Math.ceil(bits / W) + 1; // +1, because\n const windowSize = 2 ** (W - 1); // -1 because we skip zero\n return { windows, windowSize };\n };\n return {\n constTimeNegate,\n // non-const time multiplication ladder\n unsafeLadder(elm: T, n: bigint) {\n let p = c.ZERO;\n let d: T = elm;\n while (n > _0n) {\n if (n & _1n) p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n },\n\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(ð‘Šâˆ’1) * (Math.ceil(ð‘› / ð‘Š) + 1), where:\n * - ð‘Š is the window size\n * - ð‘› is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(elm: T, W: number): Group<T>[] {\n const { windows, windowSize } = opts(W);\n const points: T[] = [];\n let p: T = elm;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // =1, because we skip zero\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n },\n\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @returns real and fake (for const-time) points\n */\n wNAF(W: number, precomputes: T[], n: bigint): { p: T; f: T } {\n // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise\n // But need to carefully remove other checks before wNAF. ORDER == bits here\n const { windows, windowSize } = opts(W);\n\n let p = c.ZERO;\n let f = c.BASE;\n\n const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n // Extract W bits.\n let wbits = Number(n & mask);\n\n // Shift number by W bits.\n n >>= shiftBy;\n\n // If the bits are bigger than max size, we'll split those.\n // +224 => 256 - 32\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n\n // Check if we're onto Zero point.\n // Add random point inside current window to f.\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n // The most important part for const-time getPublicKey\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n } else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()\n // Even if the variable is still unused, there are some checks which will\n // throw an exception, so compiler needs to prove they won't happen, which is hard.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n },\n\n wNAFCached(P: T, n: bigint, transform: Mapper<T>): { p: T; f: T } {\n const W: number = pointWindowSizes.get(P) || 1;\n // Calculate precomputes on a first run, reuse them after\n let comp = pointPrecomputes.get(P);\n if (!comp) {\n comp = this.precomputeWindow(P, W) as T[];\n if (W !== 1) pointPrecomputes.set(P, transform(comp));\n }\n return this.wNAF(W, comp, n);\n },\n // We calculate precomputes for elliptic curve point multiplication\n // using windowed method. This specifies window size and\n // stores precomputed values. Usually only base point would be precomputed.\n\n setWindowSize(P: T, W: number) {\n validateW(W);\n pointWindowSizes.set(P, W);\n pointPrecomputes.delete(P);\n },\n };\n}\n\n/**\n * Pippenger algorithm for multi-scalar multiplication (MSM).\n * MSM is basically (Pa + Qb + Rc + ...).\n * 30x faster vs naive addition on L=4096, 10x faster with precomputes.\n * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.\n * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.\n * @param c Curve Point constructor\n * @param field field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @param scalars array of L scalars (aka private keys / bigints)\n */\nexport function pippenger<T extends Group<T>>(\n c: GroupConstructor<T>,\n field: IField<bigint>,\n points: T[],\n scalars: bigint[]\n): T {\n // If we split scalars by some window (let's say 8 bits), every chunk will only\n // take 256 buckets even if there are 4096 scalars, also re-uses double.\n // TODO:\n // - https://eprint.iacr.org/2024/750.pdf\n // - https://tches.iacr.org/index.php/TCHES/article/view/10287\n // 0 is accepted in scalars\n if (!Array.isArray(points) || !Array.isArray(scalars) || scalars.length !== points.length)\n throw new Error('arrays of points and scalars must have equal length');\n scalars.forEach((s, i) => {\n if (!field.isValid(s)) throw new Error(`wrong scalar at index ${i}`);\n });\n points.forEach((p, i) => {\n if (!(p instanceof (c as any))) throw new Error(`wrong point at index ${i}`);\n });\n const wbits = bitLen(BigInt(points.length));\n const windowSize = wbits > 12 ? wbits - 3 : wbits > 4 ? wbits - 2 : wbits ? 2 : 1; // in bits\n const MASK = (1 << windowSize) - 1;\n const buckets = new Array(MASK + 1).fill(c.ZERO); // +1 for zero array\n const lastBits = Math.floor((field.BITS - 1) / windowSize) * windowSize;\n let sum = c.ZERO;\n for (let i = lastBits; i >= 0; i -= windowSize) {\n buckets.fill(c.ZERO);\n for (let j = 0; j < scalars.length; j++) {\n const scalar = scalars[j];\n const wbits = Number((scalar >> BigInt(i)) & BigInt(MASK));\n buckets[wbits] = buckets[wbits].add(points[j]);\n }\n let resI = c.ZERO; // not using this will do small speed-up, but will lose ct\n // Skip first bucket, because it is zero\n for (let j = buckets.length - 1, sumI = c.ZERO; j > 0; j--) {\n sumI = sumI.add(buckets[j]);\n resI = resI.add(sumI);\n }\n sum = sum.add(resI);\n if (i !== 0) for (let j = 0; j < windowSize; j++) sum = sum.double();\n }\n return sum as T;\n}\n\n// Generic BasicCurve interface: works even for polynomial fields (BLS): P, n, h would be ok.\n// Though generator can be different (Fp2 / Fp6 for BLS).\nexport type BasicCurve<T> = {\n Fp: IField<T>; // Field over which we'll do calculations (Fp)\n n: bigint; // Curve order, total count of valid points in the field\n nBitLength?: number; // bit length of curve order\n nByteLength?: number; // byte length of curve order\n h: bigint; // cofactor. we can assign default=1, but users will just ignore it w/o validation\n hEff?: bigint; // Number to multiply to clear cofactor\n Gx: T; // base point X coordinate\n Gy: T; // base point Y coordinate\n allowInfinityPoint?: boolean; // bls12-381 requires it. ZERO point is valid, but invalid pubkey\n};\n\nexport function validateBasic<FP, T>(curve: BasicCurve<FP> & T) {\n validateField(curve.Fp);\n validateObject(\n curve,\n {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n },\n {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n }\n );\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n } as const);\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// Short Weierstrass curve. The formula is: y² = x³ + ax + b\nimport {\n AffinePoint,\n BasicCurve,\n Group,\n GroupConstructor,\n validateBasic,\n wNAF,\n pippenger,\n} from './curve.js';\nimport * as mod from './modular.js';\nimport * as ut from './utils.js';\nimport { CHash, Hex, PrivKey, ensureBytes, memoized, abool } from './utils.js';\n\nexport type { AffinePoint };\ntype HmacFnSync = (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array;\ntype EndomorphismOpts = {\n beta: bigint;\n splitScalar: (k: bigint) => { k1neg: boolean; k1: bigint; k2neg: boolean; k2: bigint };\n};\nexport type BasicWCurve<T> = BasicCurve<T> & {\n // Params: a, b\n a: T;\n b: T;\n\n // Optional params\n allowedPrivateKeyLengths?: readonly number[]; // for P521\n wrapPrivateKey?: boolean; // bls12-381 requires mod(n) instead of rejecting keys >= n\n endo?: EndomorphismOpts; // Endomorphism options for Koblitz curves\n // When a cofactor != 1, there can be an effective methods to:\n // 1. Determine whether a point is torsion-free\n isTorsionFree?: (c: ProjConstructor<T>, point: ProjPointType<T>) => boolean;\n // 2. Clear torsion component\n clearCofactor?: (c: ProjConstructor<T>, point: ProjPointType<T>) => ProjPointType<T>;\n};\n\ntype Entropy = Hex | boolean;\nexport type SignOpts = { lowS?: boolean; extraEntropy?: Entropy; prehash?: boolean };\nexport type VerOpts = { lowS?: boolean; prehash?: boolean };\n\nfunction validateSigVerOpts(opts: SignOpts | VerOpts) {\n if (opts.lowS !== undefined) abool('lowS', opts.lowS);\n if (opts.prehash !== undefined) abool('prehash', opts.prehash);\n}\n\n/**\n * ### Design rationale for types\n *\n * * Interaction between classes from different curves should fail:\n * `k256.Point.BASE.add(p256.Point.BASE)`\n * * For this purpose we want to use `instanceof` operator, which is fast and works during runtime\n * * Different calls of `curve()` would return different classes -\n * `curve(params) !== curve(params)`: if somebody decided to monkey-patch their curve,\n * it won't affect others\n *\n * TypeScript can't infer types for classes created inside a function. Classes is one instance of nominative types in TypeScript and interfaces only check for shape, so it's hard to create unique type for every function call.\n *\n * We can use generic types via some param, like curve opts, but that would:\n * 1. Enable interaction between `curve(params)` and `curve(params)` (curves of same params)\n * which is hard to debug.\n * 2. Params can be generic and we can't enforce them to be constant value:\n * if somebody creates curve from non-constant params,\n * it would be allowed to interact with other curves with non-constant params\n *\n * TODO: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#unique-symbol\n */\n\n// Instance for 3d XYZ points\nexport interface ProjPointType<T> extends Group<ProjPointType<T>> {\n readonly px: T;\n readonly py: T;\n readonly pz: T;\n get x(): T;\n get y(): T;\n multiply(scalar: bigint): ProjPointType<T>;\n toAffine(iz?: T): AffinePoint<T>;\n isTorsionFree(): boolean;\n clearCofactor(): ProjPointType<T>;\n assertValidity(): void;\n hasEvenY(): boolean;\n toRawBytes(isCompressed?: boolean): Uint8Array;\n toHex(isCompressed?: boolean): string;\n\n multiplyUnsafe(scalar: bigint): ProjPointType<T>;\n multiplyAndAddUnsafe(Q: ProjPointType<T>, a: bigint, b: bigint): ProjPointType<T> | undefined;\n _setWindowSize(windowSize: number): void;\n}\n// Static methods for 3d XYZ points\nexport interface ProjConstructor<T> extends GroupConstructor<ProjPointType<T>> {\n new (x: T, y: T, z: T): ProjPointType<T>;\n fromAffine(p: AffinePoint<T>): ProjPointType<T>;\n fromHex(hex: Hex): ProjPointType<T>;\n fromPrivateKey(privateKey: PrivKey): ProjPointType<T>;\n normalizeZ(points: ProjPointType<T>[]): ProjPointType<T>[];\n msm(points: ProjPointType<T>[], scalars: bigint[]): ProjPointType<T>;\n}\n\nexport type CurvePointsType<T> = BasicWCurve<T> & {\n // Bytes\n fromBytes?: (bytes: Uint8Array) => AffinePoint<T>;\n toBytes?: (c: ProjConstructor<T>, point: ProjPointType<T>, isCompressed: boolean) => Uint8Array;\n};\n\nfunction validatePointOpts<T>(curve: CurvePointsType<T>) {\n const opts = validateBasic(curve);\n ut.validateObject(\n opts,\n {\n a: 'field',\n b: 'field',\n },\n {\n allowedPrivateKeyLengths: 'array',\n wrapPrivateKey: 'boolean',\n isTorsionFree: 'function',\n clearCofactor: 'function',\n allowInfinityPoint: 'boolean',\n fromBytes: 'function',\n toBytes: 'function',\n }\n );\n const { endo, Fp, a } = opts;\n if (endo) {\n if (!Fp.eql(a, Fp.ZERO)) {\n throw new Error('Endomorphism can only be defined for Koblitz curves that have a=0');\n }\n if (\n typeof endo !== 'object' ||\n typeof endo.beta !== 'bigint' ||\n typeof endo.splitScalar !== 'function'\n ) {\n throw new Error('Expected endomorphism with beta: bigint and splitScalar: function');\n }\n }\n return Object.freeze({ ...opts } as const);\n}\n\nexport type CurvePointsRes<T> = {\n CURVE: ReturnType<typeof validatePointOpts<T>>;\n ProjectivePoint: ProjConstructor<T>;\n normPrivateKeyToScalar: (key: PrivKey) => bigint;\n weierstrassEquation: (x: T) => T;\n isWithinCurveOrder: (num: bigint) => boolean;\n};\n\nconst { bytesToNumberBE: b2n, hexToBytes: h2b } = ut;\n\n/**\n * ASN.1 DER encoding utilities. ASN is very complex & fragile. Format:\n *\n * [0x30 (SEQUENCE), bytelength, 0x02 (INTEGER), intLength, R, 0x02 (INTEGER), intLength, S]\n *\n * Docs: https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/, https://luca.ntop.org/Teaching/Appunti/asn1.html\n */\nexport const DER = {\n // asn.1 DER encoding utils\n Err: class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n },\n // Basic building block is TLV (Tag-Length-Value)\n _tlv: {\n encode: (tag: number, data: string) => {\n const { Err: E } = DER;\n if (tag < 0 || tag > 256) throw new E('tlv.encode: wrong tag');\n if (data.length & 1) throw new E('tlv.encode: unpadded data');\n const dataLen = data.length / 2;\n const len = ut.numberToHexUnpadded(dataLen);\n if ((len.length / 2) & 0b1000_0000) throw new E('tlv.encode: long form length too big');\n // length of length with long form flag\n const lenLen = dataLen > 127 ? ut.numberToHexUnpadded((len.length / 2) | 0b1000_0000) : '';\n return `${ut.numberToHexUnpadded(tag)}${lenLen}${len}${data}`;\n },\n // v - value, l - left bytes (unparsed)\n decode(tag: number, data: Uint8Array): { v: Uint8Array; l: Uint8Array } {\n const { Err: E } = DER;\n let pos = 0;\n if (tag < 0 || tag > 256) throw new E('tlv.encode: wrong tag');\n if (data.length < 2 || data[pos++] !== tag) throw new E('tlv.decode: wrong tlv');\n const first = data[pos++];\n const isLong = !!(first & 0b1000_0000); // First bit of first length byte is flag for short/long form\n let length = 0;\n if (!isLong) length = first;\n else {\n // Long form: [longFlag(1bit), lengthLength(7bit), length (BE)]\n const lenLen = first & 0b0111_1111;\n if (!lenLen) throw new E('tlv.decode(long): indefinite length not supported');\n if (lenLen > 4) throw new E('tlv.decode(long): byte length is too big'); // this will overflow u32 in js\n const lengthBytes = data.subarray(pos, pos + lenLen);\n if (lengthBytes.length !== lenLen) throw new E('tlv.decode: length bytes not complete');\n if (lengthBytes[0] === 0) throw new E('tlv.decode(long): zero leftmost byte');\n for (const b of lengthBytes) length = (length << 8) | b;\n pos += lenLen;\n if (length < 128) throw new E('tlv.decode(long): not minimal encoding');\n }\n const v = data.subarray(pos, pos + length);\n if (v.length !== length) throw new E('tlv.decode: wrong value length');\n return { v, l: data.subarray(pos + length) };\n },\n },\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n _int: {\n encode(num: bigint) {\n const { Err: E } = DER;\n if (num < _0n) throw new E('integer: negative integers are not allowed');\n let hex = ut.numberToHexUnpadded(num);\n // Pad with zero byte if negative flag is present\n if (Number.parseInt(hex[0], 16) & 0b1000) hex = '00' + hex;\n if (hex.length & 1) throw new E('unexpected assertion');\n return hex;\n },\n decode(data: Uint8Array): bigint {\n const { Err: E } = DER;\n if (data[0] & 0b1000_0000) throw new E('Invalid signature integer: negative');\n if (data[0] === 0x00 && !(data[1] & 0b1000_0000))\n throw new E('Invalid signature integer: unnecessary leading zero');\n return b2n(data);\n },\n },\n toSig(hex: string | Uint8Array): { r: bigint; s: bigint } {\n // parse DER signature\n const { Err: E, _int: int, _tlv: tlv } = DER;\n const data = typeof hex === 'string' ? h2b(hex) : hex;\n ut.abytes(data);\n const { v: seqBytes, l: seqLeftBytes } = tlv.decode(0x30, data);\n if (seqLeftBytes.length) throw new E('Invalid signature: left bytes after parsing');\n const { v: rBytes, l: rLeftBytes } = tlv.decode(0x02, seqBytes);\n const { v: sBytes, l: sLeftBytes } = tlv.decode(0x02, rLeftBytes);\n if (sLeftBytes.length) throw new E('Invalid signature: left bytes after parsing');\n return { r: int.decode(rBytes), s: int.decode(sBytes) };\n },\n hexFromSig(sig: { r: bigint; s: bigint }): string {\n const { _tlv: tlv, _int: int } = DER;\n const seq = `${tlv.encode(0x02, int.encode(sig.r))}${tlv.encode(0x02, int.encode(sig.s))}`;\n return tlv.encode(0x30, seq);\n },\n};\n\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\n\nexport function weierstrassPoints<T>(opts: CurvePointsType<T>): CurvePointsRes<T> {\n const CURVE = validatePointOpts(opts);\n const { Fp } = CURVE; // All curves has same field / group length as for now, but they can differ\n const Fn = mod.Field(CURVE.n, CURVE.nBitLength);\n\n const toBytes =\n CURVE.toBytes ||\n ((_c: ProjConstructor<T>, point: ProjPointType<T>, _isCompressed: boolean) => {\n const a = point.toAffine();\n return ut.concatBytes(Uint8Array.from([0x04]), Fp.toBytes(a.x), Fp.toBytes(a.y));\n });\n const fromBytes =\n CURVE.fromBytes ||\n ((bytes: Uint8Array) => {\n // const head = bytes[0];\n const tail = bytes.subarray(1);\n // if (head !== 0x04) throw new Error('Only non-compressed encoding is supported');\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n });\n\n /**\n * y² = x³ + ax + b: Short weierstrass curve formula\n * @returns y²\n */\n function weierstrassEquation(x: T): T {\n const { a, b } = CURVE;\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x2 * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x3 + a * x + b\n }\n // Validate whether the passed curve params are valid.\n // We check if curve equation works for generator point.\n // `assertValidity()` won't work: `isTorsionFree()` is not available at this point in bls12-381.\n // ProjectivePoint class has not been initialized yet.\n if (!Fp.eql(Fp.sqr(CURVE.Gy), weierstrassEquation(CURVE.Gx)))\n throw new Error('bad generator point: equation left != right');\n\n // Valid group elements reside in range 1..n-1\n function isWithinCurveOrder(num: bigint): boolean {\n return ut.inRange(num, _1n, CURVE.n);\n }\n // Validates if priv key is valid and converts it to bigint.\n // Supports options allowedPrivateKeyLengths and wrapPrivateKey.\n function normPrivateKeyToScalar(key: PrivKey): bigint {\n const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n: N } = CURVE;\n if (lengths && typeof key !== 'bigint') {\n if (ut.isBytes(key)) key = ut.bytesToHex(key);\n // Normalize to hex string, pad. E.g. P521 would norm 130-132 char hex to 132-char bytes\n if (typeof key !== 'string' || !lengths.includes(key.length)) throw new Error('Invalid key');\n key = key.padStart(nByteLength * 2, '0');\n }\n let num: bigint;\n try {\n num =\n typeof key === 'bigint'\n ? key\n : ut.bytesToNumberBE(ensureBytes('private key', key, nByteLength));\n } catch (error) {\n throw new Error(`private key must be ${nByteLength} bytes, hex or bigint, not ${typeof key}`);\n }\n if (wrapPrivateKey) num = mod.mod(num, N); // disabled by default, enabled for BLS\n ut.aInRange('private key', num, _1n, N); // num in range [1..N-1]\n return num;\n }\n\n function assertPrjPoint(other: unknown) {\n if (!(other instanceof Point)) throw new Error('ProjectivePoint expected');\n }\n\n // Memoized toAffine / validity check. They are heavy. Points are immutable.\n\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n const toAffineMemo = memoized((p: Point, iz?: T): AffinePoint<T> => {\n const { px: x, py: y, pz: z } = p;\n // Fast-path for normalized points\n if (Fp.eql(z, Fp.ONE)) return { x, y };\n const is0 = p.is0();\n // If invZ was 0, we return zero point. However we still want to execute\n // all operations, so we replace invZ with a random number, 1.\n if (iz == null) iz = is0 ? Fp.ONE : Fp.inv(z);\n const ax = Fp.mul(x, iz);\n const ay = Fp.mul(y, iz);\n const zz = Fp.mul(z, iz);\n if (is0) return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE)) throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n });\n // NOTE: on exception this will crash 'cached' and no value will be set.\n // Otherwise true will be return\n const assertValidMemo = memoized((p: Point) => {\n if (p.is0()) {\n // (0, 1, 0) aka ZERO is invalid in most contexts.\n // In BLS, ZERO can be serialized, so we allow it.\n // (0, 0, 0) is wrong representation of ZERO and is always invalid.\n if (CURVE.allowInfinityPoint && !Fp.is0(p.py)) return;\n throw new Error('bad point: ZERO');\n }\n // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n const { x, y } = p.toAffine();\n // Check if x, y are valid field elements\n if (!Fp.isValid(x) || !Fp.isValid(y)) throw new Error('bad point: x or y not FE');\n const left = Fp.sqr(y); // y²\n const right = weierstrassEquation(x); // x³ + ax + b\n if (!Fp.eql(left, right)) throw new Error('bad point: equation left != right');\n if (!p.isTorsionFree()) throw new Error('bad point: not in prime-order subgroup');\n return true;\n });\n\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates: (x, y, z) ∋ (x=x/z, y=y/z)\n * Default Point works in 2d / affine coordinates: (x, y)\n * We're doing calculations in projective, because its operations don't require costly inversion.\n */\n class Point implements ProjPointType<T> {\n static readonly BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n static readonly ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO);\n\n constructor(\n readonly px: T,\n readonly py: T,\n readonly pz: T\n ) {\n if (px == null || !Fp.isValid(px)) throw new Error('x required');\n if (py == null || !Fp.isValid(py)) throw new Error('y required');\n if (pz == null || !Fp.isValid(pz)) throw new Error('z required');\n Object.freeze(this);\n }\n\n // Does not validate if the point is on-curve.\n // Use fromHex instead, or call assertValidity() later.\n static fromAffine(p: AffinePoint<T>): Point {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y)) throw new Error('invalid affine point');\n if (p instanceof Point) throw new Error('projective point not allowed');\n const is0 = (i: T) => Fp.eql(i, Fp.ZERO);\n // fromAffine(x:0, y:0) would produce (x:0, y:0, z:1), but we need (x:0, y:1, z:0)\n if (is0(x) && is0(y)) return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n\n get x(): T {\n return this.toAffine().x;\n }\n get y(): T {\n return this.toAffine().y;\n }\n\n /**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\n static normalizeZ(points: Point[]): Point[] {\n const toInv = Fp.invertBatch(points.map((p) => p.pz));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n\n /**\n * Converts hash string or Uint8Array to Point.\n * @param hex short/long ECDSA hex\n */\n static fromHex(hex: Hex): Point {\n const P = Point.fromAffine(fromBytes(ensureBytes('pointHex', hex)));\n P.assertValidity();\n return P;\n }\n\n // Multiplies generator point by privateKey.\n static fromPrivateKey(privateKey: PrivKey) {\n return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));\n }\n\n // Multiscalar Multiplication\n static msm(points: Point[], scalars: bigint[]) {\n return pippenger(Point, Fn, points, scalars);\n }\n\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize: number) {\n wnaf.setWindowSize(this, windowSize);\n }\n\n // A point on curve is valid if it conforms to equation.\n assertValidity(): void {\n assertValidMemo(this);\n }\n\n hasEvenY(): boolean {\n const { y } = this.toAffine();\n if (Fp.isOdd) return !Fp.isOdd(y);\n throw new Error(\"Field doesn't support isOdd\");\n }\n\n /**\n * Compare one point to another.\n */\n equals(other: Point): boolean {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n return U1 && U2;\n }\n\n /**\n * Flips point to one corresponding to (x, -y) in Affine coordinates.\n */\n negate(): Point {\n return new Point(this.px, Fp.neg(this.py), this.pz);\n }\n\n // Renes-Costello-Batina exception-free doubling formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 3\n // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n double() {\n const { a, b } = CURVE;\n const b3 = Fp.mul(b, _3n);\n const { px: X1, py: Y1, pz: Z1 } = this;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n let t0 = Fp.mul(X1, X1); // step 1\n let t1 = Fp.mul(Y1, Y1);\n let t2 = Fp.mul(Z1, Z1);\n let t3 = Fp.mul(X1, Y1);\n t3 = Fp.add(t3, t3); // step 5\n Z3 = Fp.mul(X1, Z1);\n Z3 = Fp.add(Z3, Z3);\n X3 = Fp.mul(a, Z3);\n Y3 = Fp.mul(b3, t2);\n Y3 = Fp.add(X3, Y3); // step 10\n X3 = Fp.sub(t1, Y3);\n Y3 = Fp.add(t1, Y3);\n Y3 = Fp.mul(X3, Y3);\n X3 = Fp.mul(t3, X3);\n Z3 = Fp.mul(b3, Z3); // step 15\n t2 = Fp.mul(a, t2);\n t3 = Fp.sub(t0, t2);\n t3 = Fp.mul(a, t3);\n t3 = Fp.add(t3, Z3);\n Z3 = Fp.add(t0, t0); // step 20\n t0 = Fp.add(Z3, t0);\n t0 = Fp.add(t0, t2);\n t0 = Fp.mul(t0, t3);\n Y3 = Fp.add(Y3, t0);\n t2 = Fp.mul(Y1, Z1); // step 25\n t2 = Fp.add(t2, t2);\n t0 = Fp.mul(t2, t3);\n X3 = Fp.sub(X3, t0);\n Z3 = Fp.mul(t2, t1);\n Z3 = Fp.add(Z3, Z3); // step 30\n Z3 = Fp.add(Z3, Z3);\n return new Point(X3, Y3, Z3);\n }\n\n // Renes-Costello-Batina exception-free addition formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 1\n // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n add(other: Point): Point {\n assertPrjPoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n const a = CURVE.a;\n const b3 = Fp.mul(CURVE.b, _3n);\n let t0 = Fp.mul(X1, X2); // step 1\n let t1 = Fp.mul(Y1, Y2);\n let t2 = Fp.mul(Z1, Z2);\n let t3 = Fp.add(X1, Y1);\n let t4 = Fp.add(X2, Y2); // step 5\n t3 = Fp.mul(t3, t4);\n t4 = Fp.add(t0, t1);\n t3 = Fp.sub(t3, t4);\n t4 = Fp.add(X1, Z1);\n let t5 = Fp.add(X2, Z2); // step 10\n t4 = Fp.mul(t4, t5);\n t5 = Fp.add(t0, t2);\n t4 = Fp.sub(t4, t5);\n t5 = Fp.add(Y1, Z1);\n X3 = Fp.add(Y2, Z2); // step 15\n t5 = Fp.mul(t5, X3);\n X3 = Fp.add(t1, t2);\n t5 = Fp.sub(t5, X3);\n Z3 = Fp.mul(a, t4);\n X3 = Fp.mul(b3, t2); // step 20\n Z3 = Fp.add(X3, Z3);\n X3 = Fp.sub(t1, Z3);\n Z3 = Fp.add(t1, Z3);\n Y3 = Fp.mul(X3, Z3);\n t1 = Fp.add(t0, t0); // step 25\n t1 = Fp.add(t1, t0);\n t2 = Fp.mul(a, t2);\n t4 = Fp.mul(b3, t4);\n t1 = Fp.add(t1, t2);\n t2 = Fp.sub(t0, t2); // step 30\n t2 = Fp.mul(a, t2);\n t4 = Fp.add(t4, t2);\n t0 = Fp.mul(t1, t4);\n Y3 = Fp.add(Y3, t0);\n t0 = Fp.mul(t5, t4); // step 35\n X3 = Fp.mul(t3, X3);\n X3 = Fp.sub(X3, t0);\n t0 = Fp.mul(t3, t1);\n Z3 = Fp.mul(t5, Z3);\n Z3 = Fp.add(Z3, t0); // step 40\n return new Point(X3, Y3, Z3);\n }\n\n subtract(other: Point) {\n return this.add(other.negate());\n }\n\n is0() {\n return this.equals(Point.ZERO);\n }\n private wNAF(n: bigint): { p: Point; f: Point } {\n return wnaf.wNAFCached(this, n, Point.normalizeZ);\n }\n\n /**\n * Non-constant-time multiplication. Uses double-and-add algorithm.\n * It's faster, but should only be used when you don't care about\n * an exposed private key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(sc: bigint): Point {\n ut.aInRange('scalar', sc, _0n, CURVE.n);\n const I = Point.ZERO;\n if (sc === _0n) return I;\n if (sc === _1n) return this;\n const { endo } = CURVE;\n if (!endo) return wnaf.unsafeLadder(this, sc);\n\n // Apply endomorphism\n let { k1neg, k1, k2neg, k2 } = endo.splitScalar(sc);\n let k1p = I;\n let k2p = I;\n let d: Point = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n) k1p = k1p.add(d);\n if (k2 & _1n) k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg) k1p = k1p.negate();\n if (k2neg) k2p = k2p.negate();\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n return k1p.add(k2p);\n }\n\n /**\n * Constant time multiplication.\n * Uses wNAF method. Windowed method may be 10% faster,\n * but takes 2x longer to generate and consumes 2x memory.\n * Uses precomputes when available.\n * Uses endomorphism for Koblitz curves.\n * @param scalar by which the point would be multiplied\n * @returns New point\n */\n multiply(scalar: bigint): Point {\n const { endo, n: N } = CURVE;\n ut.aInRange('scalar', scalar, _1n, N);\n let point: Point, fake: Point; // Fake point is used to const-time mult\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = endo.splitScalar(scalar);\n let { p: k1p, f: f1p } = this.wNAF(k1);\n let { p: k2p, f: f2p } = this.wNAF(k2);\n k1p = wnaf.constTimeNegate(k1neg, k1p);\n k2p = wnaf.constTimeNegate(k2neg, k2p);\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n } else {\n const { p, f } = this.wNAF(scalar);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return Point.normalizeZ([point, fake])[0];\n }\n\n /**\n * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.\n * Not using Strauss-Shamir trick: precomputation tables are faster.\n * The trick could be useful if both P and Q are not G (not in our case).\n * @returns non-zero affine point\n */\n multiplyAndAddUnsafe(Q: Point, a: bigint, b: bigint): Point | undefined {\n const G = Point.BASE; // No Strauss-Shamir trick: we have 10% faster G precomputes\n const mul = (\n P: Point,\n a: bigint // Select faster multiply() method\n ) => (a === _0n || a === _1n || !P.equals(G) ? P.multiplyUnsafe(a) : P.multiply(a));\n const sum = mul(this, a).add(mul(Q, b));\n return sum.is0() ? undefined : sum;\n }\n\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n toAffine(iz?: T): AffinePoint<T> {\n return toAffineMemo(this, iz);\n }\n isTorsionFree(): boolean {\n const { h: cofactor, isTorsionFree } = CURVE;\n if (cofactor === _1n) return true; // No subgroups, always torsion-free\n if (isTorsionFree) return isTorsionFree(Point, this);\n throw new Error('isTorsionFree() has not been declared for the elliptic curve');\n }\n clearCofactor(): Point {\n const { h: cofactor, clearCofactor } = CURVE;\n if (cofactor === _1n) return this; // Fast-path\n if (clearCofactor) return clearCofactor(Point, this) as Point;\n return this.multiplyUnsafe(CURVE.h);\n }\n\n toRawBytes(isCompressed = true): Uint8Array {\n abool('isCompressed', isCompressed);\n this.assertValidity();\n return toBytes(Point, this, isCompressed);\n }\n\n toHex(isCompressed = true): string {\n abool('isCompressed', isCompressed);\n return ut.bytesToHex(this.toRawBytes(isCompressed));\n }\n }\n const _bits = CURVE.nBitLength;\n const wnaf = wNAF(Point, CURVE.endo ? Math.ceil(_bits / 2) : _bits);\n // Validate if generator point is on curve\n return {\n CURVE,\n ProjectivePoint: Point as ProjConstructor<T>,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n };\n}\n\n// Instance\nexport interface SignatureType {\n readonly r: bigint;\n readonly s: bigint;\n readonly recovery?: number;\n assertValidity(): void;\n addRecoveryBit(recovery: number): RecoveredSignatureType;\n hasHighS(): boolean;\n normalizeS(): SignatureType;\n recoverPublicKey(msgHash: Hex): ProjPointType<bigint>;\n toCompactRawBytes(): Uint8Array;\n toCompactHex(): string;\n // DER-encoded\n toDERRawBytes(isCompressed?: boolean): Uint8Array;\n toDERHex(isCompressed?: boolean): string;\n}\nexport type RecoveredSignatureType = SignatureType & {\n readonly recovery: number;\n};\n// Static methods\nexport type SignatureConstructor = {\n new (r: bigint, s: bigint): SignatureType;\n fromCompact(hex: Hex): SignatureType;\n fromDER(hex: Hex): SignatureType;\n};\ntype SignatureLike = { r: bigint; s: bigint };\n\nexport type PubKey = Hex | ProjPointType<bigint>;\n\nexport type CurveType = BasicWCurve<bigint> & {\n hash: CHash; // CHash not FHash because we need outputLen for DRBG\n hmac: HmacFnSync;\n randomBytes: (bytesLength?: number) => Uint8Array;\n lowS?: boolean;\n bits2int?: (bytes: Uint8Array) => bigint;\n bits2int_modN?: (bytes: Uint8Array) => bigint;\n};\n\nfunction validateOpts(curve: CurveType) {\n const opts = validateBasic(curve);\n ut.validateObject(\n opts,\n {\n hash: 'hash',\n hmac: 'function',\n randomBytes: 'function',\n },\n {\n bits2int: 'function',\n bits2int_modN: 'function',\n lowS: 'boolean',\n }\n );\n return Object.freeze({ lowS: true, ...opts } as const);\n}\n\nexport type CurveFn = {\n CURVE: ReturnType<typeof validateOpts>;\n getPublicKey: (privateKey: PrivKey, isCompressed?: boolean) => Uint8Array;\n getSharedSecret: (privateA: PrivKey, publicB: Hex, isCompressed?: boolean) => Uint8Array;\n sign: (msgHash: Hex, privKey: PrivKey, opts?: SignOpts) => RecoveredSignatureType;\n verify: (signature: Hex | SignatureLike, msgHash: Hex, publicKey: Hex, opts?: VerOpts) => boolean;\n ProjectivePoint: ProjConstructor<bigint>;\n Signature: SignatureConstructor;\n utils: {\n normPrivateKeyToScalar: (key: PrivKey) => bigint;\n isValidPrivateKey(privateKey: PrivKey): boolean;\n randomPrivateKey: () => Uint8Array;\n precompute: (windowSize?: number, point?: ProjPointType<bigint>) => ProjPointType<bigint>;\n };\n};\n\n/**\n * Creates short weierstrass curve and ECDSA signature methods for it.\n * @example\n * import { Field } from '@noble/curves/abstract/modular';\n * // Before that, define BigInt-s: a, b, p, n, Gx, Gy\n * const curve = weierstrass({ a, b, Fp: Field(p), n, Gx, Gy, h: 1n })\n */\nexport function weierstrass(curveDef: CurveType): CurveFn {\n const CURVE = validateOpts(curveDef) as ReturnType<typeof validateOpts>;\n const { Fp, n: CURVE_ORDER } = CURVE;\n const compressedLen = Fp.BYTES + 1; // e.g. 33 for 32\n const uncompressedLen = 2 * Fp.BYTES + 1; // e.g. 65 for 32\n\n function modN(a: bigint) {\n return mod.mod(a, CURVE_ORDER);\n }\n function invN(a: bigint) {\n return mod.invert(a, CURVE_ORDER);\n }\n\n const {\n ProjectivePoint: Point,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n } = weierstrassPoints({\n ...CURVE,\n toBytes(_c, point, isCompressed: boolean): Uint8Array {\n const a = point.toAffine();\n const x = Fp.toBytes(a.x);\n const cat = ut.concatBytes;\n abool('isCompressed', isCompressed);\n if (isCompressed) {\n return cat(Uint8Array.from([point.hasEvenY() ? 0x02 : 0x03]), x);\n } else {\n return cat(Uint8Array.from([0x04]), x, Fp.toBytes(a.y));\n }\n },\n fromBytes(bytes: Uint8Array) {\n const len = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // this.assertValidity() is done inside of fromHex\n if (len === compressedLen && (head === 0x02 || head === 0x03)) {\n const x = ut.bytesToNumberBE(tail);\n if (!ut.inRange(x, _1n, Fp.ORDER)) throw new Error('Point is not on curve');\n const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n let y: bigint;\n try {\n y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n } catch (sqrtError) {\n const suffix = sqrtError instanceof Error ? ': ' + sqrtError.message : '';\n throw new Error('Point is not on curve' + suffix);\n }\n const isYOdd = (y & _1n) === _1n;\n // ECDSA\n const isHeadOdd = (head & 1) === 1;\n if (isHeadOdd !== isYOdd) y = Fp.neg(y);\n return { x, y };\n } else if (len === uncompressedLen && head === 0x04) {\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n } else {\n throw new Error(\n `Point of length ${len} was invalid. Expected ${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes`\n );\n }\n },\n });\n const numToNByteStr = (num: bigint): string =>\n ut.bytesToHex(ut.numberToBytesBE(num, CURVE.nByteLength));\n\n function isBiggerThanHalfOrder(number: bigint) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n\n function normalizeS(s: bigint) {\n return isBiggerThanHalfOrder(s) ? modN(-s) : s;\n }\n // slice bytes num\n const slcNum = (b: Uint8Array, from: number, to: number) => ut.bytesToNumberBE(b.slice(from, to));\n\n /**\n * ECDSA signature with its (r, s) properties. Supports DER & compact representations.\n */\n class Signature implements SignatureType {\n constructor(\n readonly r: bigint,\n readonly s: bigint,\n readonly recovery?: number\n ) {\n this.assertValidity();\n }\n\n // pair (bytes of r, bytes of s)\n static fromCompact(hex: Hex) {\n const l = CURVE.nByteLength;\n hex = ensureBytes('compactSignature', hex, l * 2);\n return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));\n }\n\n // DER encoded ECDSA signature\n // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n static fromDER(hex: Hex) {\n const { r, s } = DER.toSig(ensureBytes('DER', hex));\n return new Signature(r, s);\n }\n\n assertValidity(): void {\n ut.aInRange('r', this.r, _1n, CURVE_ORDER); // r in [1..N]\n ut.aInRange('s', this.s, _1n, CURVE_ORDER); // s in [1..N]\n }\n\n addRecoveryBit(recovery: number): RecoveredSignature {\n return new Signature(this.r, this.s, recovery) as RecoveredSignature;\n }\n\n recoverPublicKey(msgHash: Hex): typeof Point.BASE {\n const { r, s, recovery: rec } = this;\n const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash\n if (rec == null || ![0, 1, 2, 3].includes(rec)) throw new Error('recovery id invalid');\n const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;\n if (radj >= Fp.ORDER) throw new Error('recovery id 2 or 3 invalid');\n const prefix = (rec & 1) === 0 ? '02' : '03';\n const R = Point.fromHex(prefix + numToNByteStr(radj));\n const ir = invN(radj); // r^-1\n const u1 = modN(-h * ir); // -hr^-1\n const u2 = modN(s * ir); // sr^-1\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2); // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1)\n if (!Q) throw new Error('point at infinify'); // unsafe is fine: no priv data leaked\n Q.assertValidity();\n return Q;\n }\n\n // Signatures should be low-s, to prevent malleability.\n hasHighS(): boolean {\n return isBiggerThanHalfOrder(this.s);\n }\n\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, modN(-this.s), this.recovery) : this;\n }\n\n // DER-encoded\n toDERRawBytes() {\n return ut.hexToBytes(this.toDERHex());\n }\n toDERHex() {\n return DER.hexFromSig({ r: this.r, s: this.s });\n }\n\n // padded bytes of r, then padded bytes of s\n toCompactRawBytes() {\n return ut.hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numToNByteStr(this.r) + numToNByteStr(this.s);\n }\n }\n type RecoveredSignature = Signature & { recovery: number };\n\n const utils = {\n isValidPrivateKey(privateKey: PrivKey) {\n try {\n normPrivateKeyToScalar(privateKey);\n return true;\n } catch (error) {\n return false;\n }\n },\n normPrivateKeyToScalar: normPrivateKeyToScalar,\n\n /**\n * Produces cryptographically secure private key from random of size\n * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n */\n randomPrivateKey: (): Uint8Array => {\n const length = mod.getMinHashLength(CURVE.n);\n return mod.mapHashToField(CURVE.randomBytes(length), CURVE.n);\n },\n\n /**\n * Creates precompute table for an arbitrary EC point. Makes point \"cached\".\n * Allows to massively speed-up `point.multiply(scalar)`.\n * @returns cached point\n * @example\n * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));\n * fast.multiply(privKey); // much faster ECDH now\n */\n precompute(windowSize = 8, point = Point.BASE): typeof Point.BASE {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3)); // 3 is arbitrary, just need any number here\n return point;\n },\n };\n\n /**\n * Computes public key for a private key. Checks for validity of the private key.\n * @param privateKey private key\n * @param isCompressed whether to return compact (default), or full key\n * @returns Public key, full when isCompressed=false; short when isCompressed=true\n */\n function getPublicKey(privateKey: PrivKey, isCompressed = true): Uint8Array {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n }\n\n /**\n * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n */\n function isProbPub(item: PrivKey | PubKey): boolean {\n const arr = ut.isBytes(item);\n const str = typeof item === 'string';\n const len = (arr || str) && (item as Hex).length;\n if (arr) return len === compressedLen || len === uncompressedLen;\n if (str) return len === 2 * compressedLen || len === 2 * uncompressedLen;\n if (item instanceof Point) return true;\n return false;\n }\n\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from private key and public key.\n * Checks: 1) private key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param privateA private key\n * @param publicB different public key\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(privateA: PrivKey, publicB: Hex, isCompressed = true): Uint8Array {\n if (isProbPub(privateA)) throw new Error('first arg must be private key');\n if (!isProbPub(publicB)) throw new Error('second arg must be public key');\n const b = Point.fromHex(publicB); // check for being on-curve\n return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);\n }\n\n // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n const bits2int =\n CURVE.bits2int ||\n function (bytes: Uint8Array): bigint {\n // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n // for some cases, since bytes.length * 8 is not actual bitLength.\n const num = ut.bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - CURVE.nBitLength; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN =\n CURVE.bits2int_modN ||\n function (bytes: Uint8Array): bigint {\n return modN(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // NOTE: pads output with zero as per spec\n const ORDER_MASK = ut.bitMask(CURVE.nBitLength);\n /**\n * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.\n */\n function int2octets(num: bigint): Uint8Array {\n ut.aInRange(`num < 2^${CURVE.nBitLength}`, num, _0n, ORDER_MASK);\n // works with order, can have different size than numToField!\n return ut.numberToBytesBE(num, CURVE.nByteLength);\n }\n\n // Steps A, D of RFC6979 3.2\n // Creates RFC6979 seed; converts msg/privKey to numbers.\n // Used only in sign, not in verify.\n // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order, this will be wrong at least for P521.\n // Also it can be bigger for P224 + SHA256\n function prepSig(msgHash: Hex, privateKey: PrivKey, opts = defaultSigOpts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { hash, randomBytes } = CURVE;\n let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default\n if (lowS == null) lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash\n msgHash = ensureBytes('msgHash', msgHash);\n validateSigVerOpts(opts);\n if (prehash) msgHash = ensureBytes('prehashed msgHash', hash(msgHash));\n\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with nBitLength % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n const h1int = bits2int_modN(msgHash);\n const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (ent != null && ent !== false) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n const e = ent === true ? randomBytes(Fp.BYTES) : ent; // generate random bytes OR pass as-is\n seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n }\n const seed = ut.concatBytes(...seedArgs); // Step D of RFC6979 3.2\n const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n // Converts signature params into point w r/s, checks result for validity.\n function k2sig(kBytes: Uint8Array): RecoveredSignature | undefined {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n const k = bits2int(kBytes); // Cannot use fields methods, since it is group element\n if (!isWithinCurveOrder(k)) return; // Important: all mod() calls here must be done over N\n const ik = invN(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = Gk\n const r = modN(q.x); // r = q.x mod n\n if (r === _0n) return;\n // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n const s = modN(ik * modN(m + r * d)); // Not using blinding here\n if (s === _0n) return;\n let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n let normS = s;\n if (lowS && isBiggerThanHalfOrder(s)) {\n normS = normalizeS(s); // if lowS was passed, ensure s is always\n recovery ^= 1; // // in the bottom half of N\n }\n return new Signature(r, normS, recovery) as RecoveredSignature; // use normS, not s\n }\n return { seed, k2sig };\n }\n const defaultSigOpts: SignOpts = { lowS: CURVE.lowS, prehash: false };\n const defaultVerOpts: VerOpts = { lowS: CURVE.lowS, prehash: false };\n\n /**\n * Signs message hash with a private key.\n * ```\n * sign(m, d, k) where\n * (x, y) = G × k\n * r = x mod n\n * s = (m + dr)/k mod n\n * ```\n * @param msgHash NOT message. msg needs to be hashed to `msgHash`, or use `prehash`.\n * @param privKey private key\n * @param opts lowS for non-malleable sigs. extraEntropy for mixing randomness into k. prehash will hash first arg.\n * @returns signature with recovery param\n */\n function sign(msgHash: Hex, privKey: PrivKey, opts = defaultSigOpts): RecoveredSignature {\n const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.\n const C = CURVE;\n const drbg = ut.createHmacDrbg<RecoveredSignature>(C.hash.outputLen, C.nByteLength, C.hmac);\n return drbg(seed, k2sig); // Steps B, C, D, E, F, G\n }\n\n // Enable precomputes. Slows down first publicKey computation by 20ms.\n Point.BASE._setWindowSize(8);\n // utils.precompute(8, ProjectivePoint.BASE)\n\n /**\n * Verifies a signature against message hash and public key.\n * Rejects lowS signatures by default: to override,\n * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n *\n * ```\n * verify(r, s, h, P) where\n * U1 = hs^-1 mod n\n * U2 = rs^-1 mod n\n * R = U1â‹…G - U2â‹…P\n * mod(R.x, n) == r\n * ```\n */\n function verify(\n signature: Hex | SignatureLike,\n msgHash: Hex,\n publicKey: Hex,\n opts = defaultVerOpts\n ): boolean {\n const sg = signature;\n msgHash = ensureBytes('msgHash', msgHash);\n publicKey = ensureBytes('publicKey', publicKey);\n if ('strict' in opts) throw new Error('options.strict was renamed to lowS');\n validateSigVerOpts(opts);\n const { lowS, prehash } = opts;\n\n let _sig: Signature | undefined = undefined;\n let P: ProjPointType<bigint>;\n try {\n if (typeof sg === 'string' || ut.isBytes(sg)) {\n // Signature can be represented in 2 ways: compact (2*nByteLength) & DER (variable-length).\n // Since DER can also be 2*nByteLength bytes, we check for it first.\n try {\n _sig = Signature.fromDER(sg);\n } catch (derError) {\n if (!(derError instanceof DER.Err)) throw derError;\n _sig = Signature.fromCompact(sg);\n }\n } else if (typeof sg === 'object' && typeof sg.r === 'bigint' && typeof sg.s === 'bigint') {\n const { r, s } = sg;\n _sig = new Signature(r, s);\n } else {\n throw new Error('PARSE');\n }\n P = Point.fromHex(publicKey);\n } catch (error) {\n if ((error as Error).message === 'PARSE')\n throw new Error(`signature must be Signature instance, Uint8Array or hex string`);\n return false;\n }\n if (lowS && _sig.hasHighS()) return false;\n if (prehash) msgHash = CURVE.hash(msgHash);\n const { r, s } = _sig;\n const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element\n const is = invN(s); // s^-1\n const u1 = modN(h * is); // u1 = hs^-1 mod n\n const u2 = modN(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); // R = u1â‹…G + u2â‹…P\n if (!R) return false;\n const v = modN(R.x);\n return v === r;\n }\n return {\n CURVE,\n getPublicKey,\n getSharedSecret,\n sign,\n verify,\n ProjectivePoint: Point,\n Signature,\n utils,\n };\n}\n\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio<T>(Fp: mod.IField<T>, Z: T) {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n) l += _1n;\n const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n // 2n ** c1 == 2n << (c1-1)\n const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic\n const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic\n const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic\n const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1) # Integer arithmetic\n const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n let sqrtRatio = (u: T, v: T): { isValid: boolean; value: T } => {\n let tv1 = c6; // 1. tv1 = c6\n let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n // 17. for i in (c1, c1 - 1, ..., 2):\n for (let i = c1; i > _1n; i--) {\n let tv5 = i - _2n; // 18. tv5 = i - 2\n tv5 = _2n << (tv5 - _1n); // 19. tv5 = 2^tv5\n let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5\n const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1\n tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1\n tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1\n tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)\n tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)\n }\n return { isValid: isQR, value: tv3 };\n };\n if (Fp.ORDER % _4n === _3n) {\n // sqrt_ratio_3mod4(u, v)\n const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic\n const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n sqrtRatio = (u: T, v: T) => {\n let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n };\n }\n // No curves uses that\n // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU<T>(\n Fp: mod.IField<T>,\n opts: {\n A: T;\n B: T;\n Z: T;\n }\n) {\n mod.validateField(Fp);\n if (!Fp.isValid(opts.A) || !Fp.isValid(opts.B) || !Fp.isValid(opts.Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, opts.Z);\n if (!Fp.isOdd) throw new Error('Fp.isOdd is not implemented!');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u: T): { x: T; y: T } => {\n // prettier-ignore\n let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, opts.Z); // 2. tv1 = Z * tv1\n tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2\n tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1\n tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1\n tv3 = Fp.mul(tv3, opts.B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(opts.Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, opts.A); // 8. tv4 = A * tv4\n tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2\n tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n tv5 = Fp.mul(tv6, opts.A); // 11. tv5 = A * tv6\n tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n tv5 = Fp.mul(tv6, opts.B); // 15. tv5 = B * tv6\n tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3\n const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1\n y = Fp.mul(y, value); // 20. y = y * y1\n x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)\n y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)\n const e1 = Fp.isOdd!(u) === Fp.isOdd!(y); // 23. e1 = sgn0(u) == sgn0(y)\n y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)\n x = Fp.div(x, tv4); // 25. x = x / tv4\n return { x, y };\n };\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac } from '@noble/hashes/hmac';\nimport { concatBytes, randomBytes } from '@noble/hashes/utils';\nimport { CHash } from './abstract/utils.js';\nimport { CurveType, weierstrass } from './abstract/weierstrass.js';\n\n// connects noble-curves to noble-hashes\nexport function getHash(hash: CHash) {\n return {\n hash,\n hmac: (key: Uint8Array, ...msgs: Uint8Array[]) => hmac(hash, key, concatBytes(...msgs)),\n randomBytes,\n };\n}\n// Same API as @noble/hashes, with ability to create curve with custom hash\ntype CurveDef = Readonly<Omit<CurveType, 'hash' | 'hmac' | 'randomBytes'>>;\nexport function createCurve(curveDef: CurveDef, defHash: CHash) {\n const create = (hash: CHash) => weierstrass({ ...curveDef, ...getHash(hash) });\n return Object.freeze({ ...create(defHash), create });\n}\n","/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha256';\nimport { randomBytes } from '@noble/hashes/utils';\nimport { createCurve } from './_shortw_utils.js';\nimport { createHasher, isogenyMap } from './abstract/hash-to-curve.js';\nimport { Field, mod, pow2 } from './abstract/modular.js';\nimport type { Hex, PrivKey } from './abstract/utils.js';\nimport {\n inRange,\n aInRange,\n bytesToNumberBE,\n concatBytes,\n ensureBytes,\n numberToBytesBE,\n} from './abstract/utils.js';\nimport { ProjPointType as PointType, mapToCurveSimpleSWU } from './abstract/weierstrass.js';\n\nconst secp256k1P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');\nconst secp256k1N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst divNearest = (a: bigint, b: bigint) => (a + b / _2n) / b;\n\n/**\n * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.\n * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]\n */\nfunction sqrtMod(y: bigint): bigint {\n const P = secp256k1P;\n // prettier-ignore\n const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n // prettier-ignore\n const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n const b2 = (y * y * y) % P; // x^3, 11\n const b3 = (b2 * b2 * y) % P; // x^7\n const b6 = (pow2(b3, _3n, P) * b3) % P;\n const b9 = (pow2(b6, _3n, P) * b3) % P;\n const b11 = (pow2(b9, _2n, P) * b2) % P;\n const b22 = (pow2(b11, _11n, P) * b11) % P;\n const b44 = (pow2(b22, _22n, P) * b22) % P;\n const b88 = (pow2(b44, _44n, P) * b44) % P;\n const b176 = (pow2(b88, _88n, P) * b88) % P;\n const b220 = (pow2(b176, _44n, P) * b44) % P;\n const b223 = (pow2(b220, _3n, P) * b3) % P;\n const t1 = (pow2(b223, _23n, P) * b22) % P;\n const t2 = (pow2(t1, _6n, P) * b2) % P;\n const root = pow2(t2, _2n, P);\n if (!Fp.eql(Fp.sqr(root), y)) throw new Error('Cannot find square root');\n return root;\n}\n\nconst Fp = Field(secp256k1P, undefined, undefined, { sqrt: sqrtMod });\n\n/**\n * secp256k1 short weierstrass curve and ECDSA signatures over it.\n */\nexport const secp256k1 = createCurve(\n {\n a: BigInt(0), // equation params: a, b\n b: BigInt(7), // Seem to be rigid: bitcointalk.org/index.php?topic=289795.msg3183975#msg3183975\n Fp, // Field's prime: 2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n\n n: secp256k1N, // Curve order, total count of valid points in the field\n // Base point (x, y) aka generator point\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n h: BigInt(1), // Cofactor\n lowS: true, // Allow only low-S signatures by default in sign() and verify()\n /**\n * secp256k1 belongs to Koblitz curves: it has efficiently computable endomorphism.\n * Endomorphism uses 2x less RAM, speeds up precomputation by 2x and ECDH / key recovery by 20%.\n * For precomputed wNAF it trades off 1/2 init time & 1/3 ram for 20% perf hit.\n * Explanation: https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066\n */\n endo: {\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n splitScalar: (k: bigint) => {\n const n = secp256k1N;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const POW_2_128 = BigInt('0x100000000000000000000000000000000'); // (2n**128n).toString(16)\n\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg) k1 = n - k1;\n if (k2neg) k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalar: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n },\n },\n },\n sha256\n);\n\n// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.\n// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\nconst _0n = BigInt(0);\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES: { [tag: string]: Uint8Array } = {};\nfunction taggedHash(tag: string, ...messages: Uint8Array[]): Uint8Array {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return sha256(concatBytes(tagP, ...messages));\n}\n\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point: PointType<bigint>) => point.toRawBytes(true).slice(1);\nconst numTo32b = (n: bigint) => numberToBytesBE(n, 32);\nconst modP = (x: bigint) => mod(x, secp256k1P);\nconst modN = (x: bigint) => mod(x, secp256k1N);\nconst Point = secp256k1.ProjectivePoint;\nconst GmulAdd = (Q: PointType<bigint>, a: bigint, b: bigint) =>\n Point.BASE.multiplyAndAddUnsafe(Q, a, b);\n\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv: PrivKey) {\n let d_ = secp256k1.utils.normPrivateKeyToScalar(priv); // same method executed in fromPrivateKey\n let p = Point.fromPrivateKey(d_); // P = d'â‹…G; 0 < d' < n check is done inside\n const scalar = p.hasEvenY() ? d_ : modN(-d_);\n return { scalar: scalar, bytes: pointToBytes(p) };\n}\n/**\n * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.\n * @returns valid point checked for being on-curve\n */\nfunction lift_x(x: bigint): PointType<bigint> {\n aInRange('x', x, _1n, secp256k1P); // Fail if x ≥ p.\n const xx = modP(x * x);\n const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.\n let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.\n if (y % _2n !== _0n) y = modP(-y); // Return the unique point P such that x(P) = x and\n const p = new Point(x, y, _1n); // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n p.assertValidity();\n return p;\n}\nconst num = bytesToNumberBE;\n/**\n * Create tagged hash, convert it to bigint, reduce modulo-n.\n */\nfunction challenge(...args: Uint8Array[]): bigint {\n return modN(num(taggedHash('BIP0340/challenge', ...args)));\n}\n\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(privateKey: Hex): Uint8Array {\n return schnorrGetExtPubKey(privateKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'â‹…G)\n}\n\n/**\n * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.\n * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.\n */\nfunction schnorrSign(\n message: Hex,\n privateKey: PrivKey,\n auxRand: Hex = randomBytes(32)\n): Uint8Array {\n const m = ensureBytes('message', message);\n const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); // checks for isWithinCurveOrder\n const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n const t = numTo32b(d ^ num(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)\n const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)\n const k_ = modN(num(rand)); // Let k' = int(rand) mod n\n if (k_ === _0n) throw new Error('sign failed: k is zero'); // Fail if k' = 0.\n const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_); // Let R = k'â‹…G.\n const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.\n const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).\n sig.set(rx, 0);\n sig.set(numTo32b(modN(k + e * d)), 32);\n // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n if (!schnorrVerify(sig, m, px)) throw new Error('sign: Invalid signature produced');\n return sig;\n}\n\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature: Hex, message: Hex, publicKey: Hex): boolean {\n const sig = ensureBytes('signature', signature, 64);\n const m = ensureBytes('message', message);\n const pub = ensureBytes('publicKey', publicKey, 32);\n try {\n const P = lift_x(num(pub)); // P = lift_x(int(pk)); fail if that fails\n const r = num(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.\n if (!inRange(r, _1n, secp256k1P)) return false;\n const s = num(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.\n if (!inRange(s, _1n, secp256k1N)) return false;\n const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n\n const R = GmulAdd(P, s, modN(-e)); // R = sâ‹…G - eâ‹…P\n if (!R || !R.hasEvenY() || R.toAffine().x !== r) return false; // -eP == (n-e)P\n return true; // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠r.\n } catch (error) {\n return false;\n }\n}\n\n/**\n * Schnorr signatures over secp256k1.\n */\nexport const schnorr = /* @__PURE__ */ (() => ({\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n utils: {\n randomPrivateKey: secp256k1.utils.randomPrivateKey,\n lift_x,\n pointToBytes,\n numberToBytesBE,\n bytesToNumberBE,\n taggedHash,\n mod,\n },\n}))();\n\nconst isoMap = /* @__PURE__ */ (() =>\n isogenyMap(\n Fp,\n [\n // xNum\n [\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',\n '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',\n '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',\n ],\n // xDen\n [\n '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',\n '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n // yNum\n [\n '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',\n '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',\n '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',\n '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',\n ],\n // yDen\n [\n '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',\n '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',\n '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n ].map((i) => i.map((j) => BigInt(j))) as [bigint[], bigint[], bigint[], bigint[]]\n ))();\nconst mapSWU = /* @__PURE__ */ (() =>\n mapToCurveSimpleSWU(Fp, {\n A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n B: BigInt('1771'),\n Z: Fp.create(BigInt('-11')),\n }))();\nconst htf = /* @__PURE__ */ (() =>\n createHasher(\n secp256k1.ProjectivePoint,\n (scalars: bigint[]) => {\n const { x, y } = mapSWU(Fp.create(scalars[0]));\n return isoMap(x, y);\n },\n {\n DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',\n encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',\n p: Fp.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha256,\n }\n ))();\nexport const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();\n","function number(n: number) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error(`positive integer expected, not ${n}`);\n}\n\nfunction bool(b: boolean) {\n if (typeof b !== 'boolean') throw new Error(`boolean expected, not ${b}`);\n}\n\n// copied from utils\nexport function isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\nfunction bytes(b: Uint8Array | undefined, ...lengths: number[]) {\n if (!isBytes(b)) throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error(`Uint8Array expected of length ${lengths}, not of length=${b.length}`);\n}\n\ntype Hash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\nfunction hash(h: Hash) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(h.outputLen);\n number(h.blockLen);\n}\n\nfunction exists(instance: any, checkFinished = true) {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\nfunction output(out: any, instance: any) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\n\nexport { number, bool, bytes, hash, exists, output };\n\nconst assert = { number, bool, bytes, hash, exists, output };\nexport default assert;\n","import { exists, output } from './_assert.js';\nimport { Hash, createView, Input, toBytes } from './utils.js';\n\n/**\n * Polyfill for Safari 14\n */\nfunction setBigUint64(view: DataView, byteOffset: number, value: bigint, isLE: boolean): void {\n if (typeof view.setBigUint64 === 'function') return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n\n/**\n * Choice: a ? b : c\n */\nexport const Chi = (a: number, b: number, c: number) => (a & b) ^ (~a & c);\n\n/**\n * Majority function, true if any two inputs is true\n */\nexport const Maj = (a: number, b: number, c: number) => (a & b) ^ (a & c) ^ (b & c);\n\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport abstract class HashMD<T extends HashMD<T>> extends Hash<T> {\n protected abstract process(buf: DataView, offset: number): void;\n protected abstract get(): number[];\n protected abstract set(...args: number[]): void;\n abstract destroy(): void;\n protected abstract roundClean(): void;\n // For partial updates less than block size\n protected buffer: Uint8Array;\n protected view: DataView;\n protected finished = false;\n protected length = 0;\n protected pos = 0;\n protected destroyed = false;\n\n constructor(\n readonly blockLen: number,\n public outputLen: number,\n readonly padOffset: number,\n readonly isLE: boolean\n ) {\n super();\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data: Input): this {\n exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen) this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out: Uint8Array) {\n exists(this);\n output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++) buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4) throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length) throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to?: T): T {\n to ||= new (this.constructor as any)() as T;\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen) to.buffer.set(buffer);\n return to;\n }\n}\n","import { HashMD, Chi, Maj } from './_md.js';\nimport { rotr, wrapConstructor } from './utils.js';\n\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^67 hashes/sec as per early 2023.\n\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n\n// Initial state:\n// first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19\n// prettier-ignore\nconst SHA256_IV = /* @__PURE__ */ new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD<SHA256> {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n A = SHA256_IV[0] | 0;\n B = SHA256_IV[1] | 0;\n C = SHA256_IV[2] | 0;\n D = SHA256_IV[3] | 0;\n E = SHA256_IV[4] | 0;\n F = SHA256_IV[5] | 0;\n G = SHA256_IV[6] | 0;\n H = SHA256_IV[7] | 0;\n\n constructor() {\n super(64, 32, 8, false);\n }\n protected get(): [number, number, number, number, number, number, number, number] {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n protected set(\n A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number\n ) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n protected roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n A = 0xc1059ed8 | 0;\n B = 0x367cd507 | 0;\n C = 0x3070dd17 | 0;\n D = 0xf70e5939 | 0;\n E = 0xffc00b31 | 0;\n F = 0x68581511 | 0;\n G = 0x64f98fa7 | 0;\n H = 0xbefa4fa4 | 0;\n constructor() {\n super();\n this.outputLen = 28;\n }\n}\n\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\n/**\n * SHA2-224 hash function\n */\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n","// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// See utils.ts for details.\ndeclare const globalThis: Record<string, any> | undefined;\nexport const crypto =\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nimport { bytes as abytes } from './_assert.js';\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nexport function isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n );\n}\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n// Cast array to different type\nexport const u8 = (arr: TypedArray) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr: TypedArray) =>\n new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n\n// Cast array to view\nexport const createView = (arr: TypedArray) =>\n new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word: number, shift: number) => (word << (32 - shift)) | (word >>> shift);\n// The rotate left (circular left shift) operation for uint32\nexport const rotl = (word: number, shift: number) =>\n (word << shift) | ((word >>> (32 - shift)) >>> 0);\n\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// The byte swap operation for uint32\nexport const byteSwap = (word: number) =>\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff);\n// Conditionally byte swap if on a big-endian platform\nexport const byteSwapIfBE = isLE ? (n: number) => n : (n: number) => byteSwap(n);\n\n// In place byte swap for Uint32Array\nexport function byteSwap32(arr: Uint32Array) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n}\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 } as const;\nfunction asciiToBase16(char: number): number | undefined {\n if (char >= asciis._0 && char <= asciis._9) return char - asciis._0;\n if (char >= asciis._A && char <= asciis._F) return char - (asciis._A - 10);\n if (char >= asciis._a && char <= asciis._f) return char - (asciis._a - 10);\n return;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('padded hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2;\n }\n return array;\n}\n\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => {};\n\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters: number, tick: number, cb: (i: number) => void) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\n// For runtime check if class implements interface\nexport abstract class Hash<T extends Hash<T>> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\nconst toStr = {}.toString;\ntype EmptyObj = {};\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && toStr.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\nexport type CHash = ReturnType<typeof wrapConstructor>;\n\nexport function wrapConstructor<T extends Hash<T>>(hashCons: () => Hash<T>) {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function wrapConstructorWithOpts<H extends Hash<H>, T extends Object>(\n hashCons: (opts?: T) => Hash<H>\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\nexport function wrapXOFConstructorWithOpts<H extends HashXOF<H>, T extends Object>(\n hashCons: (opts?: T) => HashXOF<H>\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return crypto.randomBytes(bytesLength);\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","import type { Rdns } from './register.js'\nimport type { EIP6963ProviderDetail } from './types.js'\nimport { requestProviders } from './utils.js'\n\nexport type Listener = (\n providerDetails: readonly EIP6963ProviderDetail[],\n meta?:\n | {\n added?: readonly EIP6963ProviderDetail[] | undefined\n removed?: readonly EIP6963ProviderDetail[] | undefined\n }\n | undefined,\n) => void\n\nexport type Store = {\n /**\n * Clears the store, including all provider details.\n */\n clear(): void\n /**\n * Destroys the store, including all provider details and listeners.\n */\n destroy(): void\n /**\n * Finds a provider detail by its RDNS (Reverse Domain Name Identifier).\n */\n findProvider(args: { rdns: Rdns }): EIP6963ProviderDetail | undefined\n /**\n * Returns all provider details that have been emitted.\n */\n getProviders(): readonly EIP6963ProviderDetail[]\n /**\n * Resets the store, and emits an event to request provider details.\n */\n reset(): void\n /**\n * Subscribes to emitted provider details.\n */\n subscribe(\n listener: Listener,\n args?: { emitImmediately?: boolean | undefined } | undefined,\n ): () => void\n\n /**\n * @internal\n * Current state of listening listeners.\n */\n _listeners(): Set<Listener>\n}\n\nexport function createStore(): Store {\n const listeners: Set<Listener> = new Set()\n let providerDetails: readonly EIP6963ProviderDetail[] = []\n\n const request = () =>\n requestProviders((providerDetail) => {\n if (\n providerDetails.some(\n ({ info }) => info.uuid === providerDetail.info.uuid,\n )\n )\n return\n\n providerDetails = [...providerDetails, providerDetail]\n listeners.forEach((listener) =>\n listener(providerDetails, { added: [providerDetail] }),\n )\n })\n let unwatch = request()\n\n return {\n _listeners() {\n return listeners\n },\n clear() {\n listeners.forEach((listener) =>\n listener([], { removed: [...providerDetails] }),\n )\n providerDetails = []\n },\n destroy() {\n this.clear()\n listeners.clear()\n unwatch?.()\n },\n findProvider({ rdns }) {\n return providerDetails.find(\n (providerDetail) => providerDetail.info.rdns === rdns,\n )\n },\n getProviders() {\n return providerDetails\n },\n reset() {\n this.clear()\n unwatch?.()\n unwatch = request()\n },\n subscribe(listener, { emitImmediately } = {}) {\n listeners.add(listener)\n if (emitImmediately) listener(providerDetails, { added: providerDetails })\n return () => listeners.delete(listener)\n },\n }\n}\n","import type { EIP1193Provider } from './register.js'\nimport type {\n EIP6963AnnounceProviderEvent,\n EIP6963ProviderDetail,\n} from './types.js'\n\n////////////////////////////////////////////////////////////////////////////\n// Announce Provider\n\nexport type AnnounceProviderParameters = EIP6963ProviderDetail<\n EIP1193Provider,\n string\n>\nexport type AnnounceProviderReturnType = () => void\n\n/**\n * Announces an EIP-1193 Provider.\n */\nexport function announceProvider(\n detail: AnnounceProviderParameters,\n): AnnounceProviderReturnType {\n const event: CustomEvent<EIP6963ProviderDetail> = new CustomEvent(\n 'eip6963:announceProvider',\n { detail: Object.freeze(detail) },\n )\n\n window.dispatchEvent(event)\n\n const handler = () => window.dispatchEvent(event)\n window.addEventListener('eip6963:requestProvider', handler)\n return () => window.removeEventListener('eip6963:requestProvider', handler)\n}\n\n////////////////////////////////////////////////////////////////////////////\n// Request Providers\n\nexport type RequestProvidersParameters = (\n providerDetail: EIP6963ProviderDetail,\n) => void\nexport type RequestProvidersReturnType = (() => void) | undefined\n\n/**\n * Watches for EIP-1193 Providers to be announced.\n */\nexport function requestProviders(\n listener: RequestProvidersParameters,\n): RequestProvidersReturnType {\n if (typeof window === 'undefined') return\n const handler = (event: EIP6963AnnounceProviderEvent) =>\n listener(event.detail)\n\n window.addEventListener('eip6963:announceProvider', handler)\n\n window.dispatchEvent(new CustomEvent('eip6963:requestProvider'))\n\n return () => window.removeEventListener('eip6963:announceProvider', handler)\n}\n","const a=\"/api/v1/sessions\",s=\"/api/v1/sessions/logout\",i=\"/api/v1/siwe/init\",e=\"/api/v1/siwe/authenticate\",t=\"/api/v1/siwe/link\",p=\"/api/v1/siwe/link_smart_wallet\",n=\"/api/v1/siwe/unlink\",v=\"/api/v1/siwe/transfer\",r=\"/api/v1/siws/init\",l=\"/api/v1/siws/authenticate\",o=\"/api/v1/siws/link\",u=\"/api/v1/siws/unlink\",c=\"/api/v1/farcaster/init\",w=\"/api/v1/farcaster/authenticate\",k=\"/api/v1/farcaster/link\",m=\"/api/v1/farcaster/status\",h=\"/api/v1/farcaster/unlink\",_=\"/api/v1/farcaster/transfer\",d=\"api/v2/farcaster/init\",f=\"api/v2/farcaster/authenticate\",g=\"/api/v1/passwordless/init\",y=\"/api/v1/passwordless/authenticate\",b=\"/api/v1/passwordless/link\",j=\"/api/v1/passwordless/unlink\",x=\"/api/v1/passwordless/update\",q=\"/api/v1/passwordless/transfer\",z=\"/api/v1/passwordless_sms/init\",A=\"/api/v1/passwordless_sms/link\",B=\"/api/v1/passwordless_sms/unlink\",C=\"/api/v1/passwordless_sms/authenticate\",D=\"/api/v1/passwordless_sms/update\",E=\"/api/v1/passwordless_sms/transfer\",F=\"/api/v1/oauth/init\",G=\"/api/v1/oauth/authenticate\",H=\"/api/v1/oauth/link\",I=\"/api/v1/oauth/unlink\",J=\"/api/v1/oauth/transfer\",K=\"/api/v1/recovery/oauth/init\",L=\"/api/v1/recovery/oauth/init_icloud\",M=\"/api/v1/recovery/oauth/authenticate\",N=\"/api/v1/passkeys/link/init\",O=\"/api/v1/passkeys/authenticate/init\",P=\"/api/v1/passkeys/register/init\",Q=\"/api/v1/passkeys/link\",R=\"/api/v1/passkeys/authenticate\",S=\"/api/v1/passkeys/register\",T=\"/api/v1/telegram/authenticate\",U=\"/api/v1/telegram/link\",V=\"/api/v1/telegram/unlink\",W=\"/api/v1/telegram/transfer\",X=\"/api/v1/mfa/passwordless_sms/init\",Y=\"/api/v1/mfa/passkeys/init\",Z=\"/api/v1/users/me/accept_terms\",$=\"/api/v1/analytics_events\",aa=\"/api/v1/custom_jwt_account/authenticate\",sa=\"/api/v1/guest/authenticate\",ia=\"/api/v1/plugins/moonpay_on_ramp/sign\",ea=\"/api/v1/funding/coinbase_on_ramp/init\",ta=\"/api/v1/funding/coinbase_on_ramp/status\",pa=\"/api/v1/wallets/revoke\",na=\"/api/v1/users/me\",va=\"/api/v1/scan/transaction\";export{q as $,s as A,$ as B,X as C,Y as D,Z as E,j as F,B as G,n as H,u as I,I as J,h as K,V as L,pa as M,ia as N,ea as O,ta as P,i as Q,e as R,t as S,p as T,r as U,l as V,J as W,W as X,_ as Y,v as Z,E as _,b as a,o as a0,na as a1,va as a2,L as a3,K as a4,M as a5,d as a6,f as a7,g as b,aa as c,k as d,c as e,w as f,m as g,sa as h,H as i,F as j,S as k,R as l,Q as m,P as n,G as o,y as p,O as q,N as r,C as s,A as t,x as u,z as v,D as w,T as x,U as y,a as z};\n","import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n","import{PrivyIframeErrorTypes as e}from\"./types.mjs\";var t,r=((t={}).MISSING_OR_INVALID_PRIVY_APP_ID=\"missing_or_invalid_privy_app_id\",t.MISSING_OR_INVALID_PRIVY_ACCOUNT_ID=\"missing_or_invalid_privy_account_id\",t.INVALID_DATA=\"invalid_data\",t.LINKED_TO_ANOTHER_USER=\"linked_to_another_user\",t.ALLOWLIST_REJECTED=\"allowlist_rejected\",t.OAUTH_USER_DENIED=\"oauth_user_denied\",t.UNKNOWN_AUTH_ERROR=\"unknown_auth_error\",t.USER_EXITED_AUTH_FLOW=\"exited_auth_flow\",t.MUST_BE_AUTHENTICATED=\"must_be_authenticated\",t.UNKNOWN_CONNECT_WALLET_ERROR=\"unknown_connect_wallet_error\",t.GENERIC_CONNECT_WALLET_ERROR=\"generic_connect_wallet_error\",t.CLIENT_REQUEST_TIMEOUT=\"client_request_timeout\",t.INVALID_CREDENTIALS=\"invalid_credentials\",t);class s extends Error{toString(){return`${this.type}${this.privyErrorCode?`-${this.privyErrorCode}`:\"\"}: ${this.message}${this.cause?` [cause: ${this.cause}]`:\"\"}`}constructor(e,t,r){super(e),t instanceof Error&&(this.cause=t),this.privyErrorCode=r}}class a extends s{constructor(e,t,r){super(e),this.type=\"provider_error\",this.code=t,this.data=r}}class o extends Error{constructor(e,t){super(t),this.type=e}}class i extends s{constructor(e,t,r){super(e,t,r),this.type=\"connector_error\"}}class d extends Error{constructor(e,t,r){super(e),this.code=t,this.data=r}}const n={UNKNOWN_ERROR:{eipCode:0,message:\"Unknown error\",detail:\"Unknown error\",retryable:!0},E4001_DEFAULT_USER_REJECTED_REQUEST:{eipCode:4001,message:\"User Rejected Request\",detail:\"The user rejected the request.\",default:!0,retryable:!0},E4100_DEFAULT_UNAUTHORIZED:{eipCode:4100,message:\"Unauthorized\",detail:\"The requested method and/or account has not been authorized by the user.\",default:!0,retryable:!1},E4200_DEFAULT_UNSUPPORTED_METHOD:{eipCode:4200,message:\"Unsupported Method\",detail:\"The Provider does not support the requested method.\",default:!0,retryable:!1},E4900_DEFAULT_DISCONNECTED:{eipCode:4900,message:\"Disconnected\",detail:\"The Provider is disconnected from all chains.\",default:!0,retryable:!0},E4901_DEFAULT_CHAIN_DISCONNECTED:{eipCode:4901,message:\"Chain Disconnected\",detail:\"The Provider is not connected to the requested chain.\",default:!0,retryable:!0},E32700_DEFAULT_PARSE_ERROR:{eipCode:-32700,message:\"Parse error\",detail:\"Invalid JSON\",default:!0,retryable:!1},E32600_DEFAULT_INVALID_REQUEST:{eipCode:-32600,message:\"Invalid request\",detail:\"JSON is not a valid request object\",default:!0,retryable:!1},E32601_DEFAULT_METHOD_NOT_FOUND:{eipCode:-32601,message:\"Method not found\",detail:\"Method does not exist\",default:!0,retryable:!1},E32602_DEFAULT_INVALID_PARAMS:{eipCode:-32602,message:\"Invalid params\",detail:\"Invalid method parameters\",default:!0,retryable:!1},E32603_DEFAULT_INTERNAL_ERROR:{eipCode:-32603,message:\"Internal error\",detail:\"Internal JSON-RPC error\",default:!0,retryable:!0},E32000_DEFAULT_INVALID_INPUT:{eipCode:-32e3,message:\"Invalid input\",detail:\"Missing or invalid parameters\",default:!0,retryable:!1},E32001_DEFAULT_RESOURCE_NOT_FOUND:{eipCode:-32001,message:\"Resource not found\",detail:\"Requested resource not found\",default:!0,retryable:!1},E32002_DEFAULT_RESOURCE_UNAVAILABLE:{eipCode:-32002,message:\"Resource unavailable\",detail:\"Requested resource not available\",default:!0,retryable:!0},E32003_DEFAULT_TRANSACTION_REJECTED:{eipCode:-32003,message:\"Transaction rejected\",detail:\"Transaction creation failed\",default:!0,retryable:!0},E32004_DEFAULT_METHOD_NOT_SUPPORTED:{eipCode:-32004,message:\"Method not supported\",detail:\"Method is not implemented\",default:!0,retryable:!1},E32005_DEFAULT_LIMIT_EXCEEDED:{eipCode:-32005,message:\"Limit exceeded\",detail:\"Request exceeds defined limit\",default:!0,retryable:!1},E32006_DEFAULT_JSON_RPC_VERSION_NOT_SUPPORTED:{eipCode:-32006,message:\"JSON-RPC version not supported\",detail:\"Version of JSON-RPC protocol is not supported\",default:!0,retryable:!1},E32002_CONNECTION_ALREADY_PENDING:{eipCode:-32002,message:\"Connection request already pending\",detail:\"Don’t see your wallet? Check your other browser windows.\",retryable:!1},E32002_REQUEST_ALREADY_PENDING:{eipCode:-32002,message:\"Resource request already pending\",detail:\"Don’t see your wallet? Check your other browser windows.\",retryable:!1},E32002_WALLET_LOCKED:{eipCode:-32002,message:\"Wallet might be locked\",detail:\"Don’t see your wallet? Check your other browser windows.\",retryable:!1},E4001_USER_REJECTED_REQUEST:{eipCode:4001,message:\"Signature rejected\",detail:\"Please try signing again.\",retryable:!0}};function _(t){let r=t.type;return\"string\"==typeof r&&e.includes(r)}function E(e){return _(e)&&\"wallet_not_on_device\"===e.type}function l(e){return _(e)&&\"mfa_timeout\"===e.type}function u(e){return _(e)&&\"missing_or_invalid_mfa\"===e.type}function c(e){return _(e)&&\"mfa_verification_max_attempts_reached\"===e.type}function T(e){return _(e)&&e.message.includes(\"code 429\")}class N extends a{constructor(e){super(e.message,e.code,e.data);let t=Object.values(n).find((t=>t.eipCode===e.code));this.details=t||n.UNKNOWN_ERROR,-32002===e.code&&(e.message?.includes(\"already pending for origin\")?e.message?.includes(\"wallet_requestPermissions\")?this.details=n.E32002_CONNECTION_ALREADY_PENDING:this.details=n.E32002_REQUEST_ALREADY_PENDING:e.message?.includes(\"Already processing\")&&e.message.includes(\"eth_requestAccounts\")&&(this.details=n.E32002_WALLET_LOCKED))}}export{d as EmbeddedProviderError,i as PrivyConnectorError,r as PrivyEmbeddedWalletErrorCode,s as PrivyError,o as PrivyIframeError,N as PrivyProviderRpcError,n as ProviderErrors,a as ProviderRpcError,c as errorIndicatesMaxMfaRetries,T as errorIndicatesMfaRateLimit,l as errorIndicatesMfaTimeout,u as errorIndicatesMfaVerificationFailed,E as errorIndicatesRecoveryIsNeeded,_ as isPrivyIframeError};\n","import { c as createFetch } from './shared/ofetch.03887fc3.mjs';\nexport { F as FetchError, a as createFetchError } from './shared/ofetch.03887fc3.mjs';\nimport 'destr';\nimport 'ufo';\n\nconst _globalThis = function() {\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n if (typeof self !== \"undefined\") {\n return self;\n }\n if (typeof window !== \"undefined\") {\n return window;\n }\n if (typeof global !== \"undefined\") {\n return global;\n }\n throw new Error(\"unable to locate global object\");\n}();\nconst fetch = _globalThis.fetch ? (...args) => _globalThis.fetch(...args) : () => Promise.reject(new Error(\"[ofetch] global.fetch is not supported!\"));\nconst Headers = _globalThis.Headers;\nconst AbortController = _globalThis.AbortController;\nconst ofetch = createFetch({ fetch, Headers, AbortController });\nconst $fetch = ofetch;\n\nexport { $fetch, AbortController, Headers, createFetch, fetch, ofetch };\n","import{b as e,j as t,l as n,u as a,P as s}from\"./internal-context-mSHyF0Gq.mjs\";import r from\"eventemitter3\";import{ProviderErrors as o}from\"@privy-io/js-sdk-core\";import{d as i,E as c,u as l,M as d,al as u,am as h,an as p,ao as g,N as f,ap as m,T as y,aq as C,U as w,ar as E,Q as b,as as S,ah as T,at as A,X as v,au as _}from\"./useWallets-CIsjbJl7.mjs\";import{createContext as D,useEffect as R,useContext as x,useRef as O,useCallback as I,useState as W}from\"react\";import{jsx as N}from\"react/jsx-runtime\";import{ofetch as F}from\"ofetch\";class U{get(e){let t=localStorage.getItem(e);return null===t?void 0:JSON.parse(t)}put(e,t){void 0!==t?localStorage.setItem(e,JSON.stringify(t)):this.del(e)}del(e){localStorage.removeItem(e)}getKeys(){return Object.entries(localStorage).map((([e])=>e))}}function M(){try{let e=\"privy:__session_storage__test\",t=new U;return t.put(e,\"blobby\"),t.del(e),!0}catch(e){return!1}}var P=\"undefined\"!=typeof window&&window.localStorage?new U:new class{get(e){return this._cache[e]}put(e,t){void 0!==t?this._cache[e]=t:this.del(e)}del(e){delete this._cache[e]}getKeys(){return Object.keys(this._cache)}constructor(){this._cache={}}};class L extends e{constructor(){super(\"Wallet timeout\"),this.type=\"wallet_error\"}}class k extends e{constructor(){super(\"User rejected connection\"),this.type=\"wallet_error\"}}const B=t=>t instanceof e?t:t?.code?new $(t):new e(\"Unknown connector error\",t);class j extends t{constructor(e,t,n){super(e),this.type=\"provider_error\",this.code=t,this.data=n}}class $ extends j{constructor(e){super(e.message,e.code,e.data);let t=Object.values(o).find((t=>t.eipCode===e.code));this.details=t||o.UNKNOWN_ERROR,-32002===e.code&&(e.message?.includes(\"already pending for origin\")?e.message?.includes(\"wallet_requestPermissions\")?this.details=o.E32002_CONNECTION_ALREADY_PENDING:this.details=o.E32002_REQUEST_ALREADY_PENDING:e.message?.includes(\"Already processing\")&&e.message.includes(\"eth_requestAccounts\")&&(this.details=o.E32002_WALLET_LOCKED))}}const q={ERROR_USER_EXISTS:{message:\"User already exists for this address\",detail:\"Try another address!\",retryable:!1},ERROR_TIMED_OUT:{message:\"Wallet request timed out\",detail:\"Please try connecting again.\",retryable:!0},ERROR_WALLET_CONNECTION:{message:\"Could not log in with wallet\",detail:\"Please try connecting again.\",retryable:!0},ERROR_USER_REJECTED_CONNECTION:{message:\"You rejected the request\",detail:\"Please try connecting again.\",retryable:!0},ERROR_USER_LIMIT_REACHED:{message:\"Unable to link\",detail:\"You've reached the maximum number of linked wallets.\",retryable:!1},...o};class K extends r{constructor(e){super(),this.walletClientType=e,this.connected=!1,this.initialized=!1}}const z=()=>{let e=P.get(i);return e&&Array.isArray(e)&&e.map((e=>(e=>e&&\"string\"==typeof e.address&&\"string\"==typeof e.connectorType&&\"string\"==typeof e.walletClientType&&\"number\"==typeof e.connectedAt)(e))).every(Boolean)?e:[]};let G=[\"phantom\",\"glow\",\"solflare\",\"backpack\",\"okx_wallet\"];function Y(e){return\"solana\"===e.chainType}function H(e){return\"solana\"===e.type}class J extends K{get isInstalled(){return\"Installed\"===this.adapter.readyState}buildConnectedWallet(e,t){let a,s,r,o;if(\"Installed\"!==e.readyState||!e.publicKey)throw Error(\"Wallet is not connected.\");return\"signMessage\"in e&&(a=async(...t)=>{if(!e.connected)throw Error(\"Wallet is not connected.\");return await e.signMessage(t[0])}),\"sendTransaction\"in e&&(s=async(...t)=>await e.sendTransaction(t[0],t[1],t[2])),\"signTransaction\"in e&&(r=async t=>await e.signTransaction(t)),\"signAllTransactions\"in e&&(o=async t=>await e.signAllTransactions(t)),{type:\"solana\",address:e.publicKey.toBase58(),meta:t,imported:!1,connectedAt:Date.now(),walletClientType:this.walletClientType,connectorType:this.connectorType,isConnected:async()=>e.connected,disconnect:()=>{try{e.disconnect()}catch(e){console.error(\"Wallet does not support programmatic disconnect\")}},getProvider:n(`${this.walletClientType||\"\"} wallet does not support 'getProvider'`),signMessage:a??n(`${this.walletClientType||\"\"} wallet does not support 'signMessage'`),sendTransaction:s??n(`${this.walletClientType||\"\"} wallet does not support 'sendTransaction'`),signTransaction:r??n(`${this.walletClientType||\"\"} wallet does not support 'signTransaction'`),signAllTransactions:o??n(`${this.walletClientType||\"\"} wallet does not support 'signAllTransactions'`)}}async syncAccounts(){if(\"Installed\"===this.adapter.readyState&&this.adapter.publicKey){let e={name:this.walletBranding.name,icon:\"string\"==typeof this.walletBranding.icon?this.walletBranding.icon:void 0,id:this.walletBranding.id};this.wallets.find((e=>this.adapter.publicKey&&e.address===this.adapter.publicKey.toBase58()))||(this.wallets=[this.buildConnectedWallet(this.adapter,e)],this.emit(\"walletsUpdated\"))}else this.wallets.length>0&&(this.wallets=[],this.emit(\"walletsUpdated\"))}get walletBranding(){return{id:this.adapter.name,name:this.adapter.name,icon:this.adapter.icon}}async initialize(){this.subscribeListeners(),await this.syncAccounts(),this.shouldAttemptAutoConnect()&&await this.adapter.autoConnect().catch((()=>{})),this.initialized=!0,this.emit(\"initialized\")}async connect(e){return e.showPrompt&&await this.promptConnection(),await this.isConnected()?this.getConnectedWallet():null}async getConnectedWallet(){return this.wallets.sort(((e,t)=>t.connectedAt-e.connectedAt))[0]||null}async isConnected(){return this.adapter.connected&&[\"Installed\"].includes(this.adapter.readyState)}subscribeListeners(){this.adapter.addListener(\"disconnect\",this.onDisconnect),this.adapter.addListener(\"connect\",this.onConnect),this.adapter.addListener(\"error\",this.onError),this.adapter.addListener(\"readyStateChange\",this.onReadyStateChange)}unsubscribeListeners(){this.adapter.removeAllListeners()}shouldAttemptAutoConnect(){return!(!this.autoConnectEnabled||!G.includes(this.walletClientType))&&(\"phantom\"!==this.walletClientType||z().some((({walletClientType:e})=>\"phantom\"===e)))}constructor(e,t){super(function(e){return e.name.toLowerCase().split(\" \").join(\"_\")}(e)),this.chainType=\"solana\",this.connectorType=\"solana_adapter\",this.disconnect=()=>{this.adapter.disconnect().then((()=>this.onDisconnect())).catch((e=>console.error(\"Error disconnecting\",e)))},this.promptConnection=async()=>{try{await this.adapter.connect()}catch(e){throw B(e)}},this.onDisconnect=()=>{this.syncAccounts()},this.onConnect=e=>{this.syncAccounts()},this.onError=e=>{this.syncAccounts()},this.onReadyStateChange=e=>{\"Installed\"!==e&&(this.connected=!1),this.syncAccounts()},this.adapter=e,this.autoConnectEnabled=t,this.wallets=[]}}const Q={login:{onComplete:[],onError:[]},logout:{onSuccess:[]},connectWallet:{onSuccess:[],onError:[]},createWallet:{onSuccess:[],onError:[]},linkAccount:{onSuccess:[],onError:[]},update:{onSuccess:[],onError:[]},configureMfa:{onMfaRequired:[]},setWalletPassword:{onSuccess:[],onError:[]},setWalletRecovery:{onSuccess:[],onError:[]},signMessage:{onSuccess:[],onError:[]},signTypedData:{onSuccess:[],onError:[]},sendTransaction:{onSuccess:[],onError:[]},signTransaction:{onSuccess:[],onError:[]},signSolanaTransaction:{onSuccess:[],onError:[]},signSolanaMessage:{onSuccess:[],onError:[]},sendSolanaTransaction:{onSuccess:[],onError:[]},accessToken:{onAccessTokenGranted:[],onAccessTokenRemoved:[]},oAuthAuthorization:{onOAuthTokenGrant:[]},fundWallet:{onUserExited:[]},fundSolanaWallet:{onUserExited:[]},customAuth:{onAuthenticated:[],onUnauthenticated:[]}},X=/*#__PURE__*/D(void 0);let V=()=>x(X);function Z(e,t){if(!t)return;let n=V().current[e];return R((()=>{for(let[a,s]of Object.entries(t))Object.prototype.hasOwnProperty.call(n,a)||console.warn(`Invalid event type \"${a}\" for action \"${e}\"`),n[a]?.push(s);return()=>{for(let[a,s]of Object.entries(t))Object.prototype.hasOwnProperty.call(n,a)||console.warn(`Invalid event type \"${a}\" for action \"${e}\"`),n[a]=n[a]?.filter((e=>e!==s))}}),[t])}function ee(e,t,n,...a){for(let s of e.current[t][n])s(...a)}function te(){let e=V();return(t,n,...a)=>ee(e,t,n,...a)}const ne=\"sdk_fiat_on_ramp_completed_with_status\";let ae=/*#__PURE__*/D({plugins:{current:{}}});const se=({children:e})=>{let t=O({});/*#__PURE__*/return N(ae.Provider,{value:{plugins:t},children:e})},re=(...e)=>{let{plugins:t}=x(ae);R((()=>{for(let n of e)t.current[n.id]=n;return()=>{for(let n of e)delete t.current[n.id]}}),[t])},oe=()=>{let{plugins:e}=x(ae);return I((t=>e.current[t]),[e])},ie=Symbol(\"solana-funding-plugin\"),ce=()=>{let{exportSolanaWallet:e,createEmbeddedSolanaWallet:t,solanaWallets:n,embeddedSolanaWallets:s}=a(),{ready:r}=c();return{ready:r,createWallet:t,exportWallet:e,wallets:n.concat(s??[])}};function le(e){let t=new RegExp(RegExp(\"^eip155:(?<chainId>\\\\d+)$\",\"gm\")),n=t.exec(e)?.groups?.chainId;if(n)return parseInt(n);throw Error(\"Chain ID not compatible with CAIP-2 format.\")}const de=e=>e.filter((e=>\"wallets\"===e.method||(\"exchange\"===e.method?\"coinbase\"===e.provider:\"card\"===e.method||\"payment-request\"===e.method?\"coinbase\"===e.provider||\"moonpay\"===e.provider:(e.method,!1)))),ue=\"moonpay\";function he(e){return parseFloat(e)}function pe(e){return!!e&&void 0!==e.config&&void 0!==e.provider}function ge(e){return!!e&&(void 0!==e.chain||void 0!==e.amount)}function fe(e,t=!1){let[n,s]=W(null),{createAnalyticsEvent:r}=a(),{data:o,navigate:i,setModalData:c}=l(),f=o?.funding,m=O(0);return R((()=>{let n=setInterval((async()=>{if(e)try{let[a]=await async function(e,t){return F(`${t?u:h}/transactions/ext/${e}`,{query:{apiKey:t?p:g}})}(e,t),o=\"waitingAuthorization\"===a.status&&\"credit_debit_card\"===a.paymentMethod?\"pending\":a.status;if([\"failed\",\"completed\",\"awaitingAuthorization\"].includes(o)&&(r({eventName:ne,payload:{status:o,provider:ue,paymentMethod:a.paymentMethod,cardPaymentType:a.cardPaymentType,currency:a.currency?.code,baseCurrencyAmount:a.baseCurrencyAmount,quoteCurrencyAmount:a.quoteCurrencyAmount,feeAmount:a.feeAmount,extraFeeAmount:a.extraFeeAmount,networkFeeAmount:a.networkFeeAmount,isSandbox:t}}),clearInterval(n)),\"failed\"===o||\"serviceFailure\"===o)return c({funding:{...f,errorMessage:\"Something went wrong adding funds from Moonpay. Please try again or use another method to fund your wallet.\"}}),void i(d.FUNDING_METHOD_SELECTION_SCREEN);s(o)}catch(e){404!==e.response?.status&&(m.current+=1),m.current>=3&&(r({eventName:ne,payload:{status:\"serviceFailure\",provider:ue}}),clearInterval(n),c({funding:{...f,errorMessage:\"Something went wrong adding funds from Moonpay. Please try again or use another method to fund your wallet.\"}}),i(d.FUNDING_METHOD_SELECTION_SCREEN))}}),3e3);return()=>clearInterval(n)}),[e,m]),n}const me={[f.id]:\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",[m.id]:\"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238\",[y.id]:\"0x0b2c639c533813f4aa9d7837caf62653d097ff85\",[C.id]:\"0x5fd84259d66Cd46123540766Be93DFE6D43130D7\",[w.id]:\"0x3c499c542cef5e3811e1192ce70d8cc03d5c3359\",[E.id]:\"0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582\",[b.id]:\"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",[S.id]:\"0x036CbD53842c5426634e7929541eC2318f3dCF7e\",[T.id]:\"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",[A.id]:\"0x5425890298aed601595a70ab815c96711a31bc65\",[v.id]:\"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\",[_.id]:\"0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d\"},ye=({address:e,appConfig:t,fundWalletConfig:n,methodScreen:a,chainIdOverride:r,comingFromSendTransactionScreen:o=!1})=>{let i,c;if(!t.fundingConfig)throw Error(\"Wallet funding is not enabled\");let l=de(t.fundingConfig.options);if(l.length<1)throw Error(\"Wallet funding is not enabled\");i=r||(ge(n)&&n.chain?n.chain.id:le(t.fundingConfig.defaultRecommendedCurrency.chain));let d=t.chains.find((e=>e.id===i));if(!d)throw new s(`Funding chain ${i} is not in PrivyProvider chains list`);let u=ge(n)&&n.amount?n.amount:t.fundingConfig.defaultRecommendedAmount,h=!1;function p(){if(!i)return;let e=me[i];l.find((e=>\"wallets\"===e.method))&&!e&&console.warn(\"Attempting to fund with USDC on chain where USDC address is not known. Funding via external wallet will be disabled.\"),c=e,h=!0}ge(n)&&\"asset\"in n?\"USDC\"===n.asset?p():\"string\"!=typeof n.asset&&\"erc20\"in n.asset&&(h=((e,t)=>e===me[t.id])(c=n.asset.erc20,d)):\"USDC\"===t.fundingConfig.defaultRecommendedCurrency.asset&&p();let g=n?.defaultFundingMethod;return{chainType:\"ethereum\",address:e,amount:u,chain:d,erc20Address:c,erc20ContractInfo:h?{symbol:\"USDC\",decimals:6}:void 0,isUSDC:h,methodScreen:a,supportedOptions:l,comingFromSendTransactionScreen:o,defaultFundingMethod:g,usingDefaultFundingMethod:!!g,preferredCardProvider:n?.card?.preferredProvider,crossChainBridgingEnabled:t.fundingConfig.crossChainBridgingEnabled??!1,cluster:{name:\"mainnet-beta\",rpcUrl:t.solanaClusters[\"mainnet-beta\"]},...pe(n)?{moonpayConfigOverride:n.config}:{},uiConfig:n&&\"uiConfig\"in n?n.uiConfig:void 0}};function Ce({address:e,fundWalletConfig:t,appConfig:n,comingFromSendTransactionScreen:a,methodScreen:s}){if(!n.fundingConfig)throw Error(\"Wallet funding is not enabled\");let r=de(n.fundingConfig.options);if(r.length<1)throw Error(\"Wallet funding is not enabled\");let o=t?.amount??n.fundingConfig.defaultRecommendedAmount,i=t?.defaultFundingMethod;return{chainType:\"solana\",address:e,supportedOptions:r,amount:o,isUSDC:!1,methodScreen:s,comingFromSendTransactionScreen:a,cluster:{name:t?.cluster?.name??\"mainnet-beta\",rpcUrl:n.solanaClusters[t?.cluster?.name??\"mainnet-beta\"]},crossChainBridgingEnabled:n.fundingConfig.crossChainBridgingEnabled??!1,defaultFundingMethod:i,preferredCardProvider:t?.card?.preferredProvider,usingDefaultFundingMethod:!!i,uiConfig:t?.uiConfig}}export{q as C,ne as O,$ as P,J as S,k as U,K as W,Y as a,oe as b,ie as c,ce as d,M as e,B as f,he as g,fe as h,P as i,j,te as k,z as l,de as m,se as n,ee as o,Q as p,Ce as q,ye as r,X as s,H as t,Z as u,le as v,L as w,re as x};\n","import * as React from \"react\";\nfunction ArrowLeftIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M10.5 19.5 3 12m0 0 7.5-7.5M3 12h18\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ArrowLeftIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ArrowRightIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ArrowRightIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction QuestionMarkCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 5.25h.008v.008H12v-.008Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(QuestionMarkCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction XMarkIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6 18 18 6M6 6l12 12\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(XMarkIcon);\nexport default ForwardRef;","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","export const version = '2.23.2'\n","import { version } from './version.js'\n\ntype ErrorConfig = {\n getDocsUrl?: ((args: BaseErrorParameters) => string | undefined) | undefined\n version?: string | undefined\n}\n\nlet errorConfig: ErrorConfig = {\n getDocsUrl: ({\n docsBaseUrl,\n docsPath = '',\n docsSlug,\n }: BaseErrorParameters) =>\n docsPath\n ? `${docsBaseUrl ?? 'https://viem.sh'}${docsPath}${\n docsSlug ? `#${docsSlug}` : ''\n }`\n : undefined,\n version: `viem@${version}`,\n}\n\nexport function setErrorConfig(config: ErrorConfig) {\n errorConfig = config\n}\n\ntype BaseErrorParameters = {\n cause?: BaseError | Error | undefined\n details?: string | undefined\n docsBaseUrl?: string | undefined\n docsPath?: string | undefined\n docsSlug?: string | undefined\n metaMessages?: string[] | undefined\n name?: string | undefined\n}\n\nexport type BaseErrorType = BaseError & { name: 'BaseError' }\nexport class BaseError extends Error {\n details: string\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n shortMessage: string\n version: string\n\n override name = 'BaseError'\n\n constructor(shortMessage: string, args: BaseErrorParameters = {}) {\n const details = (() => {\n if (args.cause instanceof BaseError) return args.cause.details\n if (args.cause?.message) return args.cause.message\n return args.details!\n })()\n const docsPath = (() => {\n if (args.cause instanceof BaseError)\n return args.cause.docsPath || args.docsPath\n return args.docsPath\n })()\n const docsUrl = errorConfig.getDocsUrl?.({ ...args, docsPath })\n\n const message = [\n shortMessage || 'An error occurred.',\n '',\n ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n ...(docsUrl ? [`Docs: ${docsUrl}`] : []),\n ...(details ? [`Details: ${details}`] : []),\n ...(errorConfig.version ? [`Version: ${errorConfig.version}`] : []),\n ].join('\\n')\n\n super(message, args.cause ? { cause: args.cause } : undefined)\n\n this.details = details\n this.docsPath = docsPath\n this.metaMessages = args.metaMessages\n this.name = args.name ?? this.name\n this.shortMessage = shortMessage\n this.version = version\n }\n\n walk(): Error\n walk(fn: (err: unknown) => boolean): Error | null\n walk(fn?: any): any {\n return walk(this, fn)\n }\n}\n\nfunction walk(\n err: unknown,\n fn?: ((err: unknown) => boolean) | undefined,\n): unknown {\n if (fn?.(err)) return err\n if (\n err &&\n typeof err === 'object' &&\n 'cause' in err &&\n err.cause !== undefined\n )\n return walk(err.cause, fn)\n return fn ? null : err\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\n\nexport type IsHexErrorType = ErrorType\n\nexport function isHex(\n value: unknown,\n { strict = true }: { strict?: boolean | undefined } = {},\n): value is Hex {\n if (!value) return false\n if (typeof value !== 'string') return false\n return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x')\n}\n","import { BaseError } from './base.js'\n\nexport type SliceOffsetOutOfBoundsErrorType = SliceOffsetOutOfBoundsError & {\n name: 'SliceOffsetOutOfBoundsError'\n}\nexport class SliceOffsetOutOfBoundsError extends BaseError {\n constructor({\n offset,\n position,\n size,\n }: { offset: number; position: 'start' | 'end'; size: number }) {\n super(\n `Slice ${\n position === 'start' ? 'starting' : 'ending'\n } at offset \"${offset}\" is out-of-bounds (size: ${size}).`,\n { name: 'SliceOffsetOutOfBoundsError' },\n )\n }\n}\n\nexport type SizeExceedsPaddingSizeErrorType = SizeExceedsPaddingSizeError & {\n name: 'SizeExceedsPaddingSizeError'\n}\nexport class SizeExceedsPaddingSizeError extends BaseError {\n constructor({\n size,\n targetSize,\n type,\n }: {\n size: number\n targetSize: number\n type: 'hex' | 'bytes'\n }) {\n super(\n `${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} size (${size}) exceeds padding size (${targetSize}).`,\n { name: 'SizeExceedsPaddingSizeError' },\n )\n }\n}\n\nexport type InvalidBytesLengthErrorType = InvalidBytesLengthError & {\n name: 'InvalidBytesLengthError'\n}\nexport class InvalidBytesLengthError extends BaseError {\n constructor({\n size,\n targetSize,\n type,\n }: {\n size: number\n targetSize: number\n type: 'hex' | 'bytes'\n }) {\n super(\n `${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} is expected to be ${targetSize} ${type} long, but is ${size} ${type} long.`,\n { name: 'InvalidBytesLengthError' },\n )\n }\n}\n","import {\n SizeExceedsPaddingSizeError,\n type SizeExceedsPaddingSizeErrorType,\n} from '../../errors/data.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\ntype PadOptions = {\n dir?: 'left' | 'right' | undefined\n size?: number | null | undefined\n}\nexport type PadReturnType<value extends ByteArray | Hex> = value extends Hex\n ? Hex\n : ByteArray\n\nexport type PadErrorType = PadHexErrorType | PadBytesErrorType | ErrorType\n\nexport function pad<value extends ByteArray | Hex>(\n hexOrBytes: value,\n { dir, size = 32 }: PadOptions = {},\n): PadReturnType<value> {\n if (typeof hexOrBytes === 'string')\n return padHex(hexOrBytes, { dir, size }) as PadReturnType<value>\n return padBytes(hexOrBytes, { dir, size }) as PadReturnType<value>\n}\n\nexport type PadHexErrorType = SizeExceedsPaddingSizeErrorType | ErrorType\n\nexport function padHex(hex_: Hex, { dir, size = 32 }: PadOptions = {}) {\n if (size === null) return hex_\n const hex = hex_.replace('0x', '')\n if (hex.length > size * 2)\n throw new SizeExceedsPaddingSizeError({\n size: Math.ceil(hex.length / 2),\n targetSize: size,\n type: 'hex',\n })\n\n return `0x${hex[dir === 'right' ? 'padEnd' : 'padStart'](\n size * 2,\n '0',\n )}` as Hex\n}\n\nexport type PadBytesErrorType = SizeExceedsPaddingSizeErrorType | ErrorType\n\nexport function padBytes(\n bytes: ByteArray,\n { dir, size = 32 }: PadOptions = {},\n) {\n if (size === null) return bytes\n if (bytes.length > size)\n throw new SizeExceedsPaddingSizeError({\n size: bytes.length,\n targetSize: size,\n type: 'bytes',\n })\n const paddedBytes = new Uint8Array(size)\n for (let i = 0; i < size; i++) {\n const padEnd = dir === 'right'\n paddedBytes[padEnd ? i : size - i - 1] =\n bytes[padEnd ? i : bytes.length - i - 1]\n }\n return paddedBytes\n}\n","import type { ByteArray, Hex } from '../types/misc.js'\n\nimport { BaseError } from './base.js'\n\nexport type IntegerOutOfRangeErrorType = IntegerOutOfRangeError & {\n name: 'IntegerOutOfRangeError'\n}\nexport class IntegerOutOfRangeError extends BaseError {\n constructor({\n max,\n min,\n signed,\n size,\n value,\n }: {\n max?: string | undefined\n min: string\n signed?: boolean | undefined\n size?: number | undefined\n value: string\n }) {\n super(\n `Number \"${value}\" is not in safe ${\n size ? `${size * 8}-bit ${signed ? 'signed' : 'unsigned'} ` : ''\n }integer range ${max ? `(${min} to ${max})` : `(above ${min})`}`,\n { name: 'IntegerOutOfRangeError' },\n )\n }\n}\n\nexport type InvalidBytesBooleanErrorType = InvalidBytesBooleanError & {\n name: 'InvalidBytesBooleanError'\n}\nexport class InvalidBytesBooleanError extends BaseError {\n constructor(bytes: ByteArray) {\n super(\n `Bytes value \"${bytes}\" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`,\n {\n name: 'InvalidBytesBooleanError',\n },\n )\n }\n}\n\nexport type InvalidHexBooleanErrorType = InvalidHexBooleanError & {\n name: 'InvalidHexBooleanError'\n}\nexport class InvalidHexBooleanError extends BaseError {\n constructor(hex: Hex) {\n super(\n `Hex value \"${hex}\" is not a valid boolean. The hex value must be \"0x0\" (false) or \"0x1\" (true).`,\n { name: 'InvalidHexBooleanError' },\n )\n }\n}\n\nexport type InvalidHexValueErrorType = InvalidHexValueError & {\n name: 'InvalidHexValueError'\n}\nexport class InvalidHexValueError extends BaseError {\n constructor(value: Hex) {\n super(\n `Hex value \"${value}\" is an odd length (${value.length}). It must be an even length.`,\n { name: 'InvalidHexValueError' },\n )\n }\n}\n\nexport type SizeOverflowErrorType = SizeOverflowError & {\n name: 'SizeOverflowError'\n}\nexport class SizeOverflowError extends BaseError {\n constructor({ givenSize, maxSize }: { givenSize: number; maxSize: number }) {\n super(\n `Size cannot exceed ${maxSize} bytes. Given size: ${givenSize} bytes.`,\n { name: 'SizeOverflowError' },\n )\n }\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nimport { type IsHexErrorType, isHex } from './isHex.js'\n\nexport type SizeErrorType = IsHexErrorType | ErrorType\n\n/**\n * @description Retrieves the size of the value (in bytes).\n *\n * @param value The value (hex or byte array) to retrieve the size of.\n * @returns The size of the value (in bytes).\n */\nexport function size(value: Hex | ByteArray) {\n if (isHex(value, { strict: false })) return Math.ceil((value.length - 2) / 2)\n return value.length\n}\n","import {\n InvalidHexBooleanError,\n type InvalidHexBooleanErrorType,\n SizeOverflowError,\n type SizeOverflowErrorType,\n} from '../../errors/encoding.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type SizeErrorType, size as size_ } from '../data/size.js'\nimport { type TrimErrorType, trim } from '../data/trim.js'\n\nimport { type HexToBytesErrorType, hexToBytes } from './toBytes.js'\n\nexport type AssertSizeErrorType =\n | SizeOverflowErrorType\n | SizeErrorType\n | ErrorType\n\nexport function assertSize(\n hexOrBytes: Hex | ByteArray,\n { size }: { size: number },\n): void {\n if (size_(hexOrBytes) > size)\n throw new SizeOverflowError({\n givenSize: size_(hexOrBytes),\n maxSize: size,\n })\n}\n\nexport type FromHexParameters<\n to extends 'string' | 'bigint' | 'number' | 'bytes' | 'boolean',\n> =\n | to\n | {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n /** Type to convert to. */\n to: to\n }\n\nexport type FromHexReturnType<to> = to extends 'string'\n ? string\n : to extends 'bigint'\n ? bigint\n : to extends 'number'\n ? number\n : to extends 'bytes'\n ? ByteArray\n : to extends 'boolean'\n ? boolean\n : never\n\nexport type FromHexErrorType =\n | HexToNumberErrorType\n | HexToBigIntErrorType\n | HexToBoolErrorType\n | HexToStringErrorType\n | HexToBytesErrorType\n | ErrorType\n\n/**\n * Decodes a hex string into a string, number, bigint, boolean, or byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex\n * - Example: https://viem.sh/docs/utilities/fromHex#usage\n *\n * @param hex Hex string to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x1a4', 'number')\n * // 420\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c6421', 'string')\n * // 'Hello world'\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * to: 'string'\n * })\n * // 'Hello world'\n */\nexport function fromHex<\n to extends 'string' | 'bigint' | 'number' | 'bytes' | 'boolean',\n>(hex: Hex, toOrOpts: FromHexParameters<to>): FromHexReturnType<to> {\n const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts\n const to = opts.to\n\n if (to === 'number') return hexToNumber(hex, opts) as FromHexReturnType<to>\n if (to === 'bigint') return hexToBigInt(hex, opts) as FromHexReturnType<to>\n if (to === 'string') return hexToString(hex, opts) as FromHexReturnType<to>\n if (to === 'boolean') return hexToBool(hex, opts) as FromHexReturnType<to>\n return hexToBytes(hex, opts) as FromHexReturnType<to>\n}\n\nexport type HexToBigIntOpts = {\n /** Whether or not the number of a signed representation. */\n signed?: boolean | undefined\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToBigIntErrorType = AssertSizeErrorType | ErrorType\n\n/**\n * Decodes a hex value into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobigint\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x1a4', { signed: true })\n * // 420n\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420n\n */\nexport function hexToBigInt(hex: Hex, opts: HexToBigIntOpts = {}): bigint {\n const { signed } = opts\n\n if (opts.size) assertSize(hex, { size: opts.size })\n\n const value = BigInt(hex)\n if (!signed) return value\n\n const size = (hex.length - 2) / 2\n const max = (1n << (BigInt(size) * 8n - 1n)) - 1n\n if (value <= max) return value\n\n return value - BigInt(`0x${'f'.padStart(size * 2, 'f')}`) - 1n\n}\n\nexport type HexToBoolOpts = {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToBoolErrorType =\n | AssertSizeErrorType\n | InvalidHexBooleanErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a hex value into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobool\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x01')\n * // true\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x0000000000000000000000000000000000000000000000000000000000000001', { size: 32 })\n * // true\n */\nexport function hexToBool(hex_: Hex, opts: HexToBoolOpts = {}): boolean {\n let hex = hex_\n if (opts.size) {\n assertSize(hex, { size: opts.size })\n hex = trim(hex)\n }\n if (trim(hex) === '0x00') return false\n if (trim(hex) === '0x01') return true\n throw new InvalidHexBooleanError(hex)\n}\n\nexport type HexToNumberOpts = HexToBigIntOpts\n\nexport type HexToNumberErrorType = HexToBigIntErrorType | ErrorType\n\n/**\n * Decodes a hex string into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextonumber\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToNumber('0x1a4')\n * // 420\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420\n */\nexport function hexToNumber(hex: Hex, opts: HexToNumberOpts = {}): number {\n return Number(hexToBigInt(hex, opts))\n}\n\nexport type HexToStringOpts = {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToStringErrorType =\n | AssertSizeErrorType\n | HexToBytesErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a hex value into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextostring\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c6421')\n * // 'Hello world!'\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * })\n * // 'Hello world'\n */\nexport function hexToString(hex: Hex, opts: HexToStringOpts = {}): string {\n let bytes = hexToBytes(hex)\n if (opts.size) {\n assertSize(bytes, { size: opts.size })\n bytes = trim(bytes, { dir: 'right' })\n }\n return new TextDecoder().decode(bytes)\n}\n","import {\n IntegerOutOfRangeError,\n type IntegerOutOfRangeErrorType,\n} from '../../errors/encoding.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type PadErrorType, pad } from '../data/pad.js'\n\nimport { type AssertSizeErrorType, assertSize } from './fromHex.js'\n\nconst hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) =>\n i.toString(16).padStart(2, '0'),\n)\n\nexport type ToHexParameters = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type ToHexErrorType =\n | BoolToHexErrorType\n | BytesToHexErrorType\n | NumberToHexErrorType\n | StringToHexErrorType\n | ErrorType\n\n/**\n * Encodes a string, number, bigint, or ByteArray into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex\n * - Example: https://viem.sh/docs/utilities/toHex#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world')\n * // '0x48656c6c6f20776f726c6421'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex(420)\n * // '0x1a4'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world', { size: 32 })\n * // '0x48656c6c6f20776f726c64210000000000000000000000000000000000000000'\n */\nexport function toHex(\n value: string | number | bigint | boolean | ByteArray,\n opts: ToHexParameters = {},\n): Hex {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToHex(value, opts)\n if (typeof value === 'string') {\n return stringToHex(value, opts)\n }\n if (typeof value === 'boolean') return boolToHex(value, opts)\n return bytesToHex(value, opts)\n}\n\nexport type BoolToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type BoolToHexErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a boolean into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#booltohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true)\n * // '0x1'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(false)\n * // '0x0'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true, { size: 32 })\n * // '0x0000000000000000000000000000000000000000000000000000000000000001'\n */\nexport function boolToHex(value: boolean, opts: BoolToHexOpts = {}): Hex {\n const hex: Hex = `0x${Number(value)}`\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size })\n return pad(hex, { size: opts.size })\n }\n return hex\n}\n\nexport type BytesToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type BytesToHexErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a bytes array into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#bytestohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]), { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function bytesToHex(value: ByteArray, opts: BytesToHexOpts = {}): Hex {\n let string = ''\n for (let i = 0; i < value.length; i++) {\n string += hexes[value[i]]\n }\n const hex = `0x${string}` as const\n\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size })\n return pad(hex, { dir: 'right', size: opts.size })\n }\n return hex\n}\n\nexport type NumberToHexOpts =\n | {\n /** Whether or not the number of a signed representation. */\n signed?: boolean | undefined\n /** The size (in bytes) of the output hex value. */\n size: number\n }\n | {\n signed?: undefined\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n }\n\nexport type NumberToHexErrorType =\n | IntegerOutOfRangeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a number or bigint into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#numbertohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420)\n * // '0x1a4'\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420, { size: 32 })\n * // '0x00000000000000000000000000000000000000000000000000000000000001a4'\n */\nexport function numberToHex(\n value_: number | bigint,\n opts: NumberToHexOpts = {},\n): Hex {\n const { signed, size } = opts\n\n const value = BigInt(value_)\n\n let maxValue: bigint | number | undefined\n if (size) {\n if (signed) maxValue = (1n << (BigInt(size) * 8n - 1n)) - 1n\n else maxValue = 2n ** (BigInt(size) * 8n) - 1n\n } else if (typeof value_ === 'number') {\n maxValue = BigInt(Number.MAX_SAFE_INTEGER)\n }\n\n const minValue = typeof maxValue === 'bigint' && signed ? -maxValue - 1n : 0\n\n if ((maxValue && value > maxValue) || value < minValue) {\n const suffix = typeof value_ === 'bigint' ? 'n' : ''\n throw new IntegerOutOfRangeError({\n max: maxValue ? `${maxValue}${suffix}` : undefined,\n min: `${minValue}${suffix}`,\n signed,\n size,\n value: `${value_}${suffix}`,\n })\n }\n\n const hex = `0x${(\n signed && value < 0 ? (1n << BigInt(size * 8)) + BigInt(value) : value\n ).toString(16)}` as Hex\n if (size) return pad(hex, { size }) as Hex\n return hex\n}\n\nexport type StringToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type StringToHexErrorType = BytesToHexErrorType | ErrorType\n\nconst encoder = /*#__PURE__*/ new TextEncoder()\n\n/**\n * Encodes a UTF-8 string into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#stringtohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!')\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!', { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function stringToHex(value_: string, opts: StringToHexOpts = {}): Hex {\n const value = encoder.encode(value_)\n return bytesToHex(value, opts)\n}\n","import { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\nimport { type PadErrorType, pad } from '../data/pad.js'\n\nimport { type AssertSizeErrorType, assertSize } from './fromHex.js'\nimport {\n type NumberToHexErrorType,\n type NumberToHexOpts,\n numberToHex,\n} from './toHex.js'\n\nconst encoder = /*#__PURE__*/ new TextEncoder()\n\nexport type ToBytesParameters = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type ToBytesErrorType =\n | NumberToBytesErrorType\n | BoolToBytesErrorType\n | HexToBytesErrorType\n | StringToBytesErrorType\n | IsHexErrorType\n | ErrorType\n\n/**\n * Encodes a UTF-8 string, hex value, bigint, number or boolean to a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes\n * - Example: https://viem.sh/docs/utilities/toBytes#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes('Hello world')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function toBytes(\n value: string | bigint | number | boolean | Hex,\n opts: ToBytesParameters = {},\n): ByteArray {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToBytes(value, opts)\n if (typeof value === 'boolean') return boolToBytes(value, opts)\n if (isHex(value)) return hexToBytes(value, opts)\n return stringToBytes(value, opts)\n}\n\nexport type BoolToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type BoolToBytesErrorType =\n | AssertSizeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a boolean into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#booltobytes\n *\n * @param value Boolean value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true)\n * // Uint8Array([1])\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true, { size: 32 })\n * // Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])\n */\nexport function boolToBytes(value: boolean, opts: BoolToBytesOpts = {}) {\n const bytes = new Uint8Array(1)\n bytes[0] = Number(value)\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size })\n return pad(bytes, { size: opts.size })\n }\n return bytes\n}\n\n// We use very optimized technique to convert hex string to byte array\nconst charCodeMap = {\n zero: 48,\n nine: 57,\n A: 65,\n F: 70,\n a: 97,\n f: 102,\n} as const\n\nfunction charCodeToBase16(char: number) {\n if (char >= charCodeMap.zero && char <= charCodeMap.nine)\n return char - charCodeMap.zero\n if (char >= charCodeMap.A && char <= charCodeMap.F)\n return char - (charCodeMap.A - 10)\n if (char >= charCodeMap.a && char <= charCodeMap.f)\n return char - (charCodeMap.a - 10)\n return undefined\n}\n\nexport type HexToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type HexToBytesErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a hex string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#hextobytes\n *\n * @param hex Hex string to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function hexToBytes(hex_: Hex, opts: HexToBytesOpts = {}): ByteArray {\n let hex = hex_\n if (opts.size) {\n assertSize(hex, { size: opts.size })\n hex = pad(hex, { dir: 'right', size: opts.size })\n }\n\n let hexString = hex.slice(2) as string\n if (hexString.length % 2) hexString = `0${hexString}`\n\n const length = hexString.length / 2\n const bytes = new Uint8Array(length)\n for (let index = 0, j = 0; index < length; index++) {\n const nibbleLeft = charCodeToBase16(hexString.charCodeAt(j++))\n const nibbleRight = charCodeToBase16(hexString.charCodeAt(j++))\n if (nibbleLeft === undefined || nibbleRight === undefined) {\n throw new BaseError(\n `Invalid byte sequence (\"${hexString[j - 2]}${\n hexString[j - 1]\n }\" in \"${hexString}\").`,\n )\n }\n bytes[index] = nibbleLeft * 16 + nibbleRight\n }\n return bytes\n}\n\nexport type NumberToBytesErrorType =\n | NumberToHexErrorType\n | HexToBytesErrorType\n | ErrorType\n\n/**\n * Encodes a number into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#numbertobytes\n *\n * @param value Number to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function numberToBytes(\n value: bigint | number,\n opts?: NumberToHexOpts | undefined,\n) {\n const hex = numberToHex(value, opts)\n return hexToBytes(hex)\n}\n\nexport type StringToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type StringToBytesErrorType =\n | AssertSizeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a UTF-8 string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#stringtobytes\n *\n * @param value String to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33])\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function stringToBytes(\n value: string,\n opts: StringToBytesOpts = {},\n): ByteArray {\n const bytes = encoder.encode(value)\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size })\n return pad(bytes, { dir: 'right', size: opts.size })\n }\n return bytes\n}\n","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\nfunction fromBig(\n n: bigint,\n le = false\n): {\n h: number;\n l: number;\n} {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false): Uint32Array[] {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number): bigint => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number): number => h >>> s;\nconst shrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number): number => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number): number => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number): number => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number): number => l;\nconst rotr32L = (h: number, _l: number): number => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number): number => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number): number => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number): number => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number): number => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(\n Ah: number,\n Al: number,\n Bh: number,\n Bl: number\n): {\n h: number;\n l: number;\n} {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number): number => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number): number =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number): number =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number): number =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\n// prettier-ignore\nconst u64: { fromBig: typeof fromBig; split: typeof split; toBig: (h: number, l: number) => bigint; shrSH: (h: number, _l: number, s: number) => number; shrSL: (h: number, l: number, s: number) => number; rotrSH: (h: number, l: number, s: number) => number; rotrSL: (h: number, l: number, s: number) => number; rotrBH: (h: number, l: number, s: number) => number; rotrBL: (h: number, l: number, s: number) => number; rotr32H: (_h: number, l: number) => number; rotr32L: (h: number, _l: number) => number; rotlSH: (h: number, l: number, s: number) => number; rotlSL: (h: number, l: number, s: number) => number; rotlBH: (h: number, l: number, s: number) => number; rotlBL: (h: number, l: number, s: number) => number; add: typeof add; add3L: (Al: number, Bl: number, Cl: number) => number; add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; } = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","/**\n * SHA3 (keccak) hash function, based on a new \"Sponge function\" design.\n * Different from older hashes, the internal state is bigger than output size.\n *\n * Check out [FIPS-202](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf),\n * [Website](https://keccak.team/keccak.html),\n * [the differences between SHA-3 and Keccak](https://crypto.stackexchange.com/questions/15727/what-are-the-key-differences-between-the-draft-sha-3-standard-and-the-keccak-sub).\n *\n * Check out `sha3-addons` module for cSHAKE, k12, and others.\n * @module\n */\nimport { abytes, aexists, anumber, aoutput } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport {\n byteSwap32,\n Hash,\n isLE,\n toBytes,\n u32,\n wrapConstructor,\n wrapXOFConstructorWithOpts,\n type CHash,\n type CHashXO,\n type HashXOF,\n type Input,\n} from './utils.js';\n\n// Various per round constants calculations\nconst SHA3_PI: number[] = [];\nconst SHA3_ROTL: number[] = [];\nconst _SHA3_IOTA: bigint[] = [];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n) t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h: number, l: number, s: number) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h: number, l: number, s: number) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n\n/** `keccakf1600` internal function, additionally allows to adjust round count. */\nexport function keccakP(s: Uint32Array, rounds: number = 24): void {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++) B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (Ï) and Pi (Ï€)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++) B[x] = s[y + x];\n for (let x = 0; x < 10; x++) s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\n\n/** Keccak sponge function. */\nexport class Keccak extends Hash<Keccak> implements HashXOF<Keccak> {\n protected state: Uint8Array;\n protected pos = 0;\n protected posOut = 0;\n protected finished = false;\n protected state32: Uint32Array;\n protected destroyed = false;\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(\n public blockLen: number,\n public suffix: number,\n public outputLen: number,\n protected enableXOF = false,\n protected rounds: number = 24\n ) {\n super();\n // Can be passed from user as dkLen\n anumber(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n // 0 < blockLen < 200\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n protected keccak(): void {\n if (!isLE) byteSwap32(this.state32);\n keccakP(this.state32, this.rounds);\n if (!isLE) byteSwap32(this.state32);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data: Input): this {\n aexists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen) this.keccak();\n }\n return this;\n }\n protected finish(): void {\n if (this.finished) return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n protected writeInto(out: Uint8Array): Uint8Array {\n aexists(this, false);\n abytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len; ) {\n if (this.posOut >= blockLen) this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out: Uint8Array): Uint8Array {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF) throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes: number): Uint8Array {\n anumber(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out: Uint8Array): Uint8Array {\n aoutput(out, this);\n if (this.finished) throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest(): Uint8Array {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy(): void {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to?: Keccak): Keccak {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to ||= new Keccak(blockLen, suffix, outputLen, enableXOF, rounds);\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\n\nconst gen = (suffix: number, blockLen: number, outputLen: number) =>\n wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\n\n/** SHA3-224 hash function. */\nexport const sha3_224: CHash = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/** SHA3-256 hash function. Different from keccak-256. */\nexport const sha3_256: CHash = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\n/** SHA3-384 hash function. */\nexport const sha3_384: CHash = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\n/** SHA3-512 hash function. */\nexport const sha3_512: CHash = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\n\n/** keccak-224 hash function. */\nexport const keccak_224: CHash = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/** keccak-256 hash function. Different from SHA3-256. */\nexport const keccak_256: CHash = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\n/** keccak-384 hash function. */\nexport const keccak_384: CHash = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\n/** keccak-512 hash function. */\nexport const keccak_512: CHash = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\n\nexport type ShakeOpts = { dkLen?: number };\n\nconst genShake = (suffix: number, blockLen: number, outputLen: number) =>\n wrapXOFConstructorWithOpts<HashXOF<Keccak>, ShakeOpts>(\n (opts: ShakeOpts = {}) =>\n new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true)\n );\n\n/** SHAKE128 XOF with 128-bit security. */\nexport const shake128: CHashXO = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\n/** SHAKE256 XOF with 256-bit security. */\nexport const shake256: CHashXO = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n","import { keccak_256 } from '@noble/hashes/sha3'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\nimport { type ToBytesErrorType, toBytes } from '../encoding/toBytes.js'\nimport { type ToHexErrorType, toHex } from '../encoding/toHex.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type Keccak256Hash<to extends To> =\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type Keccak256ErrorType =\n | IsHexErrorType\n | ToBytesErrorType\n | ToHexErrorType\n | ErrorType\n\nexport function keccak256<to extends To = 'hex'>(\n value: Hex | ByteArray,\n to_?: to | undefined,\n): Keccak256Hash<to> {\n const to = to_ || 'hex'\n const bytes = keccak_256(\n isHex(value, { strict: false }) ? toBytes(value) : value,\n )\n if (to === 'bytes') return bytes as Keccak256Hash<to>\n return toHex(bytes) as Keccak256Hash<to>\n}\n","/**\n * Map with a LRU (Least recently used) policy.\n *\n * @link https://en.wikipedia.org/wiki/Cache_replacement_policies#LRU\n */\nexport class LruMap<value = unknown> extends Map<string, value> {\n maxSize: number\n\n constructor(size: number) {\n super()\n this.maxSize = size\n }\n\n override get(key: string) {\n const value = super.get(key)\n\n if (super.has(key) && value !== undefined) {\n this.delete(key)\n super.set(key, value)\n }\n\n return value\n }\n\n override set(key: string, value: value) {\n super.set(key, value)\n if (this.maxSize && this.size > this.maxSize) {\n const firstKey = this.keys().next().value\n if (firstKey) this.delete(firstKey)\n }\n return this\n }\n}\n","import type { Address } from 'abitype'\n\nimport { InvalidAddressError } from '../../errors/address.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport {\n type StringToBytesErrorType,\n stringToBytes,\n} from '../encoding/toBytes.js'\nimport { type Keccak256ErrorType, keccak256 } from '../hash/keccak256.js'\nimport { LruMap } from '../lru.js'\nimport { type IsAddressErrorType, isAddress } from './isAddress.js'\n\nconst checksumAddressCache = /*#__PURE__*/ new LruMap<Address>(8192)\n\nexport type ChecksumAddressErrorType =\n | Keccak256ErrorType\n | StringToBytesErrorType\n | ErrorType\n\nexport function checksumAddress(\n address_: Address,\n /**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\n chainId?: number | undefined,\n): Address {\n if (checksumAddressCache.has(`${address_}.${chainId}`))\n return checksumAddressCache.get(`${address_}.${chainId}`)!\n\n const hexAddress = chainId\n ? `${chainId}${address_.toLowerCase()}`\n : address_.substring(2).toLowerCase()\n const hash = keccak256(stringToBytes(hexAddress), 'bytes')\n\n const address = (\n chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress\n ).split('')\n for (let i = 0; i < 40; i += 2) {\n if (hash[i >> 1] >> 4 >= 8 && address[i]) {\n address[i] = address[i].toUpperCase()\n }\n if ((hash[i >> 1] & 0x0f) >= 8 && address[i + 1]) {\n address[i + 1] = address[i + 1].toUpperCase()\n }\n }\n\n const result = `0x${address.join('')}` as const\n checksumAddressCache.set(`${address_}.${chainId}`, result)\n return result\n}\n\nexport type GetAddressErrorType =\n | ChecksumAddressErrorType\n | IsAddressErrorType\n | ErrorType\n\nexport function getAddress(\n address: string,\n /**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\n chainId?: number,\n): Address {\n if (!isAddress(address, { strict: false }))\n throw new InvalidAddressError({ address })\n return checksumAddress(address, chainId)\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex, Signature } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\nimport {\n type HexToNumberErrorType,\n hexToBigInt,\n hexToNumber,\n} from '../encoding/fromHex.js'\nimport { toHex } from '../encoding/toHex.js'\n\nexport type RecoverPublicKeyParameters = {\n hash: Hex | ByteArray\n signature: Hex | ByteArray | Signature\n}\n\nexport type RecoverPublicKeyReturnType = Hex\n\nexport type RecoverPublicKeyErrorType =\n | HexToNumberErrorType\n | IsHexErrorType\n | ErrorType\n\nexport async function recoverPublicKey({\n hash,\n signature,\n}: RecoverPublicKeyParameters): Promise<RecoverPublicKeyReturnType> {\n const hashHex = isHex(hash) ? hash : toHex(hash)\n\n const { secp256k1 } = await import('@noble/curves/secp256k1')\n const signature_ = (() => {\n // typeof signature: `Signature`\n if (typeof signature === 'object' && 'r' in signature && 's' in signature) {\n const { r, s, v, yParity } = signature\n const yParityOrV = Number(yParity ?? v)!\n const recoveryBit = toRecoveryBit(yParityOrV)\n return new secp256k1.Signature(\n hexToBigInt(r),\n hexToBigInt(s),\n ).addRecoveryBit(recoveryBit)\n }\n\n // typeof signature: `Hex | ByteArray`\n const signatureHex = isHex(signature) ? signature : toHex(signature)\n const yParityOrV = hexToNumber(`0x${signatureHex.slice(130)}`)\n const recoveryBit = toRecoveryBit(yParityOrV)\n return secp256k1.Signature.fromCompact(\n signatureHex.substring(2, 130),\n ).addRecoveryBit(recoveryBit)\n })()\n\n const publicKey = signature_\n .recoverPublicKey(hashHex.substring(2))\n .toHex(false)\n return `0x${publicKey}`\n}\n\nfunction toRecoveryBit(yParityOrV: number) {\n if (yParityOrV === 0 || yParityOrV === 1) return yParityOrV\n if (yParityOrV === 27) return 0\n if (yParityOrV === 28) return 1\n throw new Error('Invalid yParityOrV value')\n}\n","import type { Address } from 'abitype'\n\nimport { publicKeyToAddress } from '../../accounts/utils/publicKeyToAddress.js'\nimport type { ByteArray, Hex, Signature } from '../../types/misc.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport { recoverPublicKey } from './recoverPublicKey.js'\n\nexport type RecoverAddressParameters = {\n hash: Hex | ByteArray\n signature: Hex | ByteArray | Signature\n}\n\nexport type RecoverAddressReturnType = Address\n\nexport type RecoverAddressErrorType = ErrorType\n\nexport async function recoverAddress({\n hash,\n signature,\n}: RecoverAddressParameters): Promise<RecoverAddressReturnType> {\n return publicKeyToAddress(await recoverPublicKey({ hash: hash, signature }))\n}\n","import type { Address } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport {\n type ChecksumAddressErrorType,\n checksumAddress,\n} from '../../utils/address/getAddress.js'\nimport {\n type Keccak256ErrorType,\n keccak256,\n} from '../../utils/hash/keccak256.js'\n\nexport type PublicKeyToAddressErrorType =\n | ChecksumAddressErrorType\n | Keccak256ErrorType\n | ErrorType\n\n/**\n * @description Converts an ECDSA public key to an address.\n *\n * @param publicKey The public key to convert.\n *\n * @returns The address.\n */\nexport function publicKeyToAddress(publicKey: Hex): Address {\n const address = keccak256(`0x${publicKey.substring(4)}`).substring(26)\n return checksumAddress(`0x${address}`) as Address\n}\n","export function alloc(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n return globalThis.Buffer.alloc(size);\n }\n return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n return globalThis.Buffer.allocUnsafe(size);\n }\n return new Uint8Array(size);\n}","import { allocUnsafe } from './alloc.js';\nexport function concat(arrays, length) {\n if (!length) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n }\n const output = allocUnsafe(length);\n let offset = 0;\n for (const arr of arrays) {\n output.set(arr, offset);\n offset += arr.length;\n }\n return output;\n}","function base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256);\n var iFACTOR = Math.log(256) / Math.log(BASE);\n function encode(source) {\n if (source instanceof Uint8Array);\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n var b58 = new Uint8Array(size);\n while (pbegin !== pend) {\n var carry = source[pbegin];\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n carry += 256 * b58[it1] >>> 0;\n b58[it1] = carry % BASE >>> 0;\n carry = carry / BASE >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n if (source[psz] === ' ') {\n return;\n }\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n var size = (source.length - psz) * FACTOR + 1 >>> 0;\n var b256 = new Uint8Array(size);\n while (source[psz]) {\n var carry = BASE_MAP[source.charCodeAt(psz)];\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n carry += BASE * b256[it3] >>> 0;\n b256[it3] = carry % 256 >>> 0;\n carry = carry / 256 >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n if (source[psz] === ' ') {\n return;\n }\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${ name } character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;","const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n const hexes = hex.match(/../g);\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n};\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n equals,\n coerce,\n isBinary,\n fromHex,\n toHex,\n fromString,\n toString,\n empty\n};","import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${ this.prefix }${ this.baseEncode(bytes) }`;\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\nclass Decoder {\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n } else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder) {\n return decoder.decode(input);\n } else {\n throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n }\n }\n}\nexport const or = (left, right) => new ComposedDecoder({\n ...left.decoders || { [left.prefix]: left },\n ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n const {encode, decode} = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: text => coerce(decode(text))\n });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n let bits = 0;\n let buffer = 0;\n let written = 0;\n for (let i = 0; i < end; ++i) {\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${ name } character`);\n }\n buffer = buffer << bitsPerChar | value;\n bits += bitsPerChar;\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 255 & buffer >> bits;\n }\n }\n if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0;\n let buffer = 0;\n for (let i = 0; i < data.length; ++i) {\n buffer = buffer << 8 | data[i];\n bits += 8;\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & buffer >> bits];\n }\n }\n if (bits) {\n out += alphabet[mask & buffer << bitsPerChar - bits];\n }\n if (pad) {\n while (out.length * bitsPerChar & 7) {\n out += '=';\n }\n }\n return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n};","import { from } from './base.js';\nimport {\n fromString,\n toString\n} from '../bytes.js';\nexport const identity = from({\n prefix: '\\0',\n name: 'identity',\n encode: buf => toString(buf),\n decode: str => fromString(str)\n});","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});","import { from } from './base.js';\nconst alphabet = Array.from('\\uD83D\\uDE80\\uD83E\\uDE90\\u2604\\uD83D\\uDEF0\\uD83C\\uDF0C\\uD83C\\uDF11\\uD83C\\uDF12\\uD83C\\uDF13\\uD83C\\uDF14\\uD83C\\uDF15\\uD83C\\uDF16\\uD83C\\uDF17\\uD83C\\uDF18\\uD83C\\uDF0D\\uD83C\\uDF0F\\uD83C\\uDF0E\\uD83D\\uDC09\\u2600\\uD83D\\uDCBB\\uD83D\\uDDA5\\uD83D\\uDCBE\\uD83D\\uDCBF\\uD83D\\uDE02\\u2764\\uD83D\\uDE0D\\uD83E\\uDD23\\uD83D\\uDE0A\\uD83D\\uDE4F\\uD83D\\uDC95\\uD83D\\uDE2D\\uD83D\\uDE18\\uD83D\\uDC4D\\uD83D\\uDE05\\uD83D\\uDC4F\\uD83D\\uDE01\\uD83D\\uDD25\\uD83E\\uDD70\\uD83D\\uDC94\\uD83D\\uDC96\\uD83D\\uDC99\\uD83D\\uDE22\\uD83E\\uDD14\\uD83D\\uDE06\\uD83D\\uDE44\\uD83D\\uDCAA\\uD83D\\uDE09\\u263A\\uD83D\\uDC4C\\uD83E\\uDD17\\uD83D\\uDC9C\\uD83D\\uDE14\\uD83D\\uDE0E\\uD83D\\uDE07\\uD83C\\uDF39\\uD83E\\uDD26\\uD83C\\uDF89\\uD83D\\uDC9E\\u270C\\u2728\\uD83E\\uDD37\\uD83D\\uDE31\\uD83D\\uDE0C\\uD83C\\uDF38\\uD83D\\uDE4C\\uD83D\\uDE0B\\uD83D\\uDC97\\uD83D\\uDC9A\\uD83D\\uDE0F\\uD83D\\uDC9B\\uD83D\\uDE42\\uD83D\\uDC93\\uD83E\\uDD29\\uD83D\\uDE04\\uD83D\\uDE00\\uD83D\\uDDA4\\uD83D\\uDE03\\uD83D\\uDCAF\\uD83D\\uDE48\\uD83D\\uDC47\\uD83C\\uDFB6\\uD83D\\uDE12\\uD83E\\uDD2D\\u2763\\uD83D\\uDE1C\\uD83D\\uDC8B\\uD83D\\uDC40\\uD83D\\uDE2A\\uD83D\\uDE11\\uD83D\\uDCA5\\uD83D\\uDE4B\\uD83D\\uDE1E\\uD83D\\uDE29\\uD83D\\uDE21\\uD83E\\uDD2A\\uD83D\\uDC4A\\uD83E\\uDD73\\uD83D\\uDE25\\uD83E\\uDD24\\uD83D\\uDC49\\uD83D\\uDC83\\uD83D\\uDE33\\u270B\\uD83D\\uDE1A\\uD83D\\uDE1D\\uD83D\\uDE34\\uD83C\\uDF1F\\uD83D\\uDE2C\\uD83D\\uDE43\\uD83C\\uDF40\\uD83C\\uDF37\\uD83D\\uDE3B\\uD83D\\uDE13\\u2B50\\u2705\\uD83E\\uDD7A\\uD83C\\uDF08\\uD83D\\uDE08\\uD83E\\uDD18\\uD83D\\uDCA6\\u2714\\uD83D\\uDE23\\uD83C\\uDFC3\\uD83D\\uDC90\\u2639\\uD83C\\uDF8A\\uD83D\\uDC98\\uD83D\\uDE20\\u261D\\uD83D\\uDE15\\uD83C\\uDF3A\\uD83C\\uDF82\\uD83C\\uDF3B\\uD83D\\uDE10\\uD83D\\uDD95\\uD83D\\uDC9D\\uD83D\\uDE4A\\uD83D\\uDE39\\uD83D\\uDDE3\\uD83D\\uDCAB\\uD83D\\uDC80\\uD83D\\uDC51\\uD83C\\uDFB5\\uD83E\\uDD1E\\uD83D\\uDE1B\\uD83D\\uDD34\\uD83D\\uDE24\\uD83C\\uDF3C\\uD83D\\uDE2B\\u26BD\\uD83E\\uDD19\\u2615\\uD83C\\uDFC6\\uD83E\\uDD2B\\uD83D\\uDC48\\uD83D\\uDE2E\\uD83D\\uDE46\\uD83C\\uDF7B\\uD83C\\uDF43\\uD83D\\uDC36\\uD83D\\uDC81\\uD83D\\uDE32\\uD83C\\uDF3F\\uD83E\\uDDE1\\uD83C\\uDF81\\u26A1\\uD83C\\uDF1E\\uD83C\\uDF88\\u274C\\u270A\\uD83D\\uDC4B\\uD83D\\uDE30\\uD83E\\uDD28\\uD83D\\uDE36\\uD83E\\uDD1D\\uD83D\\uDEB6\\uD83D\\uDCB0\\uD83C\\uDF53\\uD83D\\uDCA2\\uD83E\\uDD1F\\uD83D\\uDE41\\uD83D\\uDEA8\\uD83D\\uDCA8\\uD83E\\uDD2C\\u2708\\uD83C\\uDF80\\uD83C\\uDF7A\\uD83E\\uDD13\\uD83D\\uDE19\\uD83D\\uDC9F\\uD83C\\uDF31\\uD83D\\uDE16\\uD83D\\uDC76\\uD83E\\uDD74\\u25B6\\u27A1\\u2753\\uD83D\\uDC8E\\uD83D\\uDCB8\\u2B07\\uD83D\\uDE28\\uD83C\\uDF1A\\uD83E\\uDD8B\\uD83D\\uDE37\\uD83D\\uDD7A\\u26A0\\uD83D\\uDE45\\uD83D\\uDE1F\\uD83D\\uDE35\\uD83D\\uDC4E\\uD83E\\uDD32\\uD83E\\uDD20\\uD83E\\uDD27\\uD83D\\uDCCC\\uD83D\\uDD35\\uD83D\\uDC85\\uD83E\\uDDD0\\uD83D\\uDC3E\\uD83C\\uDF52\\uD83D\\uDE17\\uD83E\\uDD11\\uD83C\\uDF0A\\uD83E\\uDD2F\\uD83D\\uDC37\\u260E\\uD83D\\uDCA7\\uD83D\\uDE2F\\uD83D\\uDC86\\uD83D\\uDC46\\uD83C\\uDFA4\\uD83D\\uDE47\\uD83C\\uDF51\\u2744\\uD83C\\uDF34\\uD83D\\uDCA3\\uD83D\\uDC38\\uD83D\\uDC8C\\uD83D\\uDCCD\\uD83E\\uDD40\\uD83E\\uDD22\\uD83D\\uDC45\\uD83D\\uDCA1\\uD83D\\uDCA9\\uD83D\\uDC50\\uD83D\\uDCF8\\uD83D\\uDC7B\\uD83E\\uDD10\\uD83E\\uDD2E\\uD83C\\uDFBC\\uD83E\\uDD75\\uD83D\\uDEA9\\uD83C\\uDF4E\\uD83C\\uDF4A\\uD83D\\uDC7C\\uD83D\\uDC8D\\uD83D\\uDCE3\\uD83E\\uDD42');\nconst alphabetBytesToChars = alphabet.reduce((p, c, i) => {\n p[i] = c;\n return p;\n}, []);\nconst alphabetCharsToBytes = alphabet.reduce((p, c, i) => {\n p[c.codePointAt(0)] = i;\n return p;\n}, []);\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${ char }`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '\\uD83D\\uDE80',\n name: 'base256emoji',\n encode,\n decode\n});","var encode_1 = encode;\nvar MSB = 128, REST = 127, MSBALL = ~REST, INT = Math.pow(2, 31);\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = num & 255 | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = num & 255 | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 128, REST$1 = 127;\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (value) {\n return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;","import varint from '../vendor/varint.js';\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset);\n return [\n code,\n varint.decode.bytes\n ];\n};\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset);\n return target;\n};\nexport const encodingLength = int => {\n return varint.encodingLength(int);\n};","import {\n coerce,\n equals as equalBytes\n} from '../bytes.js';\nimport * as varint from '../varint.js';\nexport const create = (code, digest) => {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n};\nexport const decode = multihash => {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n};\nexport const equals = (a, b) => {\n if (a === b) {\n return true;\n } else {\n return a.code === b.code && a.size === b.size && equalBytes(a.bytes, b.bytes);\n }\n};\nexport class Digest {\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}","import * as Digest from './digest.js';\nexport const from = ({name, code, encode}) => new Hasher(name, code, encode);\nexport class Hasher {\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array ? Digest.create(this.code, result) : result.then(digest => Digest.create(this.code, digest));\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}","import { from } from './hasher.js';\nconst sha = name => async data => new Uint8Array(await crypto.subtle.digest(name, data));\nexport const sha256 = from({\n name: 'sha2-256',\n code: 18,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 19,\n encode: sha('SHA-512')\n});","import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0;\nconst name = 'identity';\nconst encode = coerce;\nconst digest = input => Digest.create(code, encode(input));\nexport const identity = {\n code,\n name,\n encode,\n digest\n};","import { coerce } from '../bytes.js';\nexport const name = 'raw';\nexport const code = 85;\nexport const encode = node => coerce(node);\nexport const decode = data => coerce(data);","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 512;\nexport const encode = node => textEncoder.encode(JSON.stringify(node));\nexport const decode = data => JSON.parse(textDecoder.decode(data));","import * as varint from './varint.js';\nimport * as Digest from './hashes/digest.js';\nimport { base58btc } from './bases/base58.js';\nimport { base32 } from './bases/base32.js';\nimport { coerce } from './bytes.js';\nexport class CID {\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n this.byteOffset = bytes.byteOffset;\n this.byteLength = bytes.byteLength;\n this.asCID = this;\n this._baseCache = new Map();\n Object.defineProperties(this, {\n byteOffset: hidden,\n byteLength: hidden,\n code: readonly,\n version: readonly,\n multihash: readonly,\n bytes: readonly,\n _baseCache: hidden,\n asCID: hidden\n });\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n default: {\n const {code, multihash} = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\n }\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0');\n }\n return CID.createV0(multihash);\n }\n }\n }\n toV1() {\n switch (this.version) {\n case 0: {\n const {code, digest} = this.multihash;\n const multihash = Digest.create(code, digest);\n return CID.createV1(this.code, multihash);\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${ this.version } to version 0. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return other && this.code === other.code && this.version === other.version && Digest.equals(this.multihash, other.multihash);\n }\n toString(base) {\n const {bytes, version, _baseCache} = this;\n switch (version) {\n case 0:\n return toStringV0(bytes, _baseCache, base || base58btc.encoder);\n default:\n return toStringV1(bytes, _baseCache, base || base32.encoder);\n }\n }\n toJSON() {\n return {\n code: this.code,\n version: this.version,\n hash: this.multihash.bytes\n };\n }\n get [Symbol.toStringTag]() {\n return 'CID';\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return 'CID(' + this.toString() + ')';\n }\n static isCID(value) {\n deprecate(/^0\\.0/, IS_CID_DEPRECATION);\n return !!(value && (value[cidSymbol] || value.asCID === value));\n }\n get toBaseEncodedString() {\n throw new Error('Deprecated, use .toString()');\n }\n get codec() {\n throw new Error('\"codec\" property is deprecated, use integer \"code\" property instead');\n }\n get buffer() {\n throw new Error('Deprecated .buffer property, use .bytes to get Uint8Array instead');\n }\n get multibaseName() {\n throw new Error('\"multibaseName\" property is deprecated');\n }\n get prefix() {\n throw new Error('\"prefix\" property is deprecated');\n }\n static asCID(value) {\n if (value instanceof CID) {\n return value;\n } else if (value != null && value.asCID === value) {\n const {version, code, multihash, bytes} = value;\n return new CID(version, code, multihash, bytes || encodeCID(version, code, multihash.bytes));\n } else if (value != null && value[cidSymbol] === true) {\n const {version, multihash, code} = value;\n const digest = Digest.decode(multihash);\n return CID.create(version, code, digest);\n } else {\n return null;\n }\n }\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`Version 0 CID must use dag-pb (code: ${ DAG_PB_CODE }) block encoding`);\n } else {\n return new CID(version, code, digest, digest.bytes);\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes);\n return new CID(version, code, digest, bytes);\n }\n default: {\n throw new Error('Invalid version');\n }\n }\n }\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n static createV1(code, digest) {\n return CID.create(1, code, digest);\n }\n static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length) {\n throw new Error('Incorrect length');\n }\n return cid;\n }\n static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0 ? CID.createV0(digest) : CID.createV1(specs.codec, digest);\n return [\n cid,\n bytes.subarray(specs.size)\n ];\n }\n static inspectBytes(initialBytes) {\n let offset = 0;\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset));\n offset += length;\n return i;\n };\n let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n version = 0;\n offset = 0;\n } else if (version === 1) {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${ version }`);\n }\n const prefixSize = offset;\n const multihashCode = next();\n const digestSize = next();\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return {\n version,\n codec,\n multihashCode,\n digestSize,\n multihashSize,\n size\n };\n }\n static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n cid._baseCache.set(prefix, source);\n return cid;\n }\n}\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n case 'Q': {\n const decoder = base || base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${ base58btc.prefix }${ source }`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base || base58btc;\n return [\n base58btc.prefix,\n decoder.decode(source)\n ];\n }\n case base32.prefix: {\n const decoder = base || base32;\n return [\n base32.prefix,\n decoder.decode(source)\n ];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [\n source[0],\n base.decode(source)\n ];\n }\n }\n};\nconst toStringV0 = (bytes, cache, base) => {\n const {prefix} = base;\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${ base.name } encoding`);\n }\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes).slice(1);\n cache.set(prefix, cid);\n return cid;\n } else {\n return cid;\n }\n};\nconst toStringV1 = (bytes, cache, base) => {\n const {prefix} = base;\n const cid = cache.get(prefix);\n if (cid == null) {\n const cid = base.encode(bytes);\n cache.set(prefix, cid);\n return cid;\n } else {\n return cid;\n }\n};\nconst DAG_PB_CODE = 112;\nconst SHA_256_CODE = 18;\nconst encodeCID = (version, code, multihash) => {\n const codeOffset = varint.encodingLength(version);\n const hashOffset = codeOffset + varint.encodingLength(code);\n const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n varint.encodeTo(version, bytes, 0);\n varint.encodeTo(code, bytes, codeOffset);\n bytes.set(multihash, hashOffset);\n return bytes;\n};\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\nconst readonly = {\n writable: false,\n configurable: false,\n enumerable: true\n};\nconst hidden = {\n writable: false,\n enumerable: false,\n configurable: false\n};\nconst version = '0.0.0-dev';\nconst deprecate = (range, message) => {\n if (range.test(version)) {\n console.warn(message);\n } else {\n throw new Error(message);\n }\n};\nconst IS_CID_DEPRECATION = `CID.isCID(v) is deprecated and will be removed in the next major release.\nFollowing code pattern:\n\nif (CID.isCID(value)) {\n doSomethingWithCID(value)\n}\n\nIs replaced with:\n\nconst cid = CID.asCID(value)\nif (cid) {\n // Make sure to use cid instead of value\n doSomethingWithCID(cid)\n}\n`;","import * as identityBase from './bases/identity.js';\nimport * as base2 from './bases/base2.js';\nimport * as base8 from './bases/base8.js';\nimport * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as sha2 from './hashes/sha2.js';\nimport * as identity from './hashes/identity.js';\nimport * as raw from './codecs/raw.js';\nimport * as json from './codecs/json.js';\nimport {\n CID,\n hasher,\n digest,\n varint,\n bytes\n} from './index.js';\nconst bases = {\n ...identityBase,\n ...base2,\n ...base8,\n ...base10,\n ...base16,\n ...base32,\n ...base36,\n ...base58,\n ...base64,\n ...base256emoji\n};\nconst hashes = {\n ...sha2,\n ...identity\n};\nconst codecs = {\n raw,\n json\n};\nexport {\n CID,\n hasher,\n digest,\n varint,\n bytes,\n hashes,\n bases,\n codecs\n};","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;","import bases from './util/bases.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(string, 'utf8');\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}","import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n }\n return base.encoder.encode(array).substring(1);\n}","export function assertType(obj: any, key: string, type = \"string\") {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\n\nexport function hasRequiredParams(params: any, required: string[]) {\n let matches = true;\n required.forEach((key) => {\n const exists = key in params;\n if (!exists) {\n matches = false;\n }\n });\n return matches;\n}\n\nexport function hasExactParamsLength(params: any, length: number): boolean {\n return Array.isArray(params) ? params.length === length : Object.keys(params).length === length;\n}\n\nexport function hasRequiredParamsLength(params: any, minLength: number): boolean {\n return Array.isArray(params)\n ? params.length >= minLength\n : Object.keys(params).length >= minLength;\n}\n\nexport function checkParams(params: any, required: string[], optional: string[]) {\n const exact = !optional.length;\n const matchesLength = exact\n ? hasExactParamsLength(params, required.length)\n : hasRequiredParamsLength(params, required.length);\n if (!matchesLength) return false;\n return hasRequiredParams(params, required);\n}\n\nexport function methodEndsWith(method: string, expected: string, separator = \"_\") {\n const split = method.split(separator);\n return split[split.length - 1].trim().toLowerCase() === expected.trim().toLowerCase();\n}\n",null,"function wrapToPromise(value) {\n if (!value || typeof value.then !== \"function\") {\n return Promise.resolve(value);\n }\n return value;\n}\nfunction asyncCall(function_, ...arguments_) {\n try {\n return wrapToPromise(function_(...arguments_));\n } catch (error) {\n return Promise.reject(error);\n }\n}\nfunction isPrimitive(value) {\n const type = typeof value;\n return value === null || type !== \"object\" && type !== \"function\";\n}\nfunction isPureObject(value) {\n const proto = Object.getPrototypeOf(value);\n return !proto || proto.isPrototypeOf(Object);\n}\nfunction stringify(value) {\n if (isPrimitive(value)) {\n return String(value);\n }\n if (isPureObject(value) || Array.isArray(value)) {\n return JSON.stringify(value);\n }\n if (typeof value.toJSON === \"function\") {\n return stringify(value.toJSON());\n }\n throw new Error(\"[unstorage] Cannot stringify value!\");\n}\nfunction checkBufferSupport() {\n if (typeof Buffer === \"undefined\") {\n throw new TypeError(\"[unstorage] Buffer is not supported!\");\n }\n}\nconst BASE64_PREFIX = \"base64:\";\nfunction serializeRaw(value) {\n if (typeof value === \"string\") {\n return value;\n }\n checkBufferSupport();\n const base64 = Buffer.from(value).toString(\"base64\");\n return BASE64_PREFIX + base64;\n}\nfunction deserializeRaw(value) {\n if (typeof value !== \"string\") {\n return value;\n }\n if (!value.startsWith(BASE64_PREFIX)) {\n return value;\n }\n checkBufferSupport();\n return Buffer.from(value.slice(BASE64_PREFIX.length), \"base64\");\n}\n\nconst storageKeyProperties = [\n \"hasItem\",\n \"getItem\",\n \"getItemRaw\",\n \"setItem\",\n \"setItemRaw\",\n \"removeItem\",\n \"getMeta\",\n \"setMeta\",\n \"removeMeta\",\n \"getKeys\",\n \"clear\",\n \"mount\",\n \"unmount\"\n];\nfunction prefixStorage(storage, base) {\n base = normalizeBaseKey(base);\n if (!base) {\n return storage;\n }\n const nsStorage = { ...storage };\n for (const property of storageKeyProperties) {\n nsStorage[property] = (key = \"\", ...args) => (\n // @ts-ignore\n storage[property](base + key, ...args)\n );\n }\n nsStorage.getKeys = (key = \"\", ...arguments_) => storage.getKeys(base + key, ...arguments_).then((keys) => keys.map((key2) => key2.slice(base.length)));\n return nsStorage;\n}\nfunction normalizeKey(key) {\n if (!key) {\n return \"\";\n }\n return key.split(\"?\")[0].replace(/[/\\\\]/g, \":\").replace(/:+/g, \":\").replace(/^:|:$/g, \"\");\n}\nfunction joinKeys(...keys) {\n return normalizeKey(keys.join(\":\"));\n}\nfunction normalizeBaseKey(base) {\n base = normalizeKey(base);\n return base ? base + \":\" : \"\";\n}\n\nexport { normalizeKey as a, asyncCall as b, serializeRaw as c, deserializeRaw as d, joinKeys as j, normalizeBaseKey as n, prefixStorage as p, stringify as s };\n","import destr from 'destr';\nimport { n as normalizeBaseKey, a as normalizeKey, b as asyncCall, d as deserializeRaw, s as stringify, c as serializeRaw, j as joinKeys } from './shared/unstorage.d569726e.mjs';\nexport { p as prefixStorage } from './shared/unstorage.d569726e.mjs';\n\nfunction defineDriver(factory) {\n return factory;\n}\n\nconst DRIVER_NAME = \"memory\";\nconst memory = defineDriver(() => {\n const data = /* @__PURE__ */ new Map();\n return {\n name: DRIVER_NAME,\n getInstance: () => data,\n hasItem(key) {\n return data.has(key);\n },\n getItem(key) {\n return data.get(key) ?? null;\n },\n getItemRaw(key) {\n return data.get(key) ?? null;\n },\n setItem(key, value) {\n data.set(key, value);\n },\n setItemRaw(key, value) {\n data.set(key, value);\n },\n removeItem(key) {\n data.delete(key);\n },\n getKeys() {\n return [...data.keys()];\n },\n clear() {\n data.clear();\n },\n dispose() {\n data.clear();\n }\n };\n});\n\nfunction createStorage(options = {}) {\n const context = {\n mounts: { \"\": options.driver || memory() },\n mountpoints: [\"\"],\n watching: false,\n watchListeners: [],\n unwatch: {}\n };\n const getMount = (key) => {\n for (const base of context.mountpoints) {\n if (key.startsWith(base)) {\n return {\n base,\n relativeKey: key.slice(base.length),\n driver: context.mounts[base]\n };\n }\n }\n return {\n base: \"\",\n relativeKey: key,\n driver: context.mounts[\"\"]\n };\n };\n const getMounts = (base, includeParent) => {\n return context.mountpoints.filter(\n (mountpoint) => mountpoint.startsWith(base) || includeParent && base.startsWith(mountpoint)\n ).map((mountpoint) => ({\n relativeBase: base.length > mountpoint.length ? base.slice(mountpoint.length) : void 0,\n mountpoint,\n driver: context.mounts[mountpoint]\n }));\n };\n const onChange = (event, key) => {\n if (!context.watching) {\n return;\n }\n key = normalizeKey(key);\n for (const listener of context.watchListeners) {\n listener(event, key);\n }\n };\n const startWatch = async () => {\n if (context.watching) {\n return;\n }\n context.watching = true;\n for (const mountpoint in context.mounts) {\n context.unwatch[mountpoint] = await watch(\n context.mounts[mountpoint],\n onChange,\n mountpoint\n );\n }\n };\n const stopWatch = async () => {\n if (!context.watching) {\n return;\n }\n for (const mountpoint in context.unwatch) {\n await context.unwatch[mountpoint]();\n }\n context.unwatch = {};\n context.watching = false;\n };\n const runBatch = (items, commonOptions, cb) => {\n const batches = /* @__PURE__ */ new Map();\n const getBatch = (mount) => {\n let batch = batches.get(mount.base);\n if (!batch) {\n batch = {\n driver: mount.driver,\n base: mount.base,\n items: []\n };\n batches.set(mount.base, batch);\n }\n return batch;\n };\n for (const item of items) {\n const isStringItem = typeof item === \"string\";\n const key = normalizeKey(isStringItem ? item : item.key);\n const value = isStringItem ? void 0 : item.value;\n const options2 = isStringItem || !item.options ? commonOptions : { ...commonOptions, ...item.options };\n const mount = getMount(key);\n getBatch(mount).items.push({\n key,\n value,\n relativeKey: mount.relativeKey,\n options: options2\n });\n }\n return Promise.all([...batches.values()].map((batch) => cb(batch))).then(\n (r) => r.flat()\n );\n };\n const storage = {\n // Item\n hasItem(key, opts = {}) {\n key = normalizeKey(key);\n const { relativeKey, driver } = getMount(key);\n return asyncCall(driver.hasItem, relativeKey, opts);\n },\n getItem(key, opts = {}) {\n key = normalizeKey(key);\n const { relativeKey, driver } = getMount(key);\n return asyncCall(driver.getItem, relativeKey, opts).then(\n (value) => destr(value)\n );\n },\n getItems(items, commonOptions) {\n return runBatch(items, commonOptions, (batch) => {\n if (batch.driver.getItems) {\n return asyncCall(\n batch.driver.getItems,\n batch.items.map((item) => ({\n key: item.relativeKey,\n options: item.options\n })),\n commonOptions\n ).then(\n (r) => r.map((item) => ({\n key: joinKeys(batch.base, item.key),\n value: destr(item.value)\n }))\n );\n }\n return Promise.all(\n batch.items.map((item) => {\n return asyncCall(\n batch.driver.getItem,\n item.relativeKey,\n item.options\n ).then((value) => ({\n key: item.key,\n value: destr(value)\n }));\n })\n );\n });\n },\n getItemRaw(key, opts = {}) {\n key = normalizeKey(key);\n const { relativeKey, driver } = getMount(key);\n if (driver.getItemRaw) {\n return asyncCall(driver.getItemRaw, relativeKey, opts);\n }\n return asyncCall(driver.getItem, relativeKey, opts).then(\n (value) => deserializeRaw(value)\n );\n },\n async setItem(key, value, opts = {}) {\n if (value === void 0) {\n return storage.removeItem(key);\n }\n key = normalizeKey(key);\n const { relativeKey, driver } = getMount(key);\n if (!driver.setItem) {\n return;\n }\n await asyncCall(driver.setItem, relativeKey, stringify(value), opts);\n if (!driver.watch) {\n onChange(\"update\", key);\n }\n },\n async setItems(items, commonOptions) {\n await runBatch(items, commonOptions, async (batch) => {\n if (batch.driver.setItems) {\n return asyncCall(\n batch.driver.setItems,\n batch.items.map((item) => ({\n key: item.relativeKey,\n value: stringify(item.value),\n options: item.options\n })),\n commonOptions\n );\n }\n if (!batch.driver.setItem) {\n return;\n }\n await Promise.all(\n batch.items.map((item) => {\n return asyncCall(\n batch.driver.setItem,\n item.relativeKey,\n stringify(item.value),\n item.options\n );\n })\n );\n });\n },\n async setItemRaw(key, value, opts = {}) {\n if (value === void 0) {\n return storage.removeItem(key, opts);\n }\n key = normalizeKey(key);\n const { relativeKey, driver } = getMount(key);\n if (driver.setItemRaw) {\n await asyncCall(driver.setItemRaw, relativeKey, value, opts);\n } else if (driver.setItem) {\n await asyncCall(driver.setItem, relativeKey, serializeRaw(value), opts);\n } else {\n return;\n }\n if (!driver.watch) {\n onChange(\"update\", key);\n }\n },\n async removeItem(key, opts = {}) {\n if (typeof opts === \"boolean\") {\n opts = { removeMeta: opts };\n }\n key = normalizeKey(key);\n const { relativeKey, driver } = getMount(key);\n if (!driver.removeItem) {\n return;\n }\n await asyncCall(driver.removeItem, relativeKey, opts);\n if (opts.removeMeta || opts.removeMata) {\n await asyncCall(driver.removeItem, relativeKey + \"$\", opts);\n }\n if (!driver.watch) {\n onChange(\"remove\", key);\n }\n },\n // Meta\n async getMeta(key, opts = {}) {\n if (typeof opts === \"boolean\") {\n opts = { nativeOnly: opts };\n }\n key = normalizeKey(key);\n const { relativeKey, driver } = getMount(key);\n const meta = /* @__PURE__ */ Object.create(null);\n if (driver.getMeta) {\n Object.assign(meta, await asyncCall(driver.getMeta, relativeKey, opts));\n }\n if (!opts.nativeOnly) {\n const value = await asyncCall(\n driver.getItem,\n relativeKey + \"$\",\n opts\n ).then((value_) => destr(value_));\n if (value && typeof value === \"object\") {\n if (typeof value.atime === \"string\") {\n value.atime = new Date(value.atime);\n }\n if (typeof value.mtime === \"string\") {\n value.mtime = new Date(value.mtime);\n }\n Object.assign(meta, value);\n }\n }\n return meta;\n },\n setMeta(key, value, opts = {}) {\n return this.setItem(key + \"$\", value, opts);\n },\n removeMeta(key, opts = {}) {\n return this.removeItem(key + \"$\", opts);\n },\n // Keys\n async getKeys(base, opts = {}) {\n base = normalizeBaseKey(base);\n const mounts = getMounts(base, true);\n let maskedMounts = [];\n const allKeys = [];\n for (const mount of mounts) {\n const rawKeys = await asyncCall(\n mount.driver.getKeys,\n mount.relativeBase,\n opts\n );\n for (const key of rawKeys) {\n const fullKey = mount.mountpoint + normalizeKey(key);\n if (!maskedMounts.some((p) => fullKey.startsWith(p))) {\n allKeys.push(fullKey);\n }\n }\n maskedMounts = [\n mount.mountpoint,\n ...maskedMounts.filter((p) => !p.startsWith(mount.mountpoint))\n ];\n }\n return base ? allKeys.filter(\n (key) => key.startsWith(base) && key[key.length - 1] !== \"$\"\n ) : allKeys.filter((key) => key[key.length - 1] !== \"$\");\n },\n // Utils\n async clear(base, opts = {}) {\n base = normalizeBaseKey(base);\n await Promise.all(\n getMounts(base, false).map(async (m) => {\n if (m.driver.clear) {\n return asyncCall(m.driver.clear, m.relativeBase, opts);\n }\n if (m.driver.removeItem) {\n const keys = await m.driver.getKeys(m.relativeBase || \"\", opts);\n return Promise.all(\n keys.map((key) => m.driver.removeItem(key, opts))\n );\n }\n })\n );\n },\n async dispose() {\n await Promise.all(\n Object.values(context.mounts).map((driver) => dispose(driver))\n );\n },\n async watch(callback) {\n await startWatch();\n context.watchListeners.push(callback);\n return async () => {\n context.watchListeners = context.watchListeners.filter(\n (listener) => listener !== callback\n );\n if (context.watchListeners.length === 0) {\n await stopWatch();\n }\n };\n },\n async unwatch() {\n context.watchListeners = [];\n await stopWatch();\n },\n // Mount\n mount(base, driver) {\n base = normalizeBaseKey(base);\n if (base && context.mounts[base]) {\n throw new Error(`already mounted at ${base}`);\n }\n if (base) {\n context.mountpoints.push(base);\n context.mountpoints.sort((a, b) => b.length - a.length);\n }\n context.mounts[base] = driver;\n if (context.watching) {\n Promise.resolve(watch(driver, onChange, base)).then((unwatcher) => {\n context.unwatch[base] = unwatcher;\n }).catch(console.error);\n }\n return storage;\n },\n async unmount(base, _dispose = true) {\n base = normalizeBaseKey(base);\n if (!base || !context.mounts[base]) {\n return;\n }\n if (context.watching && base in context.unwatch) {\n context.unwatch[base]();\n delete context.unwatch[base];\n }\n if (_dispose) {\n await dispose(context.mounts[base]);\n }\n context.mountpoints = context.mountpoints.filter((key) => key !== base);\n delete context.mounts[base];\n },\n getMount(key = \"\") {\n key = normalizeKey(key) + \":\";\n const m = getMount(key);\n return {\n driver: m.driver,\n base: m.base\n };\n },\n getMounts(base = \"\", opts = {}) {\n base = normalizeKey(base);\n const mounts = getMounts(base, opts.parents);\n return mounts.map((m) => ({\n driver: m.driver,\n base: m.mountpoint\n }));\n },\n // Aliases\n keys: (base, opts = {}) => storage.getKeys(base, opts),\n get: (key, opts = {}) => storage.getItem(key, opts),\n set: (key, value, opts = {}) => storage.setItem(key, value, opts),\n has: (key, opts = {}) => storage.hasItem(key, opts),\n del: (key, opts = {}) => storage.removeItem(key, opts),\n remove: (key, opts = {}) => storage.removeItem(key, opts)\n };\n return storage;\n}\nasync function snapshot(storage, base) {\n base = normalizeBaseKey(base);\n const keys = await storage.getKeys(base);\n const snapshot2 = {};\n await Promise.all(\n keys.map(async (key) => {\n snapshot2[key.slice(base.length)] = await storage.getItem(key);\n })\n );\n return snapshot2;\n}\nasync function restoreSnapshot(driver, snapshot2, base = \"\") {\n base = normalizeBaseKey(base);\n await Promise.all(\n Object.entries(snapshot2).map((e) => driver.setItem(base + e[0], e[1]))\n );\n}\nfunction watch(driver, onChange, base) {\n return driver.watch ? driver.watch((event, key) => onChange(event, base + key)) : () => {\n };\n}\nasync function dispose(driver) {\n if (typeof driver.dispose === \"function\") {\n await asyncCall(driver.dispose);\n }\n}\n\nconst builtinDrivers = {\n azureAppConfiguration: \"unstorage/drivers/azure-app-configuration\",\n azureCosmos: \"unstorage/drivers/azure-cosmos\",\n azureKeyVault: \"unstorage/drivers/azure-key-vault\",\n azureStorageBlob: \"unstorage/drivers/azure-storage-blob\",\n azureStorageTable: \"unstorage/drivers/azure-storage-table\",\n cloudflareKVBinding: \"unstorage/drivers/cloudflare-kv-binding\",\n cloudflareKVHTTP: \"unstorage/drivers/cloudflare-kv-http\",\n cloudflareR2Binding: \"unstorage/drivers/cloudflare-r2-binding\",\n fs: \"unstorage/drivers/fs\",\n fsLite: \"unstorage/drivers/fs-lite\",\n github: \"unstorage/drivers/github\",\n http: \"unstorage/drivers/http\",\n indexedb: \"unstorage/drivers/indexedb\",\n localStorage: \"unstorage/drivers/localstorage\",\n lruCache: \"unstorage/drivers/lru-cache\",\n memory: \"unstorage/drivers/memory\",\n mongodb: \"unstorage/drivers/mongodb\",\n netlifyBlobs: \"unstorage/drivers/netlify-blobs\",\n null: \"unstorage/drivers/null\",\n overlay: \"unstorage/drivers/overlay\",\n planetscale: \"unstorage/drivers/planetscale\",\n redis: \"unstorage/drivers/redis\",\n sessionStorage: \"unstorage/drivers/session-storage\",\n vercelKV: \"unstorage/drivers/vercel-kv\",\n /** @deprecated */\n \"cloudflare-kv-binding\": \"unstorage/drivers/cloudflare-kv-binding\",\n /** @deprecated */\n \"cloudflare-kv-http\": \"unstorage/drivers/cloudflare-kv-http\"\n};\n\nexport { builtinDrivers, createStorage, defineDriver, joinKeys, normalizeBaseKey, normalizeKey, restoreSnapshot, snapshot };\n","function promisifyRequest(request) {\n return new Promise((resolve, reject) => {\n // @ts-ignore - file size hacks\n request.oncomplete = request.onsuccess = () => resolve(request.result);\n // @ts-ignore - file size hacks\n request.onabort = request.onerror = () => reject(request.error);\n });\n}\nfunction createStore(dbName, storeName) {\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n const dbp = promisifyRequest(request);\n return (txMode, callback) => dbp.then((db) => callback(db.transaction(storeName, txMode).objectStore(storeName)));\n}\nlet defaultGetStoreFunc;\nfunction defaultGetStore() {\n if (!defaultGetStoreFunc) {\n defaultGetStoreFunc = createStore('keyval-store', 'keyval');\n }\n return defaultGetStoreFunc;\n}\n/**\n * Get a value by its key.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction get(key, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => promisifyRequest(store.get(key)));\n}\n/**\n * Set a value with a key.\n *\n * @param key\n * @param value\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction set(key, value, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.put(value, key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Set multiple values at once. This is faster than calling set() multiple times.\n * It's also atomic – if one of the pairs can't be added, none will be added.\n *\n * @param entries Array of entries, where each entry is an array of `[key, value]`.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction setMany(entries, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n entries.forEach((entry) => store.put(entry[1], entry[0]));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Get multiple values by their keys\n *\n * @param keys\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction getMany(keys, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => Promise.all(keys.map((key) => promisifyRequest(store.get(key)))));\n}\n/**\n * Update a value. This lets you see the old value and update it as an atomic operation.\n *\n * @param key\n * @param updater A callback that takes the old value and returns a new value.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction update(key, updater, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => \n // Need to create the promise manually.\n // If I try to chain promises, the transaction closes in browsers\n // that use a promise polyfill (IE10/11).\n new Promise((resolve, reject) => {\n store.get(key).onsuccess = function () {\n try {\n store.put(updater(this.result), key);\n resolve(promisifyRequest(store.transaction));\n }\n catch (err) {\n reject(err);\n }\n };\n }));\n}\n/**\n * Delete a particular key from the store.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction del(key, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.delete(key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Delete multiple keys at once.\n *\n * @param keys List of keys to delete.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction delMany(keys, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n keys.forEach((key) => store.delete(key));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Clear all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction clear(customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.clear();\n return promisifyRequest(store.transaction);\n });\n}\nfunction eachCursor(store, callback) {\n store.openCursor().onsuccess = function () {\n if (!this.result)\n return;\n callback(this.result);\n this.result.continue();\n };\n return promisifyRequest(store.transaction);\n}\n/**\n * Get all keys in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction keys(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n if (store.getAllKeys) {\n return promisifyRequest(store.getAllKeys());\n }\n const items = [];\n return eachCursor(store, (cursor) => items.push(cursor.key)).then(() => items);\n });\n}\n/**\n * Get all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction values(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n if (store.getAll) {\n return promisifyRequest(store.getAll());\n }\n const items = [];\n return eachCursor(store, (cursor) => items.push(cursor.value)).then(() => items);\n });\n}\n/**\n * Get all entries in the store. Each entry is an array of `[key, value]`.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction entries(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n // (although, hopefully we'll get a simpler path some day)\n if (store.getAll && store.getAllKeys) {\n return Promise.all([\n promisifyRequest(store.getAllKeys()),\n promisifyRequest(store.getAll()),\n ]).then(([keys, values]) => keys.map((key, i) => [key, values[i]]));\n }\n const items = [];\n return customStore('readonly', (store) => eachCursor(store, (cursor) => items.push([cursor.key, cursor.value])).then(() => items));\n });\n}\n\nexport { clear, createStore, del, delMany, entries, get, getMany, keys, promisifyRequest, set, setMany, update, values };\n",null,null,null,"import { EventEmitter } from \"events\";\n\nexport abstract class IEvents {\n public abstract events: EventEmitter;\n\n // events\n public abstract on(event: string, listener: any): void;\n public abstract once(event: string, listener: any): void;\n public abstract off(event: string, listener: any): void;\n public abstract removeListener(event: string, listener: any): void;\n}\n",null,null,"const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n () => selector(api.getState()),\n () => selector(api.getInitialState())\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\n\nexport { create, useStore };\n","import * as React from \"react\";\nfunction CheckIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m4.5 12.75 6 6 9-13.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CheckIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction Square2StackIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M16.5 8.25V6a2.25 2.25 0 0 0-2.25-2.25H6A2.25 2.25 0 0 0 3.75 6v8.25A2.25 2.25 0 0 0 6 16.5h2.25m8.25-8.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-7.5A2.25 2.25 0 0 1 8.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 0 0-2.25 2.25v6\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(Square2StackIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction GlobeAltIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 21a9.004 9.004 0 0 0 8.716-6.747M12 21a9.004 9.004 0 0 1-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 0 1 7.843 4.582M12 3a8.997 8.997 0 0 0-7.843 4.582m15.686 0A11.953 11.953 0 0 1 12 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0 1 21 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0 1 12 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 0 1 3 12c0-1.605.42-3.113 1.157-4.418\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(GlobeAltIcon);\nexport default ForwardRef;","import{createPublicClient as r,http as p}from\"viem\";import{b as t}from\"./internal-context-mSHyF0Gq.mjs\";const e=(e,i,s,c)=>{let a=Number(e),n=i.find((r=>r.id===a));if(!n)throw new t(`Unsupported chainId ${e}`,4901);return r({transport:p(l(n,s,c.appId)),chain:n})},l=(r,p,e)=>{let l,i=r.id,s=Number(r.id);if(r.rpcUrls.privyWalletOverride&&r.rpcUrls.privyWalletOverride.http[0])l=r.rpcUrls.privyWalletOverride.http[0];else if(p.rpcUrls&&p.rpcUrls[s])l=p.rpcUrls[s];else if(r.rpcUrls.privy?.http[0]){let p=new URL(r.rpcUrls.privy.http[0]);p.searchParams.append(\"privyAppId\",e),l=p.toString()}else l=r.rpcUrls.public?.http[0]?r.rpcUrls.public.http[0]:r.rpcUrls.default?.http[0];if(!l)throw new t(`No RPC url found for ${i}`);return l};export{l as a,e as g};\n","const isIterable = (obj) => Symbol.iterator in obj;\nconst hasIterableEntries = (value) => (\n // HACK: avoid checking entries type\n \"entries\" in value\n);\nconst compareEntries = (valueA, valueB) => {\n const mapA = valueA instanceof Map ? valueA : new Map(valueA.entries());\n const mapB = valueB instanceof Map ? valueB : new Map(valueB.entries());\n if (mapA.size !== mapB.size) {\n return false;\n }\n for (const [key, value] of mapA) {\n if (!Object.is(value, mapB.get(key))) {\n return false;\n }\n }\n return true;\n};\nconst compareIterables = (valueA, valueB) => {\n const iteratorA = valueA[Symbol.iterator]();\n const iteratorB = valueB[Symbol.iterator]();\n let nextA = iteratorA.next();\n let nextB = iteratorB.next();\n while (!nextA.done && !nextB.done) {\n if (!Object.is(nextA.value, nextB.value)) {\n return false;\n }\n nextA = iteratorA.next();\n nextB = iteratorB.next();\n }\n return !!nextA.done && !!nextB.done;\n};\nfunction shallow(valueA, valueB) {\n if (Object.is(valueA, valueB)) {\n return true;\n }\n if (typeof valueA !== \"object\" || valueA === null || typeof valueB !== \"object\" || valueB === null) {\n return false;\n }\n if (!isIterable(valueA) || !isIterable(valueB)) {\n return compareEntries(\n { entries: () => Object.entries(valueA) },\n { entries: () => Object.entries(valueB) }\n );\n }\n if (hasIterableEntries(valueA) && hasIterableEntries(valueB)) {\n return compareEntries(valueA, valueB);\n }\n return compareIterables(valueA, valueB);\n}\n\nexport { shallow };\n","import React from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\nimport { createStore } from 'zustand/vanilla';\n\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nconst identity = (arg) => arg;\nfunction useStoreWithEqualityFn(api, selector = identity, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getInitialState,\n selector,\n equalityFn\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createWithEqualityFnImpl = (createState, defaultEqualityFn) => {\n const api = createStore(createState);\n const useBoundStoreWithEqualityFn = (selector, equalityFn = defaultEqualityFn) => useStoreWithEqualityFn(api, selector, equalityFn);\n Object.assign(useBoundStoreWithEqualityFn, api);\n return useBoundStoreWithEqualityFn;\n};\nconst createWithEqualityFn = (createState, defaultEqualityFn) => createState ? createWithEqualityFnImpl(createState, defaultEqualityFn) : createWithEqualityFnImpl;\n\nexport { createWithEqualityFn, useStoreWithEqualityFn };\n","import e,{useRef as t,useState as i,useMemo as r,useContext as a,createContext as n,useEffect as o,useCallback as l}from\"react\";import{jsx as s,jsxs as c,Fragment as d}from\"react/jsx-runtime\";import{a as h,af as p,ag as u,u as f,q as w,w as g,x as m,r as v,M as y,s as b,Y as C,X as x,ah as A,Q as k,ai as I,aj as T,N as S,T as E,U as M,ak as N,E as L}from\"./useWallets-CIsjbJl7.mjs\";import{W as P,i as W,f as F,w as _,U as R,u as O,C as D,P as z,d as U}from\"./prepareFundingModalData-Dv7ze5Ty.mjs\";import{isMobile as B}from\"react-device-detect\";import{styled as $,css as V,keyframes as j}from\"styled-components\";import{b as H,P as Z,f as G,j as q,a as X,n as J,u as Y,g as Q}from\"./internal-context-mSHyF0Gq.mjs\";import K from\"@heroicons/react/24/outline/ArrowLeftIcon\";import ee from\"@heroicons/react/24/outline/ArrowRightIcon\";import te from\"@heroicons/react/24/outline/QuestionMarkCircleIcon\";import ie from\"@heroicons/react/24/outline/XMarkIcon\";import{isHex as re,getAddress as ae,formatEther as ne,createPublicClient as oe,http as le}from\"viem\";import{EthereumProvider as se,OPTIONAL_EVENTS as ce,OPTIONAL_METHODS as de}from\"@walletconnect/ethereum-provider\";import{create as he}from\"zustand\";import{getAddress as pe,toHex as ue}from\"viem/utils\";import fe from\"@heroicons/react/24/outline/CheckIcon\";import we from\"@heroicons/react/24/outline/Square2StackIcon\";import ge from\"qrcode\";import me from\"@heroicons/react/24/outline/GlobeAltIcon\";import{a as ve}from\"./getPublicClient-wHgCncHx.mjs\";import{shallow as ye}from\"zustand/shallow\";import{createWithEqualityFn as be}from\"zustand/traditional\";const Ce=e=>e.isApexWallet?\"Apex Wallet\":e.isAvalanche?\"Core Wallet\":e.isBackpack?\"Backpack\":e.isBifrost?\"Bifrost Wallet\":e.isBitKeep?\"BitKeep\":e.isBitski?\"Bitski\":e.isBlockWallet?\"BlockWallet\":e.isBraveWallet?\"Brave Wallet\":e.isClover?\"Clover\":e.isCoin98?\"Coin98 Wallet\":e.isCoinbaseWallet?\"Coinbase Wallet\":e.isDawn?\"Dawn Wallet\":e.isDefiant?\"Defiant\":e.isDesig?\"Desig Wallet\":e.isEnkrypt?\"Enkrypt\":e.isExodus?\"Exodus\":e.isFordefi?\"Fordefi\":e.isFrame?\"Frame\":e.isFrontier?\"Frontier Wallet\":e.isGamestop?\"GameStop Wallet\":e.isHaqqWallet?\"HAQQ Wallet\":e.isHyperPay?\"HyperPay Wallet\":e.isImToken?\"ImToken\":e.isHaloWallet?\"Halo Wallet\":e.isKuCoinWallet?\"KuCoin Wallet\":e.isMathWallet?\"MathWallet\":e.isNovaWallet?\"Nova Wallet\":e.isOkxWallet||e.isOKExWallet?\"OKX Wallet\":e.isOneInchIOSWallet||e.isOneInchAndroidWallet?\"1inch Wallet\":e.isOneKey?\"OneKey Wallet\":e.isOpera?\"Opera\":e.isPhantom||\"isPhantom\"in e?\"Phantom\":e.isPortal?\"Ripio Portal\":e.isRabby?\"Rabby Wallet\":e.isRainbow?\"Rainbow\":e.isSafePal?\"SafePal Wallet\":e.isStatus?\"Status\":e.isSubWallet?\"SubWallet\":e.isTalisman?\"Talisman\":e.isTally||e.isTaho?\"Taho\":e.isTokenPocket?\"TokenPocket\":e.isTokenary?\"Tokenary\":e.isTrust||e.isTrustWallet?\"Trust Wallet\":e.isTTWallet?\"TTWallet\":e.isXDEFI?\"XDEFI Wallet\":e.isZeal?\"Zeal\":e.isZerion?\"Zerion\":e.isMetaMask?\"MetaMask\":void 0,xe=(e,t)=>{if(!e.isMetaMask)return!1;if(e.isMetaMask&&!t)return!0;if(e.isBraveWallet&&!e._events&&!e._state||\"MetaMask\"!==Ce(e))return!1;if(e.providers)for(let t of e.providers)if(!xe(t))return!1;return!0},Ae=()=>{let e=window;if(!e.ethereum)return!1;if(e.ethereum.isCoinbaseWallet)return!0;if(e.ethereum.providers)for(let t of e.ethereum.providers)if(t&&t.isCoinbaseWallet)return!0;return!1},ke=(e,t)=>{let i=[],r=[];for(let[a,n]of e.entries())a<t?i.push(n):r.push(n);return[i,r]},Ie=e=>!!String(e).toLowerCase().match(/^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/),Te=(e,t=3,i=4,r=\"ethereum\")=>{if(!e)return\"\";let a=\"ethereum\"===r?2:0;return t+i+a+3>=e.length?e:`${e.slice(0,a+t)}...${e.slice(e.length-i,e.length)}`},Se=(e,t=3,i=4)=>Te(e,t,i,\"solana\"),Ee=e=>new Promise((t=>setTimeout(t,e)));const Me=(e,t={})=>{let i=t.delayMs||150,r=t.maxAttempts||270;return new Promise((async(a,n)=>{let o=!1,l=0;for(;!o&&l<r;){if(t.abortSignal?.aborted)return;e().then((e=>{o=!0,a(e)}),((...e)=>{o=!0,n(...e)})),l+=1,await Ee(i)}o||n(Error(\"Exceeded max attempts before resolving function\"))}))},Ne=(e,t,i={},r={})=>{let a=new URL(t,e);for(let[e,t]of Object.entries(i))void 0!==t&&a.searchParams.set(e,t);let n=Object.entries(r);if(n.length>0){let e=new URLSearchParams;for(let[t,i]of n)e.append(t,i);a.hash=e.toString()}return a.href},Le=e=>e.replace(/([\\u2700-\\u27BF]|[\\uE000-\\uF8FF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDFFF]|[\\u2011-\\u26FF]|\\uD83E[\\uDD10-\\uDDFF])/g,\"\"),Pe=e=>\"string\"==typeof e?e:\"0x\"+e.toString(16);async function We({store:e,walletList:t,externalWalletConfig:i,walletChainType:r,timeout:a=3e3}){let n=!1,o=window;return new Promise((l=>{function s(){if(n)return;n=!0,window.removeEventListener(\"ethereum#initialized\",s);let a=e.getProviders();console.debug(\"Detected injected providers:\",a.map((e=>e.info)));let o=[];for(let e of a)t.includes(\"coinbase_wallet\")&&\"com.coinbase.wallet\"===e.info.rdns||\"solana-only\"===r&&\"app.phantom\"===e.info.rdns||o.push({type:e.info.name.toLowerCase().replace(/\\s/g,\"_\"),eip6963InjectedProvider:e});if(\"solana-only\"!==r)for(let e of function(){let e=window,t=e.ethereum;if(!t)return[];let i=[];if(t.providers?.length)for(let e of t.providers)e&&i.push(e);return i.push(e.ethereum),i}()){let t=Ce(e);if(!a.some((e=>e.info.name===t))){if(xe(e,!0)&&!o.find((e=>\"metamask\"===e.type))){o.push({type:\"metamask\",legacyInjectedProvider:e});continue}if(\"Phantom\"===t&&!o.find((e=>\"phantom\"===e.type))){o.push({type:\"phantom\",legacyInjectedProvider:e});continue}if(\"Coinbase Wallet\"===t&&!o.find((e=>\"coinbase_wallet\"===e.type&&\"smartWalletOnly\"!==i.coinbaseWallet?.connectionOptions))){o.push({type:\"coinbase_wallet\",legacyInjectedProvider:e});continue}o.find((e=>\"unknown_browser_extension\"===e.type))||o.push({type:\"unknown_browser_extension\",legacyInjectedProvider:e})}}l(o)}o.ethereum?s():(window.addEventListener(\"ethereum#initialized\",s,{once:!0}),setTimeout((()=>{s()}),a))}))}function Fe(e){return`eip155:${String(Number(e))}`}const _e=(e,t,i,r)=>{let a=Number(e),n=t.find((e=>e.id===a));if(!n)throw new H(`Unsupported chainId ${e}`,4901);return ve(n,i,r)},Re=e=>{let t={name:\"string\",version:\"string\",chainId:\"uint256\",verifyingContract:\"address\",salt:\"bytes32\"},i=e.types.EIP712Domain??Object.entries(e.domain).map((([e,i])=>{if(null!=i&&\"string\"==typeof e&&e in t)return{name:e,type:t[e]}})).filter((e=>void 0!==e));return{...e,types:{...e.types,EIP712Domain:i}}};const Oe=[\"c57ca95b47569778a828d19178114f4db188b89b763c899ba0be274e97267d96\",\"4622a2b2d6af1c9844944291e5e7351a6aa24cd7b23099efac1b2fd875da31a0\",\"225affb176778569276e484e1b92637ad061b01e13a048b35a9d280c3b58970f\",\"1ae92b26df02f0abca6304df07debccd18262fdf5fe82daa81593582dac9a369\",\"c03dfee351b6fcc421b4494ea33b9d4b92a984f87aa76d1663bb28705e95034a\",\"ecc4036f814562b41a5268adc86270fba1365471402006302e70169465b7ac18\",\"bc949c5d968ae81310268bf9193f9c9fb7bb4e1283e1284af8f2bd4992535fd6\",\"74f8092562bd79675e276d8b2062a83601a4106d30202f2d509195e30e19673d\",\"afbd95522f4041c71dd4f1a065f971fd32372865b416f95a0b1db759ae33f2a7\",\"f2436c67184f158d1beda5df53298ee84abfc367581e4505134b5bcf5f46697d\",\"84b43e8ddfcd18e5fcb5d21e7277733f9cccef76f7d92c836d0e481db0c70c04\",\"0b415a746fb9ee99cce155c2ceca0c6f6061b1dbca2d722b3ba16381d0562150\",\"38f5d18bd8522c244bdd70cb4a68e0e718865155811c043f052fb9f1c51de662\",\"9414d5a85c8f4eabc1b5b15ebe0cd399e1a2a9d35643ab0ad22a6e4a32f596f0\",\"c286eebc742a537cd1d6818363e9dc53b21759a1e8e5d9b263d0c03ec7703576\",\"8a0ee50d1f22f6651afcae7eb4253e52a3310b90af5daef78a8c4929a9bb99d4\",\"e9ff15be73584489ca4a66f64d32c4537711797e30b6660dbcb71ea72a42b1f4\",\"f5b4eeb6015d66be3f5940a895cbaa49ef3439e518cd771270e6b553b48f31d2\",\"138f51c8d00ac7b9ac9d8dc75344d096a7dfe370a568aa167eabc0a21830ed98\",\"47bb07617af518642f3413a201ec5859faa63acb1dd175ca95085d35d38afb83\",\"7674bb4e353bf52886768a3ddc2a4562ce2f4191c80831291218ebd90f5f5e26\",\"8308656f4548bb81b3508afe355cfbb7f0cb6253d1cc7f998080601f838ecee3\",\"031f0187049b7f96c6f039d1c9c8138ff7a17fd75d38b34350c7182232cc29aa\",\"2c81da3add65899baeac53758a07e652eea46dbb5195b8074772c62a77bbf568\",\"dd43441a6368ec9046540c46c5fdc58f79926d17ce61a176444568ca7c970dcd\",\"2a3c89040ac3b723a1972a33a125b1db11e258a6975d3a61252cd64e6ea5ea01\",\"b956da9052132e3dabdcd78feb596d5194c99b7345d8c4bd7a47cabdcb69a25f\",\"0e4915107da5b3408b38e248f7a710f4529d54cd30e9d12ff0eb886d45c18e92\",\"719bd888109f5e8dd23419b20e749900ce4d2fc6858cf588395f19c82fd036b3\",\"942d0e22a7e6b520b0a03abcafc4dbe156a1fc151876e3c4a842f914277278ef\",\"8ff6eccefefa7506339201bc33346f92a43118d6ff7d6e71d499d8187a1c56a2\",\"07f99a5d9849bb049d74830012b286f8b238e72b0337933ef22b84947409db80\",\"8821748c25de9dbc4f72a691b25a6ddad9d7df12fa23333fd9c8b5fdc14cc819\",\"bdc9433ffdaee55d31737d83b931caa1f17e30666f5b8e03eea794bac960eb4a\",\"cbe13eb482c76f1fa401ff4c84d9acd0b8bc9af311ca0620a0b192fb28359b4e\",\"94f785c0c8fb8c4f38cd9cd704416430bcaa2137f27e1468782d624bcd155a43\",\"2cca8c1b0bea04ba37dee4017991d348cdb7b826804ab2bd31073254f345b715\",\"14e5d957c6eb62d3ee8fc6239703ac2d537d7e3552154836ca0beef775f630bc\",\"576c90ceaea34f29ff0104837cf2b2e23d201be43be1433feeb18d375430e1fd\",\"49bb9d698dbdf2c3d4627d66f99dd9fe90bba1eec84b143f56c64a51473c60bd\",\"19418ecfd44963883e4d6abca1adeb2036f3b5ffb9bee0ec61f267a9641f878b\",\"5b8e33346dfb2a532748c247876db8d596734da8977905a27b947ba1e2cf465b\",\"d23de318f0f56038c5edb730a083216ff0cce00c1514e619ab32231cc9ec484b\",\"50df7da345f84e5a79aaf617df5167335a4b6751626df2e8a38f07029b3dde7b\",\"9751385960bca290c13b443155288f892f62ee920337eda8c5a8874135daaea8\",\"6464873279d46030c0b6b005b33da6be5ed57a752be3ef1f857dc10eaf8028aa\",\"41f20106359ff63cf732adf1f7dc1a157176c9b02fd266b50da6dcc1e9b86071\",\"14e7176536cb3706e221daaa3cfd7b88b7da8c7dfb64d1d241044164802c6bdd\",\"a0e04f1086aac204d4ebdd5f985c12ed226cd0006323fd8143715f9324da58d1\",\"971e689d0a5be527bac79629b4ee9b925e82208e5168b733496a09c0faed0709\",\"18388be9ac2d02726dbac9777c96efaac06d744b2f6d580fccdd4127a6d01fd1\",\"15c8b91ade1a4e58f3ce4e7a0dd7f42b47db0c8df7e0d84f63eb39bcb96c4e0f\",\"541d5dcd4ede02f3afaf75bf8e3e4c4f1fb09edb5fa6c4377ebf31c2785d9adf\"];function De(e){return{name:e.metadata?.shortName||e.name||\"\",universalLink:e.mobile.universal,deepLink:e.mobile.native}}let ze=\"WALLETCONNECT_DEEPLINK_CHOICE\";function Ue(e){return e.startsWith(\"http://\")||e.startsWith(\"https://\")}function Be(e,t){if(Ue(e))return $e(e,t);let i=e;return i.includes(\"://\")||(i=e.replaceAll(\"/\",\"\").replaceAll(\":\",\"\"),i=`${i}://`),i.endsWith(\"/\")||(i=`${i}/`),{redirect:`${i}wc?uri=${encodeURIComponent(t)}`,href:i}}function $e(e,t){if(!Ue(e))return Be(e,t);let i=e;return i.endsWith(\"/\")||(i=`${i}/`),{redirect:`${i}wc?uri=${encodeURIComponent(t)}`,href:i}}function Ve(e,t){window.open(e,t,\"noreferrer noopener\")}class je{execute(e){return null===this.promise&&(this.promise=(async()=>{try{return await this.fn(e)}finally{this.promise=null}})()),this.promise}constructor(e){this.promise=null,this.fn=e}}const He=({address:e,chainId:t,nonce:i})=>`${window.location.host} wants you to sign in with your Ethereum account:\\n${e}\\n\\nBy signing, you are proving you own this wallet and logging in. This does not initiate a transaction or cost any fees.\\n\\nURI: ${window.location.origin}\\nVersion: 1\\nChain ID: ${t}\\nNonce: ${i}\\nIssued At: ${(new Date).toISOString()}\\nResources:\\n- https://privy.io`;class Ze{get meta(){return{connectorType:this.wallet.connectorType,walletClientType:this.wallet.walletClientType,chainId:this.wallet.chainId,address:this.wallet.address,disableSignup:this._meta.disableSignup}}async authenticate(){if(!this.client)throw new Z(\"SiweFlow has no client instance\");try{let{message:e,signature:t}=await this.sign();return await this.client.authenticateWithSiweInternal({message:e,signature:t,chainId:this.wallet.chainId,walletClientType:this.wallet.walletClientType,connectorType:this.wallet.connectorType,mode:this.meta.disableSignup?\"no-signup\":\"login-or-sign-up\"})}catch(e){throw G(e)}}async link(){if(!this.client)throw new Z(\"SiweFlow has no client instance\");try{let{message:e,signature:t}=await this.sign();return await this.client.linkWithSiweInternal({message:e,signature:t,chainId:this.wallet.chainId,walletClientType:this.wallet.walletClientType,connectorType:this.wallet.connectorType})}catch(e){throw G(e)}}async sign(){if(!this.client)throw new Z(\"SiweFlow has no client instance\");if(await this.buildMessage(),!this.preparedMessage)throw new Z(\"Could not prepare SIWE message\");let e=await this.wallet.sign(this.preparedMessage);return{message:this.preparedMessage,signature:e}}async _getNonceOnce(){if(!this.client)throw new Z(\"SiweFlow has no client instance\");return await this.client.generateSiweNonce({address:this.wallet.address,captchaToken:this.captchaToken})}async buildMessage(){if(!this.client)throw new Z(\"SiweFlow has no client instance\");let e=this.wallet.address,t=this.wallet.chainId.replace(\"eip155:\",\"\");return this.nonce||(this.nonce=await this.getNonceOnce.execute()),this.preparedMessage=He({address:e,chainId:t,nonce:this.nonce}),this.preparedMessage}constructor(e,t,i,r=!1){this._meta={disableSignup:!1},this.getNonceOnce=new je(this._getNonceOnce.bind(this)),this.wallet=e,this.captchaToken=i,this.client=t,this._meta.disableSignup=r}}class Ge{get meta(){return{connectorType:this.wallet.connectorType,walletClientType:this.wallet.walletClientType,disableSignup:this._meta.disableSignup}}async authenticate(){if(!this.client)throw new Z(\"SiwsFlow has no client instance\");try{let{message:e,signature:t}=await this.sign();return await this.client.authenticateWithSiwsInternal({message:e,signature:t,walletClientType:this.wallet.walletClientType,connectorType:this.wallet.connectorType,mode:this.meta.disableSignup?\"no-signup\":\"login-or-sign-up\"})}catch(e){throw G(e)}}async link(){if(!this.client)throw new Z(\"SiwsFlow has no client instance\");try{let{message:e,signature:t}=await this.sign();return await this.client.linkWithSiwsInternal({message:e,signature:t,walletClientType:this.wallet.walletClientType,connectorType:this.wallet.connectorType})}catch(e){throw G(e)}}async sign(){if(!this.client)throw new Z(\"SiwsFlow has no client instance\");if(await this.buildMessage(),!this.preparedMessage)throw new Z(\"Could not prepare SIWS message\");if(!this.wallet.signMessage)throw new Z(\"Wallet does not support signMessage\");let e=await this.wallet.signMessage(Buffer.from(this.preparedMessage));return{message:this.preparedMessage,signature:Buffer.from(e).toString(\"base64\")}}async _getNonceOnce(){if(!this.client)throw new Z(\"SiwsFlow has no client instance\");return await this.client.generateSiwsNonce({address:this.wallet.address,captchaToken:this.captchaToken})}async buildMessage(){if(!this.client)throw new Z(\"SiwsFlow has no client instance\");let e=this.wallet.address;return this.nonce||(this.nonce=await this.getNonceOnce.execute()),this.preparedMessage=(({address:e,nonce:t})=>`${window.location.host} wants you to sign in with your Solana account:\\n${e}\\n\\nYou are proving you own ${e}.\\n\\nURI: ${window.location.origin}\\nVersion: 1\\nChain ID: mainnet\\nNonce: ${t}\\nIssued At: ${(new Date).toISOString()}\\nResources:\\n- https://privy.io`)({address:e,nonce:this.nonce}),this.preparedMessage}constructor(e,t,i,r=!1){this._meta={disableSignup:!1},this.getNonceOnce=new je(this._getNonceOnce.bind(this)),this.wallet=e,this.captchaToken=i,this.client=t,this._meta.disableSignup=r}}const qe=/*#__PURE__*/n({siteKey:\"\",enabled:!1,appId:void 0,token:void 0,error:void 0,status:\"disabled\",setToken:J,setError:J,setExecuting:J,waitForResult:()=>Promise.resolve(\"\"),ref:{current:null},remove:J,reset:J,execute:J});class Xe extends q{constructor(e,t,i){super(e||\"Captcha failed\"),this.type=\"Captcha\",t instanceof Error&&(this.cause=t),this.privyErrorCode=i}}const Je=({children:e,id:a,captchaSiteKey:n,captchaEnabled:o})=>{let l=t(null),[c,d]=i(),[h,p]=i(),[u,f]=i(!1),w=r((()=>o?u||c||h?!u||c||h?c&&!h?{status:\"success\",token:c}:h?{status:\"error\",error:h}:{status:\"ready\"}:{status:\"loading\"}:{status:\"ready\"}:{status:\"disabled\"}),[o,c,h,u]);/*#__PURE__*/return s(qe.Provider,{value:{...w,ref:l,enabled:o,siteKey:n,appId:a,setToken:d,setError:p,setExecuting:f,remove(){o&&(l.current?.remove(),f(!1),p(void 0),d(void 0))},reset(){o&&(l.current?.reset(),f(!1),p(void 0),d(void 0))},execute(){o&&(f(!0),l.current?.execute())},async waitForResult(){if(!o)return\"\";try{return await function(e,{interval:t=100,timeout:i=5e3}={}){return new Promise(((r,a)=>{let n,o=0,l=()=>{o>=i?a(\"Max attempts reached without result\"):(n=e(),o+=t,null==n?setTimeout(l,t):r(n))};l()}))}((()=>l.current?.getResponse()),{interval:200,timeout:2e4})}catch(e){throw new Xe(\"Captcha failed\",null,X.CAPTCHA_TIMEOUT)}}},children:e})},Ye=()=>a(qe);function Qe(e){return\"ethereum\"===e.type}function Ke(e,t){if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++){let r=e[i],a=t[i];if(r?.address!==a?.address||r&&a&&Qe(r)&&Qe(a)&&r?.chainId!==a?.chainId||r?.connectorType!==a?.connectorType||r?.connectedAt!==a?.connectedAt||r?.walletClientType!==a?.walletClientType||r?.isConnected!==a?.isConnected||r?.linked!==a?.linked)return!1}return!0}const et=(e,t)=>e.rpcTimeouts&&e.rpcTimeouts[t]||h;function tt(e){return\"ethereum\"===e.chainType}class it extends P{buildConnectedWallet(e,t,i,r){let a=async()=>!!this.wallets.find((t=>pe(t.address)===pe(e)));return{type:\"ethereum\",address:pe(e),chainId:t,meta:i,imported:r,switchChain:async i=>{let r,n;if(!a)throw new H(\"Wallet is not currently connected.\");let o=this.wallets.find((t=>pe(t.address)===pe(e)))?.chainId;if(!o)throw new H(\"Unable to determine current chainId.\");if(\"number\"==typeof i?(r=`0x${i.toString(16)}`,n=i):(r=i,n=Number(i)),o===Fe(r))return;let l=this.chains.find((e=>e.id===n));if(!l)throw new H(`Unsupported chainId: ${i}`);let s=async()=>{await this.proxyProvider.request({method:\"wallet_switchEthereumChain\",params:[{chainId:r}]})};try{return await s()}catch(e){if(((e,t)=>{switch(t){case\"coinbase_wallet\":return e.message.includes(\"addEthereumChain\");case\"rabby_wallet\":return e.message.includes(\"Unrecognized chain ID\");default:return 4902===e.code||e.message?.includes(\"4902\")}})(e,this.walletClientType))return\"rabby_wallet\"===this.walletClientType&&await Ee(300),await this.proxyProvider.request({method:\"wallet_addEthereumChain\",params:[{chainId:r,chainName:l.name,nativeCurrency:l.nativeCurrency,rpcUrls:[l.rpcUrls.default?.http[0]??\"\"],blockExplorerUrls:[l.blockExplorers?.default.url??\"\"]}]}),s();if(\"rainbow\"===this.walletClientType&&e.message?.includes(\"wallet_switchEthereumChain\"))throw new H(`Rainbow does not support the chainId ${t}`);throw e}},connectedAt:Date.now(),walletClientType:this.walletClientType,connectorType:this.connectorType,isConnected:a,getEthereumProvider:async()=>{if(!await a())throw new H(\"Wallet is not currently connected.\");return this.proxyProvider},sign:async e=>{if(!await a())throw new H(\"Wallet is not currently connected.\");return await this.sign(e)},disconnect:()=>{this.disconnect()}}}async syncAccounts(e){let t,i=e;try{if(void 0===i){let e=await Me((()=>this.proxyProvider.request({method:\"eth_accounts\"})),{maxAttempts:10,delayMs:500});console.debug(`eth_accounts for ${this.walletClientType}:`,e),Array.isArray(e)&&(i=e)}}catch(e){console.debug(\"Wallet did not respond to eth_accounts. Defaulting to prefetched accounts.\",e)}if(!i||!Array.isArray(i)||i.length<=0||!i[0])return;let r=i[0],a=pe(r),n=[];if(\"privy\"===this.walletClientType){let e=W.get(p(a));this.chains.find((t=>t.id===Number(e)))||(W.del(p(a)),e=null),t=e||`0x${this.defaultChain.id.toString(16)}`;try{await this.proxyProvider.request({method:\"wallet_switchEthereumChain\",params:[{chainId:t}]})}catch(e){console.warn(`Unable to switch embedded wallet to chain ID ${t} on initialization`)}}else try{let e=await Me((()=>this.proxyProvider.request({method:\"eth_chainId\"})),{maxAttempts:10,delayMs:500});if(console.debug(`eth_chainId for ${this.walletClientType}:`,e),\"string\"==typeof e)t=e;else{if(\"number\"!=typeof e)throw Error(\"Invalid chainId returned from provider\");t=`0x${e.toString(16)}`}}catch(e){console.warn(`Failed to get chainId from provider, defaulting to ${u}`,e),t=u}let o=Fe(t);if(!n.find((e=>pe(e.address)===a))){let e={name:this.walletBranding.name,icon:\"string\"==typeof this.walletBranding.icon?this.walletBranding.icon:void 0,id:this.walletBranding.id};n.push(this.buildConnectedWallet(pe(r),o,e,\"embedded_imported\"===this.connectorType))}Ke(n,this.wallets)||(this.wallets=n,this.emit(\"walletsUpdated\"))}async getConnectedWallet(){let e=await this.proxyProvider.request({method:\"eth_accounts\"});return this.wallets.sort(((e,t)=>t.connectedAt-e.connectedAt)).find((t=>e.find((e=>pe(e)===pe(t.address)))))||null}async isConnected(){let e=await this.proxyProvider.request({method:\"eth_accounts\"});return Array.isArray(e)&&e.length>0}async sign(e){return await this.connect({showPrompt:!1}),this.proxyProvider.request({method:\"personal_sign\",params:[ue(e),this.wallets[0]?.address]})}subscribeListeners(){this.proxyProvider.on(\"accountsChanged\",this.onAccountsChanged),this.proxyProvider.on(\"chainChanged\",this.onChainChanged),this.proxyProvider.on(\"disconnect\",this.onDisconnect),this.proxyProvider.on(\"connect\",this.onConnect)}unsubscribeListeners(){this.proxyProvider.removeListener(\"accountsChanged\",this.onAccountsChanged),this.proxyProvider.removeListener(\"chainChanged\",this.onChainChanged),this.proxyProvider.removeListener(\"disconnect\",this.onDisconnect),this.proxyProvider.removeListener(\"connect\",this.onConnect)}constructor(e,t,i,r){super(e),this.chainType=\"ethereum\",this.onAccountsChanged=e=>{0===e.length?this.onDisconnect():this.syncAccounts(e)},this.onChainChanged=e=>{this.wallets.forEach((t=>{t.chainId=Fe(e),\"privy\"===this.walletClientType&&W.put(p(t.address),e)})),this.emit(\"walletsUpdated\")},this.onDisconnect=()=>{this.connected=!1,this.wallets=[],this.emit(\"walletsUpdated\")},this.onConnect=()=>{this.connected=!0,this.syncAccounts()},this.wallets=[],this.walletClientType=e,this.chains=t,this.defaultChain=i,this.rpcConfig=r,this.rpcTimeoutDuration=et(r,e),this.connected=!1,this.initialized=!1}}class rt{on(e,t){if(this.walletProvider)return this.walletProvider.on(e,t);this._subscriptions.push({eventName:e,listener:t})}async request(e){if(!this.walletProvider)throw new H(`A wallet request of type ${e.method} was made before setting a wallet provider.`);return Promise.race([this.walletProvider.request(e),this.walletTimeout()]).catch((e=>{throw F(e)}))}constructor(e,t){this.removeListener=(e,t)=>{if(this.walletProvider)try{return this.walletProvider.removeListener(e,t)}catch(e){console.warn(\"Unable to remove wallet provider listener\")}},this.walletTimeout=(e=new _,t=this.rpcTimeoutDuration)=>new Promise(((i,r)=>setTimeout((()=>{r(e)}),t))),this.setWalletProvider=e=>{this.walletProvider&&this._subscriptions.forEach((e=>{this.removeListener(e.eventName,e.listener)})),this.walletProvider=e,this._subscriptions.forEach((e=>{this.walletProvider?.on(e.eventName,e.listener)}))},this.walletProvider=e,this.rpcTimeoutDuration=t||h,this._subscriptions=[]}}const at=({style:e,...t})=>/*#__PURE__*/s(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",fill:\"none\",stroke:\"currentColor\",strokeWidth:1.5,viewBox:\"0 0 24 24\",style:{...e},...t,children:/*#__PURE__*/s(\"path\",{strokeLinecap:\"round\",strokeLinejoin:\"round\",d:\"M9 17.25v1.007a3 3 0 01-.879 2.122L7.5 21h9l-.621-.621A3 3 0 0115 18.257V17.25m6-12V15a2.25 2.25 0 01-2.25 2.25H5.25A2.25 2.25 0 013 15V5.25m18 0A2.25 2.25 0 0018.75 3H5.25A2.25 2.25 0 003 5.25m18 0V12a2.25 2.25 0 01-2.25 2.25H5.25A2.25 2.25 0 013 12V5.25\"})}),nt=he((()=>({listings:[]}))),ot=nt.setState,lt=e=>nt.getState().listings.find((({slug:t})=>dt(t)===dt(e))),st=e=>{let t;try{t=new URL(e).hostname}catch(e){return}return nt.getState().listings.find((({homepage:e})=>{let i;try{i=new URL(e).hostname}catch(e){return!1}return t.includes(i)}))},ct=e=>nt((({listings:t})=>t.find((({slug:t})=>dt(t)===dt(e)))));function dt(e){return\"cryptocom\"===e?\"cryptocom-defi\":e.replace(/[-_]wallet$/,\"\")}const ht=({style:e,...t})=>{let{app:i}=f();/*#__PURE__*/return c(\"svg\",{width:\"28\",height:\"28\",viewBox:\"0 0 28 28\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",style:{height:\"28px\",width:\"28px\",...e},...t,children:[/*#__PURE__*/s(\"rect\",{width:\"28\",height:\"28\",rx:\"3\",fill:\"dark\"===i?.appearance.palette.colorScheme?\"#3396ff\":\"#141414\"}),/*#__PURE__*/s(\"g\",{clipPath:\"url(#clip0_1765_9946)\",children:/*#__PURE__*/s(\"path\",{d:\"M8.09448 10.3941C11.3558 7.20196 16.6442 7.20196 19.9055 10.3941L20.2982 10.7782C20.3369 10.8157 20.3677 10.8606 20.3887 10.9102C20.4097 10.9599 20.4206 11.0132 20.4206 11.0671C20.4206 11.121 20.4097 11.1744 20.3887 11.224C20.3677 11.2737 20.3369 11.3186 20.2982 11.3561L18.9554 12.6702C18.9158 12.7086 18.8628 12.7301 18.8077 12.7301C18.7526 12.7301 18.6996 12.7086 18.66 12.6702L18.1198 12.1415C15.8448 9.91503 12.1557 9.91503 9.88015 12.1415L9.30167 12.7075C9.26207 12.7459 9.20909 12.7673 9.15395 12.7673C9.0988 12.7673 9.04582 12.7459 9.00622 12.7075L7.66346 11.3934C7.62475 11.3559 7.59397 11.3109 7.57295 11.2613C7.55193 11.2117 7.5411 11.1583 7.5411 11.1044C7.5411 11.0505 7.55193 10.9971 7.57295 10.9475C7.59397 10.8979 7.62475 10.8529 7.66346 10.8154L8.09448 10.3941ZM22.6829 13.1115L23.8776 14.2814C23.9163 14.319 23.9471 14.3639 23.9681 14.4135C23.9892 14.4632 24 14.5165 24 14.5704C24 14.6243 23.9892 14.6777 23.9681 14.7273C23.9471 14.777 23.9163 14.8219 23.8776 14.8594L18.4893 20.1332C18.4102 20.2101 18.3042 20.2531 18.1938 20.2531C18.0835 20.2531 17.9775 20.2101 17.8984 20.1332L14.0743 16.3901C14.0545 16.3708 14.0279 16.36 14.0003 16.36C13.9726 16.36 13.9461 16.3708 13.9263 16.3901L10.1021 20.1332C10.023 20.2101 9.91703 20.2531 9.8067 20.2531C9.69636 20.2531 9.59038 20.2101 9.51124 20.1332L4.12236 14.8594C4.08365 14.8219 4.05287 14.777 4.03185 14.7273C4.01083 14.6777 4 14.6243 4 14.5704C4 14.5165 4.01083 14.4632 4.03185 14.4135C4.05287 14.3639 4.08365 14.319 4.12236 14.2814L5.31767 13.1115C5.39678 13.0348 5.50265 12.9919 5.61285 12.9919C5.72305 12.9919 5.82892 13.0348 5.90803 13.1115L9.73216 16.8546C9.75194 16.874 9.7785 16.8848 9.80616 16.8848C9.83381 16.8848 9.86037 16.874 9.88015 16.8546L13.7043 13.1115C13.7834 13.0346 13.8894 12.9916 13.9997 12.9916C14.1101 12.9916 14.216 13.0346 14.2952 13.1115L18.1198 16.8546C18.1396 16.874 18.1662 16.8848 18.1938 16.8848C18.2215 16.8848 18.2481 16.874 18.2678 16.8546L22.092 13.1115C22.1711 13.0346 22.2771 12.9916 22.3874 12.9916C22.4977 12.9916 22.6037 13.0346 22.6829 13.1115Z\",fill:\"white\"})}),/*#__PURE__*/s(\"defs\",{children:/*#__PURE__*/s(\"clipPath\",{id:\"clip0_1765_9946\",children:/*#__PURE__*/s(\"rect\",{width:\"20\",height:\"12.2531\",fill:\"white\",transform:\"translate(4 8)\"})})})]})};class pt extends it{async initialize(){let e=await this.createProvider();this.provider=e,this.proxyProvider.setWalletProvider(e),this.subscribeListeners(),e.session&&(this.walletProvider?.session?.peer.metadata.url&&(this.walletEntry=st(this.walletProvider?.session?.peer.metadata.url),this.walletClientType=this.walletEntry?.slug||\"unknown\"),this.connected=!0,await this.syncAccounts()),this.initialized=!0,this.emit(\"initialized\");let{WalletConnectModal:t}=await import(\"@walletconnect/modal\");this.modal=new t({projectId:this.walletConnectCloudProjectId,themeVariables:{\"--wcm-z-index\":\"1000000\"},explorerRecommendedWalletIds:Oe}),this.modal.subscribeModal((e=>{e.open||this.walletProvider?.session||!this.onQrModalClosed||this.onQrModalClosed()}))}async connect(e){return e.showPrompt&&await this.promptConnection(),this.getConnectedWallet()}async isConnected(){return!!this.walletProvider?.connected}get walletBranding(){let e=this.walletProvider?.session?.peer.metadata.icons?.[0];return{name:Le(this.walletProvider?.session?.peer.metadata.name||\"\")||\"WalletConnect\",icon:\"string\"==typeof e?e:\"data:image/png;base64,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\",id:this.walletProvider?.session?.peer.metadata.name.toLowerCase()||\"wallet_connect_v2\"}}async resetConnection(e){this.walletProvider&&this.walletProvider.connected&&(await this.walletProvider.disconnect(),this.walletProvider.signer.session=void 0,this.walletClientType=e,this.redirectUri=void 0,this.fallbackUniversalRedirectUri=void 0,function(){try{localStorage.removeItem(ze)}catch{}}(),this.onDisconnect())}async promptConnection(){if(this.provider)return new Promise(((e,t)=>{this.onQrModalClosed=()=>{t(new R)},(async()=>{let t=\"\",i=await Promise.race([this.walletProvider?.enable(),this.proxyProvider.walletTimeout()]);if(i?.length&&(t=i[0]),!t||\"\"===t)throw new H(\"Unable to retrieve address\");this.walletProvider?.session?.peer.metadata.url&&(this.walletEntry=st(this.walletProvider?.session?.peer.metadata.url),this.walletClientType=this.walletEntry?.slug||\"unknown\",this.proxyProvider.rpcTimeoutDuration=et(this.rpcConfig,this.walletClientType)),this.connected=!0,await this.syncAccounts(i),e()})().catch((e=>{t(e?F(e):new H(\"Unknown error during connection\"))})).finally((()=>this.modal?.closeModal()))}))}disconnect(){this.walletProvider?.disconnect().then((()=>this.onDisconnect())).catch((()=>console.warn(\"Unable to disconnect Wallet Connect provider\")))}get walletProvider(){return this.proxyProvider.walletProvider}setWalletProvider(e){this.proxyProvider.setWalletProvider(e)}async createProvider(){let e={};for(let t of this.chains){let i=_e(t.id,this.chains,this.rpcConfig,this.privyAppId);i&&(e[t.id]=i)}let t=this.shouldEnforceDefaultChainOnConnect?[this.defaultChain.id]:[],i=this.chains.map((e=>e.id)),r=await se.init({projectId:this.walletConnectCloudProjectId,chains:t,optionalChains:i,optionalEvents:ce,optionalMethods:de,rpcMap:e,showQrModal:!1,metadata:{description:this.privyAppName,name:this.privyAppName,url:window.location.toString(),icons:[]}});return r.on(\"display_uri\",(e=>{if(r.signer.abortPairingAttempt(),this.walletEntry){let{redirect:t,href:i}=function(e,t){let i=De(t);if(i.deepLink)return Be(i.deepLink,e);if(i.universalLink)return $e(i.universalLink,e);throw new Z(`Unsupported wallet ${t.id}`)}(e,this.walletEntry);(function({href:e,name:t}){try{localStorage.setItem(ze,JSON.stringify({href:e,name:t}))}catch{}})({href:i,name:this.walletEntry.metadata?.shortName||this.walletEntry.name}),this.redirectUri=t;let r=function(e,t){let i=De(t);if(i.universalLink)return $e(i.universalLink,e)}(e,this.walletEntry);r?.redirect&&(this.fallbackUniversalRedirectUri=r.redirect),B?(Ve(t,\"_self\"),this.showPrivyQrModal?.({native:t,universal:this.fallbackUniversalRedirectUri})):this.showPrivyQrModal?this.showPrivyQrModal?.({native:t,universal:this.fallbackUniversalRedirectUri}):this.modal?.openModal({uri:e,chains:[this.defaultChain.id]})}else this.modal?.openModal({uri:e,chains:[this.defaultChain.id]})})),r.on(\"connect\",(()=>{this.modal?.closeModal(),r.session?.peer.metadata.url&&(this.walletEntry=st(r.session?.peer.metadata.url),this.walletClientType=this.walletEntry?.slug||\"unknown\")})),r}async enableProvider(){return this.walletProvider?.connected?Promise.resolve(this.walletProvider.accounts):await(this.walletProvider?.enable())}setWalletEntry(e,t){this.walletEntry=e,this.showPrivyQrModal=t}constructor(e,t,i,r,a,n,o,l){super(l||\"unknown\",i,r,t),this.connectorType=\"wallet_connect_v2\",this.privyAppId=n,this.privyAppName=o,this.walletConnectCloudProjectId=e,this.rpcConfig=t,this.shouldEnforceDefaultChainOnConnect=a,this.proxyProvider=new rt(void 0,this.rpcTimeoutDuration),l&&(this.walletEntry=lt(l),this.walletClientType=l)}}const ut=e=>{let[t,r]=i(\"auto\");return o((()=>{let t=new ResizeObserver((e=>{r(e[0]?.contentRect.height??\"auto\")}));return e.current&&t.observe(e.current),()=>{e.current&&t.unobserve(e.current)}}),[e.current]),t},ft=({success:e,fail:t})=>/*#__PURE__*/c(d,{children:[/*#__PURE__*/s(wt,{className:e?\"success\":t?\"fail\":\"\"}),/*#__PURE__*/s(gt,{className:e?\"success\":t?\"fail\":\"\"})]}),wt=/*#__PURE__*/$.span.withConfig({displayName:\"Loader\",componentId:\"sc-ce7792e2-0\"})([\"&&{width:82px;height:82px;border-width:4px;border-style:solid;border-color:\",\";border-bottom-color:transparent;border-radius:50%;display:inline-block;box-sizing:border-box;animation:rotation 1.2s linear infinite;transition:border-color 800ms;}@keyframes rotation{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}&&&.success{border-color:var(--privy-color-success);border-bottom-color:var(--privy-color-success);}&&&.fail{border-color:var(--privy-color-error);border-bottom-color:var(--privy-color-error);}\"],(e=>e.color??\"var(--privy-color-accent)\")),gt=/*#__PURE__*/$(wt).withConfig({displayName:\"LoaderFaint\",componentId:\"sc-ce7792e2-1\"})([\"&&{border-bottom-color:\",\";animation:none;opacity:0.5;}\"],(e=>e.color??\"var(--privy-color-accent)\")),mt=e=>/*#__PURE__*/s(vt,{color:e.color||\"var(--privy-color-foreground-3)\"});let vt=/*#__PURE__*/$(wt).withConfig({displayName:\"StyledButtonLoader\",componentId:\"sc-ce7792e2-2\"})([\"&&{height:1rem;width:1rem;margin:2px 0;border-width:1.5px;transition:border-color 200ms ease;}\"]);const yt=/*#__PURE__*/$.button.withConfig({displayName:\"Button\",componentId:\"sc-3253171f-0\"})([\"display:flex;flex-direction:row;align-items:center;justify-content:center;user-select:none;&{width:100%;cursor:pointer;border-radius:var(--privy-border-radius-md);font-size:1rem;font-style:normal;font-weight:500;line-height:22px;letter-spacing:-0.016px;}&&{padding:12px 16px;}\"]),bt=({children:e,loading:t,disabled:i,success:r,loadingText:a=\"Loading...\",...n})=>/*#__PURE__*/s(kt,{disabled:t||i,success:r,...n,children:t?/*#__PURE__*/c(\"span\",{children:[/*#__PURE__*/s(mt,{}),a?/*#__PURE__*/s(\"span\",{children:a}):null]}):e}),Ct=({children:e,loading:t,disabled:i,...r})=>/*#__PURE__*/s(xt,{disabled:i,...r,children:t?/*#__PURE__*/s(mt,{color:\"var(--privy-color-foreground-accent)\"}):e});let xt=/*#__PURE__*/$(yt).withConfig({displayName:\"StyledPrimaryButtonWithoutGray\",componentId:\"sc-3253171f-1\"})([\"position:relative;&&{background-color:var(--privy-color-accent);color:var(--privy-color-foreground-accent);transition:background-color 200ms ease;}&:hover{background-color:var(--privy-color-accent-dark);}&:active{background-color:var(--privy-color-accent-dark);}&:disabled,&:hover:disabled,&:active:disabled{cursor:not-allowed;pointer-events:none;color:var(--privy-color-foreground-accent);background-color:var(--privy-color-accent-dark);}\"]);const At=({children:e,loading:t,disabled:i,loadingText:r=\"Loading...\",...a})=>/*#__PURE__*/s(kt,{as:\"a\",disabled:t||i,...a,children:t?/*#__PURE__*/c(\"span\",{children:[/*#__PURE__*/s(mt,{}),r?/*#__PURE__*/s(\"span\",{children:r}):null]}):e});let kt=/*#__PURE__*/$(yt).withConfig({displayName:\"StyledPrimaryButton\",componentId:\"sc-3253171f-2\"})([\"position:relative;&&{background-color:\",\";color:var(--privy-color-foreground-accent);transition:background-color 200ms ease;}&:hover{background-color:\",\";}&:active{background-color:\",\";}&:hover:disabled,&:active:disabled{background-color:var(--privy-color-background-2);color:var(--privy-color-foreground-3);cursor:not-allowed;}\",\" > span{display:flex;align-items:center;gap:8px;opacity:1;animation:fadein 200ms ease;}\"],(e=>e.warn?\"var(--privy-color-error)\":e.success?\"var(--privy-color-success)\":\"var(--privy-color-accent)\"),(e=>e.warn?\"var(--privy-color-error)\":e.success?\"var(--privy-color-success)\":\"var(--privy-color-accent-dark)\"),(e=>e.warn?\"var(--privy-color-error)\":e.success?\"var(--privy-color-success)\":\"var(--privy-color-accent-dark)\"),(e=>e.disabled?/*#__PURE__*/V([\"&&&,&&&:hover,&&&:active{background-color:var(--privy-color-background-2);color:var(--privy-color-foreground-3);cursor:not-allowed;pointer-events:none;}\"]):\"\"));const It=({children:e,loading:t,disabled:i,loadingText:r=\"Loading...\",...a})=>/*#__PURE__*/s(Tt,{disabled:t||i,...a,children:t?/*#__PURE__*/c(\"span\",{children:[/*#__PURE__*/s(mt,{}),r?/*#__PURE__*/s(\"span\",{children:r}):null]}):e});let Tt=/*#__PURE__*/$(yt).withConfig({displayName:\"StyledSecondaryButton\",componentId:\"sc-3253171f-3\"})([\"&&{border-width:1px;border-color:\",\";color:var(--privy-color-foreground);transition:border-color 200ms ease;}&:hover,&:active{border-color:\",\";}&:hover:disabled,&:active:disabled{border-color:var(--privy-color-foreground-accent);color:var(--privy-color-foreground-3);cursor:not-allowed;}> span{display:flex;align-items:center;gap:8px;opacity:1;animation:fadein 200ms ease;}\"],(e=>e.warn?\"var(--privy-color-error)\":\"var(--privy-color-foreground-4)\"),(e=>e.warn?\"var(--privy-color-error)\":\"var(--privy-color-foreground-3)\"));const St=/*#__PURE__*/$.button.withConfig({displayName:\"SoftCtaButton\",componentId:\"sc-3253171f-4\"})([\"&&{padding:12px 16px;font-weight:500;text-align:center;color:var(--privy-color-foreground-accent);background-color:var(--privy-color-accent);border-radius:var(--privy-border-radius-sm);min-width:144px;opacity:\",\";transition:opacity 200ms ease,background-color 200ms ease,color 200ms ease;user-select:none;\",\" &:hover{background-color:var(--privy-color-accent-dark);}&:active{background-color:var(--privy-color-accent-dark);}&:hover:disabled,&:active:disabled{background-color:var(--privy-color-background-2);color:var(--privy-color-foreground-3);cursor:not-allowed;}}\"],(e=>e.invisible?\"0\":\"1\"),(e=>e.invisible&&/*#__PURE__*/V([\"pointer-events:none;\"]))),Et=({children:e,onClick:t,disabled:i,isSubmitting:r,...a})=>/*#__PURE__*/c(Mt,{$isSubmitting:r,onClick:t,disabled:i,...a,children:[/*#__PURE__*/s(\"span\",{children:e}),\n/*#__PURE__*/s(\"span\",{children:/*#__PURE__*/s(mt,{})})]});let Mt=/*#__PURE__*/$.button.withConfig({displayName:\"StyledEmbeddedButton\",componentId:\"sc-3253171f-6\"})([\"&&{color:var(--privy-color-accent);font-size:16px;font-style:normal;font-weight:500;line-height:24px;cursor:pointer;border-radius:0px var(--privy-border-radius-mdlg) var(--privy-border-radius-mdlg) 0px;border:none;transition:color 200ms ease;@media (min-width:441px){font-size:14px;}:hover{color:var(--privy-color-accent-dark);}&& > :first-child{opacity:\",\";}&& > :last-child{position:absolute;display:flex;top:50%;left:50%;transform:translate3d(-50%,-50%,0);opacity:\",\";}:disabled,:hover:disabled{color:var(--privy-color-foreground-3);cursor:not-allowed;}}\"],(e=>e.$isSubmitting?0:1),(e=>e.$isSubmitting?1:0));const Nt=({backFn:e})=>/*#__PURE__*/s(\"div\",{children:/*#__PURE__*/s(_t,{onClick:e,children:/*#__PURE__*/s(K,{height:\"16px\",width:\"16px\",strokeWidth:2})})}),Lt=({nextFn:e})=>/*#__PURE__*/s(\"div\",{children:/*#__PURE__*/s(_t,{onClick:e,children:/*#__PURE__*/s(ee,{height:\"16px\",width:\"16px\",strokeWidth:2})})}),Pt=({infoFn:e})=>/*#__PURE__*/s(\"div\",{children:/*#__PURE__*/s(Rt,{\"aria-label\":\"info\",onClick:e,children:/*#__PURE__*/s(te,{height:\"22px\",width:\"22px\",strokeWidth:2})})}),Wt=e=>/*#__PURE__*/s(\"div\",{children:/*#__PURE__*/s(_t,{\"aria-label\":\"close modal\",onClick:e.onClose,children:/*#__PURE__*/s(ie,{height:\"16px\",width:\"16px\",strokeWidth:2})})}),Ft=({backFn:e,infoFn:t,onClose:i,title:r,closeable:a=!0})=>{let{closePrivyModal:n}=Y(),o=w();/*#__PURE__*/return c(Ot,{children:[/*#__PURE__*/c(Dt,{children:[e&&/*#__PURE__*/s(Nt,{backFn:e}),t&&/*#__PURE__*/s(Pt,{infoFn:t})]}),r&&/*#__PURE__*/s(Ut,{id:\"privy-dialog-title\",children:r}),/*#__PURE__*/s(zt,{children:!o.render.standalone&&a&&/*#__PURE__*/s(Wt,{onClose:i||(()=>n())})})]})};let _t=/*#__PURE__*/$.button.withConfig({displayName:\"StyledButton\",componentId:\"sc-f295093d-0\"})([\"&&{cursor:pointer;display:flex;opacity:0.6;background-color:var(--privy-color-background-2);border-radius:var(--privy-border-radius-full);padding:4px;> svg{margin:auto;color:var(--privy-color-foreground);}:hover{opacity:1;}}\"]),Rt=/*#__PURE__*/$(_t).withConfig({displayName:\"TransparentStyledButton\",componentId:\"sc-f295093d-1\"})([\"&&{background-color:transparent;}\"]),Ot=/*#__PURE__*/$.div.withConfig({displayName:\"StyledHeader\",componentId:\"sc-f295093d-2\"})([\"padding:16px 0;display:flex;align-items:center;justify-content:space-between;h2{font-size:16px;line-height:24px;font-weight:600;color:var(--privy-color-foreground);}\"]),Dt=/*#__PURE__*/$.div.withConfig({displayName:\"LeftActionContainer\",componentId:\"sc-f295093d-3\"})([\"flex:1;align-items:center;display:flex;gap:8px;\"]),zt=/*#__PURE__*/$.div.withConfig({displayName:\"RightActionContainer\",componentId:\"sc-f295093d-4\"})([\"flex:1;display:flex;justify-content:flex-end;\"]),Ut=/*#__PURE__*/$.div.withConfig({displayName:\"TitleContainer\",componentId:\"sc-f295093d-5\"})([\"overflow:hidden;white-space:nowrap;max-width:100%;text-overflow:ellipsis;text-align:center;color:var(--privy-color-foreground-2);\"]);function Bt(e){/*#__PURE__*/return s(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 460 40\",...e,children:/*#__PURE__*/s(\"g\",{fill:e.color||\"var(--privy-color-foreground)\",children:/*#__PURE__*/s(\"path\",{d:\"M0 15.4v15.38h4.64V19.96h3.58c2.47 0 3.63-.01 3.77-.02 1-.08 1.49-.15 2.18-.3a9.45 9.45 0 0 0 4.6-2.37c1.66-1.57 2.64-3.87 2.81-6.56.02-.3.02-1.19 0-1.49-.1-1.77-.56-3.35-1.36-4.72A8.84 8.84 0 0 0 15.14.57c-.93-.3-1.75-.43-3.09-.54C11.9.02 10.2 0 5.93 0H0ZM10.85 4c1.85.05 3.1.45 4.16 1.3.22.17.54.49.69.68a5.97 5.97 0 0 1 1.19 3.13c.04.35.04 1.36 0 1.71-.08.68-.23 1.3-.44 1.85a4.8 4.8 0 0 1-1.09 1.68A5.63 5.63 0 0 1 12 15.92c-.6.08-.4.08-4.01.09H4.64V3.98h2.9c1.6 0 3.08 0 3.31.02ZM187.65 5.71v5.72h-.27l-.09-.14a15.9 15.9 0 0 0-1.21-1.73c-.43-.5-1-.95-1.7-1.36-.54-.3-1.05-.5-1.73-.63a8.98 8.98 0 0 0-1.7-.17 8.84 8.84 0 0 0-7.8 4.03 12.95 12.95 0 0 0-2.03 6.39c-.07.98-.06 2.15.02 3.13.2 2.47.87 4.53 2.02 6.25a8.98 8.98 0 0 0 10.22 3.65 6.5 6.5 0 0 0 2.8-1.93c.41-.51.84-1.1 1.1-1.55l.1-.17h.37v3.58h4.38V0h-4.48Zm-5.24 5.54c1.3.14 2.3.6 3.17 1.48.9.9 1.5 2.09 1.85 3.64.36 1.6.39 3.72.06 5.43a8.13 8.13 0 0 1-1.54 3.62 5.1 5.1 0 0 1-3.93 1.96 6.13 6.13 0 0 1-2.32-.31 5.87 5.87 0 0 1-3.33-3.5c-.39-1-.62-2.05-.72-3.32-.03-.32-.04-1.35-.02-1.73.08-1.56.4-2.91.96-4.05a6.2 6.2 0 0 1 1.06-1.58 5.08 5.08 0 0 1 3.6-1.66c.25-.02.9 0 1.16.02ZM210.07 15.39l.01 15.38h4.38l.01-3.57h.37l.09.15c.24.44.84 1.26 1.21 1.7a6.79 6.79 0 0 0 2.57 1.75 9.3 9.3 0 0 0 6.86-.49 9.28 9.28 0 0 0 4.05-4.07A13.05 13.05 0 0 0 231 21.6c.21-1.73.18-3.7-.09-5.32a13.03 13.03 0 0 0-1.5-4.3 9.1 9.1 0 0 0-3.75-3.63 9.15 9.15 0 0 0-4.43-.96 7.46 7.46 0 0 0-2.8.5A7.07 7.07 0 0 0 216 9.7c-.4.52-.82 1.12-1.1 1.59l-.07.14h-.27V0h-4.5Zm11.13-4.14c1.07.1 1.94.44 2.7 1.04a6.1 6.1 0 0 1 1.64 1.98c.43.84.78 2 .94 3.11.15 1.16.16 2.4.02 3.54a9.34 9.34 0 0 1-1.39 4.03 5.33 5.33 0 0 1-2.69 2.15c-.9.3-2.04.38-3.06.2a5.14 5.14 0 0 1-3.45-2.37 6.03 6.03 0 0 1-.45-.8c-.5-1.03-.8-2.2-.92-3.58-.04-.49-.06-.89-.05-1.53.01-.76.05-1.23.13-1.85.38-2.53 1.47-4.38 3.15-5.31a5.46 5.46 0 0 1 2.3-.63 10 10 0 0 1 1.13.02ZM69.05 2.17l-.01 2.77V7.7h-3.36v3.6h3.36v6.8l.01 7.15c.06 1.4.4 2.44 1.1 3.37a5.8 5.8 0 0 0 2.97 2.07c.91.3 1.83.42 2.9.38a8.71 8.71 0 0 0 2.66-.48l-.8-3.7-.38.06a4.96 4.96 0 0 1-2.43-.06c-.33-.1-.56-.25-.8-.49-.4-.41-.6-.88-.7-1.67-.02-.2-.02-.62-.03-6.82v-6.6h4.73V7.7h-4.73V2.16h-4.49ZM133.34 2.17V7.7h-3.39v3.6h3.38v6.9l.01 7.17a5.66 5.66 0 0 0 2.36 4.49c.85.6 2.03 1.03 3.26 1.17.85.1 2.03.05 2.81-.1.3-.06.75-.18 1-.26l.2-.06v-.05l-.81-3.67-.37.06a4.99 4.99 0 0 1-1.8.09c-.85-.13-1.32-.4-1.7-.97a2.63 2.63 0 0 1-.39-1.04c-.06-.4-.06 0-.06-7.1V11.3h4.7V7.7h-4.7l-.01-2.77V2.16h-4.49ZM293.41 2.36a14.56 14.56 0 0 0-13.7 16.07 14.59 14.59 0 0 0 21.86 11.08 14.5 14.5 0 0 0 7.11-14.07 14.61 14.61 0 0 0-6.53-10.73 14.49 14.49 0 0 0-8.74-2.35ZM350.8 2.36a10.17 10.17 0 0 0-7.56 4.2c-.16.2-.45.63-.58.83l-.05.1h-.47l-.01-4.36h-7.36v36.4h7.82V27.27h.49l.05.07a11.3 11.3 0 0 0 7.49 4.15 10.52 10.52 0 0 0 9.38-4.1c1.66-2.1 2.73-4.9 3.07-8.06.1-.87.13-1.4.13-2.37 0-.8 0-1.1-.07-1.76a15.95 15.95 0 0 0-3.23-8.72 12.8 12.8 0 0 0-1.85-1.84 10.49 10.49 0 0 0-7.26-2.28Zm-.94 6.05c1.27.15 2.33.65 3.2 1.5.98.96 1.67 2.31 2.03 4 .34 1.57.38 3.68.12 5.39a9.78 9.78 0 0 1-1.04 3.25c-.14.25-.44.69-.6.89a5.35 5.35 0 0 1-4.31 2.07 5.25 5.25 0 0 1-4.41-1.9 7.35 7.35 0 0 1-1.26-2.32 14.09 14.09 0 0 1-.62-4.83c.05-1.98.38-3.53 1.02-4.85a5.63 5.63 0 0 1 2.5-2.65c.66-.34 1.3-.5 2.14-.58.18-.02 1.04 0 1.23.03ZM363.63 3.1l-.01 3.2v3.16h1.43c1.26.01 1.44.02 1.54.04.42.09.66.28.79.62.08.23.08.08.08 2.96a911.57 911.57 0 0 1 .03 10.18v7.54h7.82v-7.4l.01-7.83c.03-.94.11-1.63.27-2.28.46-1.9 1.54-2.93 3.35-3.23.52-.08.2-.08 5-.08h4.4V3.08h-3.1c-3.48 0-3.91.01-4.67.1-1.83.2-3.04.79-3.96 1.88-.5.6-.9 1.32-1.26 2.26l-.06.17h-.46V3.09h-5.6c-4.46 0-5.6 0-5.6.02ZM390.8 16.95V30.8h3.87l3.86-.01V3.09h-7.73ZM400.6 3.1l-.01.4v.38l4.66 13.4 4.69 13.47.02.05h10.3l.03-.05 4.67-13.45 4.67-13.4V3.1h-7.43l-6.7 19.26h-.5l-3.28-9.5-3.31-9.64-.05-.12h-3.88l-3.88.01ZM430.98 3.1c-.01 0-.02.19-.02.4v.39l5.08 14.59c2.8 8.02 5.08 14.6 5.08 14.61.01.02-.22.02-4.8.02h-4.82v6.42h4.95c5.09 0 5.23 0 5.87-.06 3.15-.28 5.29-1.63 6.63-4.15.28-.55.44-.95.87-2.16L459 6.78l1-2.89v-.8h-7.43l-6.69 19.26h-.5l-3.27-9.46-3.31-9.64-.06-.16h-3.88l-3.88.01ZM36.57 7.36c-1.36.1-2.6.6-3.62 1.45a5.65 5.65 0 0 0-1.67 2.42l-.05.13H31V7.7h-4.35v23.08h4.5v-7.3c0-8 0-7.34.08-7.82a4.89 4.89 0 0 1 2.06-3.18c.83-.58 1.74-.89 2.87-.98a11.87 11.87 0 0 1 2.8.25H39v-4.3l-.21-.02c-.61-.07-1.74-.1-2.22-.07ZM51.08 7.41c-2.33.12-4.3.84-5.95 2.16a9.89 9.89 0 0 0-2.03 2.2 12.5 12.5 0 0 0-2 5.78 18.04 18.04 0 0 0 0 3.65 12.13 12.13 0 0 0 2.26 6.05 9.74 9.74 0 0 0 5 3.52c2.11.64 4.7.64 6.8 0a9.78 9.78 0 0 0 4.88-3.37c1.38-1.78 2.19-4 2.4-6.58.13-1.46.06-3.06-.18-4.42a11.24 11.24 0 0 0-3.58-6.6 10 10 0 0 0-5.75-2.35c-.56-.06-1.31-.07-1.85-.04Zm1.42 3.78c.88.1 1.62.34 2.28.75a6.13 6.13 0 0 1 1.99 2.15 10.31 10.31 0 0 1 1.2 5c.02 1.23-.12 2.44-.42 3.51a7.14 7.14 0 0 1-1.81 3.32c-.61.6-1.2.98-1.95 1.24a6 6 0 0 1-2 .3 5.7 5.7 0 0 1-2.72-.6 5 5 0 0 1-1.28-.94A7.1 7.1 0 0 1 46 22.73c-.57-1.99-.6-4.46-.08-6.5a7.24 7.24 0 0 1 2.03-3.67 5.13 5.13 0 0 1 3.35-1.4 11 11 0 0 1 1.2.03ZM92.05 7.4c-.96.06-1.56.15-2.3.33a9.62 9.62 0 0 0-6.09 4.66 13.5 13.5 0 0 0-1.71 7c0 .83 0 1.04.06 1.6.16 1.77.58 3.32 1.29 4.7A9.72 9.72 0 0 0 90.28 31c1.84.37 4.08.32 5.85-.13a9.07 9.07 0 0 0 5.02-3.1A7.64 7.64 0 0 0 102.5 25l-2.11-.39-2.11-.38-.08.13a4.72 4.72 0 0 1-2.35 2.55 6.3 6.3 0 0 1-2.23.58c-.29.03-1.13.03-1.44 0a6.35 6.35 0 0 1-3.02-1.04 5.93 5.93 0 0 1-2.02-2.43 8.44 8.44 0 0 1-.72-3.18v-.26h16.38v-.81c0-1.83-.06-2.76-.25-3.87-.2-1.22-.53-2.24-1.05-3.28a8.9 8.9 0 0 0-2.66-3.26 10.1 10.1 0 0 0-5.34-1.94 18.3 18.3 0 0 0-1.46-.03Zm1.3 3.75c1.2.13 2.19.55 3.05 1.3a5.8 5.8 0 0 1 1.78 2.96c.13.51.21 1.17.21 1.66v.15H86.43v-.12c.08-.97.3-1.78.72-2.61.5-1 1.2-1.8 2.14-2.42a5.32 5.32 0 0 1 2.9-.95c.2-.01.97 0 1.17.03ZM116.79 7.41c-2 .1-3.73.65-5.22 1.65a10.7 10.7 0 0 0-4.25 6.06 16.1 16.1 0 0 0-.5 5.8c.2 2.17.84 4.13 1.88 5.76.58.9 1.32 1.73 2.15 2.4a9.37 9.37 0 0 0 3.6 1.8 12.06 12.06 0 0 0 3.92.34 10.2 10.2 0 0 0 3.84-.95 8.31 8.31 0 0 0 4.76-6.75l.01-.04h-4.37l-.05.16a4.87 4.87 0 0 1-4.24 3.75c-.59.07-1.32.06-1.93-.05a5.47 5.47 0 0 1-3.5-2.27c-.56-.75-1-1.73-1.26-2.79a13.8 13.8 0 0 1-.16-5.24 7.77 7.77 0 0 1 2.1-4.3 5.48 5.48 0 0 1 2.15-1.3 6.4 6.4 0 0 1 3.89.1c.59.21 1.03.5 1.5.96a5.32 5.32 0 0 1 1.46 2.5l.04.15h4.37v-.06a8.22 8.22 0 0 0-5.31-6.94 10.98 10.98 0 0 0-4.88-.74ZM156.2 7.41a9.87 9.87 0 0 0-6 2.29 11.02 11.02 0 0 0-3.41 5.43c-.52 1.78-.68 3.9-.48 5.97.17 1.8.63 3.38 1.37 4.8a9.68 9.68 0 0 0 5.91 4.86c1.65.48 3.63.61 5.53.36 3.72-.49 6.55-2.62 7.56-5.69.12-.39.13-.42.1-.43-.02 0-4.13-.75-4.19-.75-.03 0-.04 0-.1.16-.18.42-.45.9-.72 1.22-.16.2-.49.53-.7.7-.67.54-1.5.9-2.43 1.08-.48.08-.83.11-1.41.11-.64 0-1.07-.04-1.6-.15a5.76 5.76 0 0 1-3.93-2.83 8 8 0 0 1-.99-3.79v-.16h16.38v-1.11l-.02-1.43c-.1-2.25-.53-4-1.35-5.59a9.24 9.24 0 0 0-6.18-4.75c-1.04-.26-2.2-.36-3.33-.3Zm1.45 3.74a5.35 5.35 0 0 1 3.66 1.94 6.1 6.1 0 0 1 1.38 4.01v.12h-11.97v-.06c0-.02 0-.14.02-.25a6.6 6.6 0 0 1 2.15-4.32 5.73 5.73 0 0 1 3.5-1.46c.25-.02 1 0 1.26.02ZM233.58 7.82l8.37 23.22a49.22 49.22 0 0 1-.67 1.9 5.36 5.36 0 0 1-1.14 1.8c-.41.4-.82.58-1.48.69-.27.04-1.03.03-1.35 0a8.05 8.05 0 0 1-1.1-.23l-1.08 3.67c0 .02.32.14.66.22.83.21 1.57.29 2.56.28.56-.01.8-.03 1.24-.1 2.71-.4 4.66-2.09 5.86-5.08l9.64-26.44c0-.02-4.82-.06-4.83-.05l-2.93 8.96-2.91 8.94h-.24l-.22-.65-2.91-8.95-2.7-8.3H233.53ZM293.05 35.8c-1.18.04-1.93.09-2.8.16-2.52.24-4.53.69-5.43 1.23-.7.41-.76.86-.2 1.28.88.66 3.29 1.19 6.36 1.4a48.55 48.55 0 0 0 5.75.05c3.47-.19 6.24-.78 7.11-1.5.22-.19.3-.34.3-.53 0-.1 0-.12-.04-.22-.35-.69-2.32-1.3-5.25-1.63a41.09 41.09 0 0 0-5.8-.24Zm0 0\"})})})}let $t=/*#__PURE__*/$.div.withConfig({displayName:\"TermsAndConditionsContainer\",componentId:\"sc-bdb69ecc-0\"})([\"margin-top:16px;font-size:13px;text-align:center;color:var(--privy-color-foreground-3);&& > a{color:var(--privy-color-accent);}\"]);function Vt({app:{legal:{privacyPolicyUrl:e,termsAndConditionsUrl:t,requireUsersAcceptTerms:i}},alwaysShowImplicitConsent:r}){let a=!(!e||!t);return i&&!r||!t&&!e?\n/*#__PURE__*/s($t,{}):\n/*#__PURE__*/ /*#__PURE__*/c($t,{children:[\"By logging in I agree to the\",\" \",t&&/*#__PURE__*/s(\"a\",{href:t,target:\"_blank\",children:a?\"Terms\":\"Terms of Service\"}),a&&\" & \",e&&/*#__PURE__*/s(\"a\",{href:e,target:\"_blank\",children:\"Privacy Policy\"})]})}const jt=()=>{let{appearance:e}=w();/*#__PURE__*/return s(Ht,{children:e.footerLogo??/*#__PURE__*/s(\"a\",{href:\"https://www.privy.io/\",target:\"_blank\",id:\"protected-by-privy\",children:/*#__PURE__*/s(Bt,{height:13,width:150})})})},Ht=/*#__PURE__*/$.div.withConfig({displayName:\"ModalFooter\",componentId:\"sc-bdb69ecc-1\"})([\"display:flex;align-items:center;justify-content:center;padding-top:8px;padding-bottom:12px;gap:8px;font-size:13px;&& a{padding:0.5rem 0;&:hover{text-decoration:none;}}@media all and (display-mode:standalone){padding-bottom:30px;}\"]),Zt=({address:e,showCopyIcon:t,url:r,className:a})=>{let[n,l]=i(!1);return o((()=>{if(n){let e=setTimeout((()=>l(!1)),2e3);return()=>clearTimeout(e)}}),[n]),r?/*#__PURE__*/s(\"a\",{title:e,className:a,href:`${r}/address/${e}`,target:\"_blank\",children:Te(e)}):/*#__PURE__*/c(\"button\",{title:e,className:a,onClick:t=>(t.stopPropagation(),navigator.clipboard.writeText(e).then((()=>l(!0))).catch(console.error)),children:[Te(e),t&&/*#__PURE__*/s(n?qt:Gt,{})]})};let Gt=/*#__PURE__*/$(we).withConfig({displayName:\"StyledSquare2StackIcon\",componentId:\"sc-6eaa0c94-0\"})([\"&&{display:inline;}stroke-width:2;height:0.875rem;width:0.875rem;margin-left:0.125rem;color:var(--privy-color-foreground-3);\"]),qt=/*#__PURE__*/$(fe).withConfig({displayName:\"StyledCheckIcon\",componentId:\"sc-6eaa0c94-1\"})([\"&&{display:inline;}stroke-width:2;height:0.875rem;width:0.875rem;margin-left:0.125rem;color:var(--privy-color-success);\"]);const Xt=(e,t)=>!g(e)&&(\"all-users\"===t||\"users-without-wallets\"===t&&!Jt(e).length);let Jt=e=>e.linkedAccounts.filter((e=>\"wallet\"===e.type&&\"ethereum\"===e.chainType));const Yt=(e,t)=>!m(e)&&(\"all-users\"===t||\"users-without-wallets\"===t&&!Qt(e).length);let Qt=e=>e.linkedAccounts.filter((e=>\"wallet\"===e.type&&\"solana\"===e.chainType));const Kt=(e,t)=>Xt(e,t.ethereum.createOnLogin)||Yt(e,t.solana.createOnLogin),ei=/*#__PURE__*/$.div.withConfig({displayName:\"BottomPusherContainer\",componentId:\"sc-cb963810-0\"})([\"display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;margin-top:auto;gap:16px;flex-grow:100;\"]),ti=/*#__PURE__*/$.div.withConfig({displayName:\"CenteredItem\",componentId:\"sc-cb963810-1\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;flex-grow:1;width:100%;\"]),ii=/*#__PURE__*/$.div.withConfig({displayName:\"HorizontallyCenteredItem\",componentId:\"sc-cb963810-2\"})([\"display:flex;flex-direction:column;align-items:center;width:100%;\"]),ri=/*#__PURE__*/$(ti).withConfig({displayName:\"CenteredItemWithPadding\",componentId:\"sc-cb963810-3\"})([\"padding:20px 0;\"]),ai=/*#__PURE__*/$(ti).withConfig({displayName:\"CenteredItemWithGap\",componentId:\"sc-cb963810-4\"})([\"gap:16px;\"]),ni=/*#__PURE__*/$.div.withConfig({displayName:\"FlexContainer\",componentId:\"sc-cb963810-5\"})([\"display:flex;flex-direction:column;width:100%;\"]),oi=/*#__PURE__*/$.div.withConfig({displayName:\"FixedGappedContainer\",componentId:\"sc-cb963810-6\"})([\"display:flex;flex-direction:column;gap:8px;\"]),li=/*#__PURE__*/$.div.withConfig({displayName:\"StyledCalloutSection\",componentId:\"sc-cb963810-8\"})([\"display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;text-align:left;gap:8px;padding:16px;margin-top:16px;margin-bottom:16px;width:100%;background:var(--privy-color-background-2);border-radius:var(--privy-border-radius-md);&& h4{color:var(--privy-color-foreground-3);font-size:14px;text-decoration:underline;font-weight:medium;}&& p{color:var(--privy-color-foreground-3);font-size:14px;}\"]),si=/*#__PURE__*/$.div.withConfig({displayName:\"RefactorSpacerTop\",componentId:\"sc-cb963810-9\"})([\"height:16px;\"]),ci=/*#__PURE__*/$.div.withConfig({displayName:\"RefactorSpacerBottom\",componentId:\"sc-cb963810-10\"})([\"height:12px;\"]),di=/*#__PURE__*/$.div.withConfig({displayName:\"RelativeContainer\",componentId:\"sc-cb963810-11\"})([\"position:relative;\"]),hi=/*#__PURE__*/$.div.withConfig({displayName:\"ConfigurableSpacer\",componentId:\"sc-cb963810-12\"})([\"height:\",\"px;\"],(e=>e.height??\"12\")),pi=/*#__PURE__*/$.div.withConfig({displayName:\"Circle\",componentId:\"sc-cb963810-13\"})([\"background-color:var(--privy-color-accent);display:flex;justify-content:center;align-items:center;border-radius:50%;border-color:white;border-width:2px !important;\"]);let ui=/*#__PURE__*/j([\"from,to{background:var(--privy-color-foreground-4);color:var(--privy-color-foreground-4);}50%{background:var(--privy-color-foreground-accent);color:var(--privy-color-foreground-accent);}\"]);const fi=/*#__PURE__*/V([\"\",\"\"],(e=>e.$isLoading?/*#__PURE__*/V([\"width:35%;animation:\",\" 2s linear infinite;border-radius:var(--privy-border-radius-sm);\"],ui):\"\")),wi=({children:e,color:t,isLoading:i,isPulsing:r,...a})=>/*#__PURE__*/s(gi,{$color:t,$isLoading:i,$isPulsing:r,...a,children:e});let gi=/*#__PURE__*/$.span.withConfig({displayName:\"StyledSpan\",componentId:\"sc-eba15c9-0\"})([\"padding:0.125rem 0.5rem;font-size:0.75rem;font-weight:500;line-height:1.125rem;border-radius:var(--privy-border-radius-sm);display:flex;align-items:center;\",\" \",\"\"],(e=>{let t,i;\"green\"===e.$color&&(t=\"var(--privy-color-success-dark)\",i=\"var(--privy-color-success-light)\"),\"red\"===e.$color&&(t=\"var(--privy-color-error)\",i=\"var(--privy-color-error-light)\"),\"gray\"===e.$color&&(t=\"var(--privy-color-foreground-2)\",i=\"var(--privy-color-background-2)\");let r=/*#__PURE__*/j([\"from,to{background-color:\",\";}50%{background-color:rgba(\",\",0.8);}\"],i,i);/*#__PURE__*/return V([\"color:\",\";background-color:\",\";\",\";\"],t,i,e.$isPulsing&&/*#__PURE__*/V([\"animation:\",\" 3s linear infinite;\"],r))}),fi),mi=/*#__PURE__*/n({});const vi=({children:e})=>{let t=w(),[r,a]=i({});return O(\"login\",{onComplete:({loginAccount:e})=>{e&&\"passkey\"!==e.type&&\"cross_app\"!==e.type&&(\"wallet\"!==e.type||\"privy\"!==e.walletClientType)&&(W.put(yi(t.id),e.type),\"wallet\"===e.type?(W.put(bi(t.id),e.walletClientType),W.put(Ci(t.id),e.chainType),a({accountType:e.type,walletClientType:e.walletClientType,chainType:e.chainType})):(W.del(bi(t.id)),W.del(Ci(t.id)),a({accountType:e.type})))}}),o((()=>{if(!t.id)return;let e=W.get(yi(t.id)),i=W.get(bi(t.id)),r=W.get(Ci(t.id));e&&a(\"wallet\"===e?{accountType:e,walletClientType:i,chainType:r}:{accountType:e})}),[t.id]),/*#__PURE__*/s(mi.Provider,{value:r,children:e})};let yi=e=>`privy:${e}:recent-login-method`,bi=e=>`privy:${e}:recent-login-wallet-client`,Ci=e=>`privy:${e}:recent-login-chain-type`;const xi=()=>a(mi),Ai=e=>{let t=localStorage.getItem(\"-walletlink:https://www.walletlink.org:Addresses\")?.split(\" \").filter((e=>re(e,{strict:!0}))).map((e=>ae(e)));return!!t?.length&&!!e?.linkedAccounts.filter((e=>\"wallet\"==e.type&&t.includes(e.address))).length};const ki=e=>e?.privyErrorCode===X.LINKED_TO_ANOTHER_USER?D.ERROR_USER_EXISTS:e instanceof z&&!e.details.default?e.details:e instanceof _?D.ERROR_TIMED_OUT:e instanceof R?D.ERROR_USER_REJECTED_CONNECTION:e?.privyErrorCode===X.CANNOT_LINK_MORE_OF_TYPE?D.ERROR_USER_LIMIT_REACHED:D.ERROR_WALLET_CONNECTION,Ii=()=>{let e,[r,a]=i(!1),[n,h]=i(!1),[p,u]=i(void 0),{authenticated:w,logout:g}=v(),{app:m,navigate:C,navigateBack:x,lastScreen:A,currentScreen:k,setModalData:I,data:T}=f(),{getAuthFlow:S,walletConnectionStatus:E,closePrivyModal:M,initLoginWithWallet:N,loginWithWallet:L,updateWallets:P,createAnalyticsEvent:W}=Y(),{walletConnectors:F}=v(),[_,R]=i(0),{user:O}=v(),[z]=i(O?.linkedAccounts.length||0),[U,$]=i(\"\"),[V,j]=i(\"\"),[H,Z]=i(!1),{hasTabbedAway:G}=function(){let[e,t]=i(!1),r=l((()=>{document.hidden&&t(!0)}),[]);return o((()=>(document.addEventListener(\"visibilitychange\",r),()=>document.removeEventListener(\"visibilitychange\",r))),[r]),{hasTabbedAway:e,reset:()=>t(!1)}}(),{enabled:q,token:J}=Ye(),K=ct(E?.connector?.walletClientType||\"unknown\"),ee=B&&\"wallet_connect_v2\"===E?.connector?.connectorType||B&&\"coinbase_wallet\"===E?.connector?.connectorType||B&&\"injected\"===E?.connector?.connectorType&&\"phantom\"===E?.connector?.walletClientType,te=\"connected\"===E?.status,ie=\"switching_to_supported_chain\"===E?.status;o((()=>{let e=S(),t=e instanceof Ze||e instanceof Ge?e:void 0;te&&!t&&(!q||J||w?N(E.connectedWallet,J,T?.login?.disableSignup).then((()=>{Z(!0)})):(I({captchaModalData:{callback:e=>N(E.connectedWallet,e,T?.login?.disableSignup).then((()=>{Z(!0)})),userIntentRequired:!1,onSuccessNavigateTo:y.AWAITING_CONNECTION,onErrorNavigateTo:y.ERROR_SCREEN}}),C(y.CAPTCHA_SCREEN,!1))),t&&ee&&te&&!t.preparedMessage?t.buildMessage():t&&!ee&&te&&(n||(async()=>{h(!0),u(void 0);try{\"wallet_connect_v2\"===E?.connector?.connectorType&&\"metamask\"===E?.connector?.walletClientType&&await Ee(2500),await ae()}catch(e){console.warn(\"Auto-prompted signature failed\",e)}finally{h(!1)}})())}),[_,te,H]),o((()=>{if(O&&r){let e=b-500;if(m?.legal.requireUsersAcceptTerms&&!O.hasAcceptedTerms){let t=setTimeout((()=>{C(y.AFFIRMATIVE_CONSENT_SCREEN)}),e);return()=>clearTimeout(t)}if(Kt(O,m.embeddedWallets)){let t=setTimeout((()=>{I({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),W({eventName:\"embedded_wallet_creation_failure_logout\",payload:{error:e,screen:\"ConnectionStatusScreen\"}}),g()},callAuthOnSuccessOnClose:!0}}),C(y.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)}),e);return()=>clearTimeout(t)}P();let t=setTimeout((()=>M({shouldCallAuthOnSuccess:!0,isSuccess:!0})),b);return()=>clearTimeout(t)}}),[O,r]);let re=e=>{if(e?.privyErrorCode!==X.ALLOWLIST_REJECTED){if(e?.privyErrorCode===X.USER_LIMIT_REACHED)return console.error(new Q(e).toString()),void C(y.USER_LIMIT_REACHED_SCREEN);if(e?.privyErrorCode!==X.USER_DOES_NOT_EXIST)return e?.privyErrorCode===X.ACCOUNT_TRANSFER_REQUIRED&&e.data?.data?.nonce?(I({accountTransfer:{nonce:e.data?.data?.nonce,account:S()?.meta.address,displayName:e.data?.data?.account?.displayName,externalWalletMetadata:{walletClientType:S()?.meta.walletClientType,chainId:S()?.meta.chainId,connectorType:S()?.meta.connectorType},linkMethod:\"siwe\",embeddedWalletAddress:e.data?.data?.otherUser?.embeddedWalletAddress}}),void C(y.LINK_CONFLICT_SCREEN)):void u(ki(e));C(y.ACCOUNT_NOT_FOUND_SCREEN)}else C(y.ALLOWLIST_REJECTION_SCREEN)};async function ae(){try{await L(),a(!0)}catch(e){re(e)}finally{h(!1)}}o((()=>{E?.connectError&&re(E?.connectError)}),[E]),((e,i)=>{let r=t((()=>{}));o((()=>{r.current=e})),o((()=>{if(null!==i){let e=setInterval((()=>r.current()),i||0);return()=>clearInterval(e)}}),[i])})((()=>{let e=\"wallet_connect_v2\"===ne&&E?.connector instanceof pt?E.connector.redirectUri:void 0;e&&$(e);let t=\"wallet_connect_v2\"===ne&&E?.connector instanceof pt?E.connector.fallbackUniversalRedirectUri:void 0;t&&j(t)}),E?.connector instanceof pt&&!U?500:null);let ne=E?.connector?.connectorType||\"injected\",oe=E?.connector?.walletClientType||\"unknown\",le=K?.metadata?.shortName||K?.name||E?.connector?.walletBranding.name||\"Browser Extension\",se=K?.image_url?.md||E?.connector?.walletBranding.icon||(e=>/*#__PURE__*/s(at,{...e})),ce=\"Browser Extension\"===le?le.toLowerCase():le;e=r?`Successfully connected with ${ce}`:p?p.message:ie?\"Switching networks\":te?n&&ee?\"Signing\":\"Sign to verify\":`Waiting for ${ce}`;let de=\"Don’t see your wallet? Check your other browser windows.\";r?de=z===(O?.linkedAccounts.length||0)?\"Wallet was already linked.\":\"You’re good to go!\":_>=2&&p?de=\"Unable to connect wallet\":p?de=p.detail:ie?de=\"Switch your wallet to the requested network.\":te&&ee?de=\"Sign the message in your wallet to verify it belongs to you.\":\"metamask\"===oe&&B?de=\"Click continue to open and connect MetaMask.\":\"metamask\"===oe?de=\"For the best experience, connect only one wallet at a time.\":\"wallet_connect\"===ne?de=\"Open your mobile wallet app to continue\":\"coinbase_wallet\"!==ne||Ae()||(de=Ai(O)?\"Continue with the Coinbase app. Not the right wallet? Reset your connection below.\":\"Open the Coinbase app on your phone to continue.\");let he=F?.walletConnectors?.find((e=>\"coinbase_wallet\"===e.walletClientType)),pe=\"coinbase_wallet\"===oe&&(Ai(O)||p===D.ERROR_USER_EXISTS);/*#__PURE__*/return c(d,{children:[/*#__PURE__*/s(Ft,{backFn:A&&k!==A?x:void 0}),/*#__PURE__*/c(Ti,{children:[/*#__PURE__*/s(Ei,{walletLogo:se,success:r,fail:!!p}),/*#__PURE__*/c(oi,{children:[/*#__PURE__*/s(\"h3\",{children:e}),/*#__PURE__*/s(\"p\",{children:de}),te||!U||G?null:/*#__PURE__*/c(\"p\",{children:[\"Still here?\",\" \",/*#__PURE__*/s(\"a\",{href:U,target:\"_blank\",style:{textDecoration:\"underline\"},children:\"Try connecting again\"}),V&&/*#__PURE__*/c(d,{children:[\" \",\"or\",\" \",/*#__PURE__*/s(\"a\",{href:V,target:\"_blank\",style:{textDecoration:\"underline\"},children:\"use this different link\"})]})]})]}),pe?/*#__PURE__*/s(bt,{onClick:()=>he&&he?.disconnect(),disabled:r,children:\"Use a different wallet\"}):p==D.ERROR_USER_EXISTS&&k!==A?/*#__PURE__*/s(bt,{onClick:x,children:\"Use a different wallet\"}):te&&!r&&ee?/*#__PURE__*/s(bt,{onClick:()=>{h(!0),ae()},disabled:n,children:n?\"Signing\":\"Sign with your wallet\"}):!r&&p?.retryable&&_<2?/*#__PURE__*/s(bt,{onClick:()=>{R(_+1),u(void 0),te?(h(!0),ae()):E?.connectRetry()},disabled:!r&&(!p?.retryable||_>=2),children:\"Retry\"}):r||p?null:/*#__PURE__*/s(bt,{onClick:()=>{},disabled:!0,children:\"Connecting\"})]}),/*#__PURE__*/s(Ht,{})]})};let Ti=/*#__PURE__*/$.div.withConfig({displayName:\"ConnectContainer\",componentId:\"sc-31ab032c-0\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;\"]),Si=/*#__PURE__*/$.div.withConfig({displayName:\"StackedContainer\",componentId:\"sc-31ab032c-1\"})([\"display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:82px;> div{position:relative;}> div > span{position:absolute;left:-41px;top:-41px;}> div > :last-child{position:absolute;left:-19px;top:-19px;}\"]);const Ei=e=>{let t=e.walletLogo;/*#__PURE__*/return s(d,{children:/*#__PURE__*/s(Si,{children:/*#__PURE__*/c(\"div\",{children:[/*#__PURE__*/s(ft,{success:e.success,fail:e.fail}),\"string\"==typeof t?\n/*#__PURE__*/s(\"span\",{style:{background:`url('${t}') 0 0 / contain`,height:\"38px\",width:\"38px\",borderRadius:\"6px\",margin:\"auto\",backgroundSize:\"contain\"}}):/*#__PURE__*/s(t,{style:{width:\"38px\",height:\"38px\"}})]})})})};function Mi(e){let{logout:t}=a(C);return O(\"logout\",e),{logout:t}}const Ni=/*#__PURE__*/$.div.withConfig({displayName:\"Column\",componentId:\"sc-cfc52180-0\"})([\"display:flex;flex-direction:column;\"]),Li=/*#__PURE__*/$.span.withConfig({displayName:\"ErrorMessage\",componentId:\"sc-fcb8cd50-0\"})([\"text-align:left;font-size:0.75rem;font-weight:500;line-height:1.125rem;color:var(--privy-color-error);\"]),Pi=/*#__PURE__*/$.span.withConfig({displayName:\"LabelXs\",componentId:\"sc-4c43f9fd-0\"})([\"color:var(--privy-color-foreground-3);font-size:0.75rem;font-weight:500;line-height:1.125rem;\"]),Wi=/*#__PURE__*/V([\"&&{border-width:1px;padding:0.5rem 1rem;}width:100%;text-align:left;border:solid 1px var(--privy-color-foreground-4);border-radius:var(--privy-border-radius-md);display:flex;justify-content:space-between;align-items:center;\",\"\"],(e=>\"error\"===e.$state?\"border-color: var(--privy-color-error);\":\"\")),Fi=/*#__PURE__*/$.div.withConfig({displayName:\"Box\",componentId:\"sc-1660059c-0\"})([\"\",\"\"],Wi),_i=({errMsg:e,balance:t,address:i,isLoading:r,className:a,title:n,isPulsing:o,showIcon:l,statusColor:h=\"green\"})=>{let p;return p=h||(e?\"red\":\"green\"),/*#__PURE__*/c(d,{children:[/*#__PURE__*/c(Fi,{className:a,$state:e?\"error\":void 0,children:[/*#__PURE__*/c(Ni,{children:[/*#__PURE__*/s(Pi,{children:n||\"Pay with\"}),/*#__PURE__*/s(Zt,{address:i,showCopyIcon:l||!!e})]}),void 0!==t&&/*#__PURE__*/s(wi,{isLoading:r,isPulsing:o,color:p,children:t})]}),e&&/*#__PURE__*/s(Li,{style:{marginTop:\"0.25rem\"},children:e})]})},Ri=/*#__PURE__*/$.span.withConfig({displayName:\"Subtitle\",componentId:\"sc-7a11f796-0\"})([\"margin-top:4px;color:var(--privy-color-foreground);text-align:center;font-size:0.875rem;font-weight:400;line-height:1.375rem;&& a{color:var(--privy-color-accent);}\"]),Oi=/*#__PURE__*/$.span.withConfig({displayName:\"Title\",componentId:\"sc-66de63c-0\"})([\"color:var(--privy-color-foreground);font-size:1.125rem;font-weight:600;line-height:1.875rem;text-align:center;\"]),Di=({color:e,...t})=>/*#__PURE__*/s(\"svg\",{version:\"1.1\",id:\"Layer_1\",xmlns:\"http://www.w3.org/2000/svg\",xmlnsXlink:\"http://www.w3.org/1999/xlink\",x:\"0px\",y:\"0px\",viewBox:\"0 0 115.77 122.88\",xmlSpace:\"preserve\",...t,children:/*#__PURE__*/s(\"g\",{children:/*#__PURE__*/s(\"path\",{fill:e||\"currentColor\",className:\"st0\",d:\"M89.62,13.96v7.73h12.19h0.01v0.02c3.85,0.01,7.34,1.57,9.86,4.1c2.5,2.51,4.06,5.98,4.07,9.82h0.02v0.02 v73.27v0.01h-0.02c-0.01,3.84-1.57,7.33-4.1,9.86c-2.51,2.5-5.98,4.06-9.82,4.07v0.02h-0.02h-61.7H40.1v-0.02 c-3.84-0.01-7.34-1.57-9.86-4.1c-2.5-2.51-4.06-5.98-4.07-9.82h-0.02v-0.02V92.51H13.96h-0.01v-0.02c-3.84-0.01-7.34-1.57-9.86-4.1 c-2.5-2.51-4.06-5.98-4.07-9.82H0v-0.02V13.96v-0.01h0.02c0.01-3.85,1.58-7.34,4.1-9.86c2.51-2.5,5.98-4.06,9.82-4.07V0h0.02h61.7 h0.01v0.02c3.85,0.01,7.34,1.57,9.86,4.1c2.5,2.51,4.06,5.98,4.07,9.82h0.02V13.96L89.62,13.96z M79.04,21.69v-7.73v-0.02h0.02 c0-0.91-0.39-1.75-1.01-2.37c-0.61-0.61-1.46-1-2.37-1v0.02h-0.01h-61.7h-0.02v-0.02c-0.91,0-1.75,0.39-2.37,1.01 c-0.61,0.61-1,1.46-1,2.37h0.02v0.01v64.59v0.02h-0.02c0,0.91,0.39,1.75,1.01,2.37c0.61,0.61,1.46,1,2.37,1v-0.02h0.01h12.19V35.65 v-0.01h0.02c0.01-3.85,1.58-7.34,4.1-9.86c2.51-2.5,5.98-4.06,9.82-4.07v-0.02h0.02H79.04L79.04,21.69z M105.18,108.92V35.65v-0.02 h0.02c0-0.91-0.39-1.75-1.01-2.37c-0.61-0.61-1.46-1-2.37-1v0.02h-0.01h-61.7h-0.02v-0.02c-0.91,0-1.75,0.39-2.37,1.01 c-0.61,0.61-1,1.46-1,2.37h0.02v0.01v73.27v0.02h-0.02c0,0.91,0.39,1.75,1.01,2.37c0.61,0.61,1.46,1,2.37,1v-0.02h0.01h61.7h0.02 v0.02c0.91,0,1.75-0.39,2.37-1.01c0.61-0.61,1-1.46,1-2.37h-0.02V108.92L105.18,108.92z\"})})}),zi=()=>/*#__PURE__*/s(\"svg\",{width:\"200\",height:\"200\",viewBox:\"-77 -77 200 200\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",style:{height:\"28px\",width:\"28px\"},children:/*#__PURE__*/s(\"rect\",{width:\"50\",height:\"50\",fill:\"black\",rx:10,ry:10})});let Ui=(e,t,i,r,a)=>{for(let n=t;n<t+r;n++)for(let t=i;t<i+a;t++){let i=e?.[t];i&&i[n]&&(i[n]=0)}return e},Bi=({x:e,y:t,cellSize:i,bgColor:r,fgColor:a})=>\n/*#__PURE__*/s(d,{children:[0,1,2].map((n=>/*#__PURE__*/s(\"circle\",{r:i*(7-2*n)/2,cx:e+7*i/2,cy:t+7*i/2,fill:n%2!=0?r:a},`finder-${e}-${t}-${n}`)))}),$i=({cellSize:e,matrixSize:t,bgColor:i,fgColor:r})=>/*#__PURE__*/s(d,{children:[[0,0],[(t-7)*e,0],[0,(t-7)*e]].map((([t,a])=>/*#__PURE__*/s(Bi,{x:t,y:a,cellSize:e,bgColor:i,fgColor:r},`finder-${t}-${a}`)))}),Vi=({matrix:t,cellSize:i,color:r})=>/*#__PURE__*/s(d,{children:t.map(((t,a)=>t.map(((t,n)=>t?/*#__PURE__*/s(\"rect\",{height:i-.4,width:i-.4,x:a*i+.1*i,y:n*i+.1*i,rx:.5*i,ry:.5*i,fill:r},`cell-${a}-${n}`):/*#__PURE__*/s(e.Fragment,{},`circle-${a}-${n}`)))))}),ji=({cellSize:e,matrixSize:t,element:i,sizePercentage:r,bgColor:a})=>{if(!i)/*#__PURE__*/return s(d,{});let n=t*(r||.14),o=Math.floor(t/2-n/2),l=Math.floor(t/2+n/2);(l-o)%2!=t%2&&(l+=1);let h=(l-o)*e,p=h-.2*h,u=o*e;/*#__PURE__*/return c(d,{children:[/*#__PURE__*/s(\"rect\",{x:o*e,y:o*e,width:h,height:h,fill:a}),/*#__PURE__*/s(i,{x:u+.1*h,y:u+.1*h,height:p,width:p})]})},Hi=e=>{let t=e.outputSize,i=((e,t)=>{let i=ge.create(e,{errorCorrectionLevel:t}).modules,r=((e,t)=>{let i=e.slice(0),r=[];for(;i.length;)r.push(i.splice(0,t));return r})(Array.from(i.data),i.size);return r=Ui(r,0,0,7,7),r=Ui(r,r.length-7,0,7,7),Ui(r,0,r.length-7,7,7)})(e.url,e.errorCorrectionLevel),r=t/i.length,a=function(e,{min:t,max:i}){return Math.min(Math.max(e,t),i)}(2*r,{min:.025*t,max:.036*t});/*#__PURE__*/return c(\"svg\",{height:e.outputSize,width:e.outputSize,viewBox:`0 0 ${e.outputSize} ${e.outputSize}`,style:{height:\"100%\",width:\"100%\",padding:`${a}px`},children:[/*#__PURE__*/s(Vi,{matrix:i,cellSize:r,color:e.fgColor}),/*#__PURE__*/s($i,{cellSize:r,matrixSize:i.length,fgColor:e.fgColor,bgColor:e.bgColor}),/*#__PURE__*/s(ji,{cellSize:r,element:e.logo?.element,bgColor:e.bgColor,matrixSize:i.length})]})},Zi=/*#__PURE__*/$.div.attrs({className:\"ph-no-capture\"}).withConfig({displayName:\"QrContainer\",componentId:\"sc-597e27f3-0\"})([\"display:flex;justify-content:center;align-items:center;height:\",\";width:\",\";margin:auto;background-color:\",\";&&{border-width:2px;border-color:\",\";border-radius:var(--privy-border-radius-md);}\"],(e=>`${e.$size}px`),(e=>`${e.$size}px`),(e=>e.$bgColor),(e=>e.$borderColor));const Gi=e=>{let{appearance:t}=w(),i=e.bgColor||\"#FFFFFF\",r=e.fgColor||\"#000000\",a=e.size||160,n=\"dark\"===t.palette.colorScheme?i:r;/*#__PURE__*/return s(Zi,{$size:a,$bgColor:i,$fgColor:r,$borderColor:n,children:/*#__PURE__*/s(Hi,{url:e.url,logo:{element:e.squareLogoElement??zi},outputSize:a,bgColor:i,fgColor:r,errorCorrectionLevel:e.errorCorrectionLevel||\"Q\"})})},qi=/*#__PURE__*/$.span.withConfig({displayName:\"Rows\",componentId:\"sc-b764aab6-0\"})([\"display:flex;flex-direction:column;gap:0.35rem;width:100%;\"]),Xi=/*#__PURE__*/$.span.withConfig({displayName:\"Row\",componentId:\"sc-b764aab6-1\"})([\"display:flex;width:100%;justify-content:space-between;gap:0.5rem;\"]),Ji=e=>/*#__PURE__*/c(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",version:\"1.1\",id:\"Layer_1\",x:\"0px\",y:\"0px\",viewBox:\"0 0 397.7 311.7\",enableBackground:\"new 0 0 397.7 311.7\",xmlSpace:\"preserve\",...e,children:[/*#__PURE__*/c(\"linearGradient\",{id:\"SVGID_1_\",gradientUnits:\"userSpaceOnUse\",x1:\"360.8791\",y1:\"351.4553\",x2:\"141.213\",y2:\"-69.2936\",gradientTransform:\"matrix(1 0 0 -1 0 314)\",children:[/*#__PURE__*/s(\"stop\",{offset:\"0\",stopColor:\"#00FFA3\"}),/*#__PURE__*/s(\"stop\",{offset:\"1\",stopColor:\"#DC1FFF\"})]}),/*#__PURE__*/s(\"path\",{d:\"M64.6,237.9c2.4-2.4,5.7-3.8,9.2-3.8h317.4c5.8,0,8.7,7,4.6,11.1l-62.7,62.7c-2.4,2.4-5.7,3.8-9.2,3.8H6.5 c-5.8,0-8.7-7-4.6-11.1L64.6,237.9z\",fill:\"url(#SVGID_1_)\"}),/*#__PURE__*/c(\"linearGradient\",{id:\"SVGID_2_\",gradientUnits:\"userSpaceOnUse\",x1:\"264.8291\",y1:\"401.6014\",x2:\"45.163\",y2:\"-19.1475\",gradientTransform:\"matrix(1 0 0 -1 0 314)\",children:[/*#__PURE__*/s(\"stop\",{offset:\"0\",stopColor:\"#00FFA3\"}),/*#__PURE__*/s(\"stop\",{offset:\"1\",stopColor:\"#DC1FFF\"})]}),/*#__PURE__*/s(\"path\",{d:\"M64.6,3.8C67.1,1.4,70.4,0,73.8,0h317.4c5.8,0,8.7,7,4.6,11.1l-62.7,62.7c-2.4,2.4-5.7,3.8-9.2,3.8H6.5 c-5.8,0-8.7-7-4.6-11.1L64.6,3.8z\",fill:\"url(#SVGID_2_)\"}),/*#__PURE__*/c(\"linearGradient\",{id:\"SVGID_3_\",gradientUnits:\"userSpaceOnUse\",x1:\"312.5484\",y1:\"376.688\",x2:\"92.8822\",y2:\"-44.061\",gradientTransform:\"matrix(1 0 0 -1 0 314)\",children:[/*#__PURE__*/s(\"stop\",{offset:\"0\",stopColor:\"#00FFA3\"}),/*#__PURE__*/s(\"stop\",{offset:\"1\",stopColor:\"#DC1FFF\"})]}),/*#__PURE__*/s(\"path\",{d:\"M333.1,120.1c-2.4-2.4-5.7-3.8-9.2-3.8H6.5c-5.8,0-8.7,7-4.6,11.1l62.7,62.7c2.4,2.4,5.7,3.8,9.2,3.8h317.4 c5.8,0,8.7-7,4.6-11.1L333.1,120.1z\",fill:\"url(#SVGID_3_)\"})]});let Yi={[x.id]:e=>/*#__PURE__*/s(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",xmlnsXlink:\"http://www.w3.org/1999/xlink\",version:\"1.1\",id:\"Layer_1\",x:\"0px\",y:\"0px\",viewBox:\"0 0 2500 2500\",xmlSpace:\"preserve\",...e,children:/*#__PURE__*/s(\"g\",{id:\"Layer_x0020_1\",children:/*#__PURE__*/c(\"g\",{id:\"_2405588477232\",children:[/*#__PURE__*/s(\"rect\",{fill:\"none\",width:\"2500\",height:\"2500\"}),/*#__PURE__*/s(\"g\",{children:/*#__PURE__*/c(\"g\",{children:[/*#__PURE__*/s(\"path\",{fill:\"#213147\",d:\"M226,760v980c0,63,33,120,88,152l849,490c54,31,121,31,175,0l849-490c54-31,88-89,88-152V760 c0-63-33-120-88-152l-849-490c-54-31-121-31-175,0L314,608c-54,31-87,89-87,152H226z\"}),/*#__PURE__*/s(\"g\",{children:/*#__PURE__*/c(\"g\",{children:[/*#__PURE__*/s(\"g\",{children:/*#__PURE__*/s(\"path\",{fill:\"#12AAFF\",d:\"M1435,1440l-121,332c-3,9-3,19,0,29l208,571l241-139l-289-793C1467,1422,1442,1422,1435,1440z\"})}),/*#__PURE__*/s(\"g\",{children:/*#__PURE__*/s(\"path\",{fill:\"#12AAFF\",d:\"M1678,882c-7-18-32-18-39,0l-121,332c-3,9-3,19,0,29l341,935l241-139L1678,883V882z\"})})]})}),/*#__PURE__*/s(\"g\",{children:/*#__PURE__*/s(\"path\",{fill:\"#9DCCED\",d:\"M1250,155c6,0,12,2,17,5l918,530c11,6,17,18,17,30v1060c0,12-7,24-17,30l-918,530c-5,3-11,5-17,5 s-12-2-17-5l-918-530c-11-6-17-18-17-30V719c0-12,7-24,17-30l918-530c5-3,11-5,17-5l0,0V155z M1250,0c-33,0-65,8-95,25L237,555 c-59,34-95,96-95,164v1060c0,68,36,130,95,164l918,530c29,17,62,25,95,25s65-8,95-25l918-530c59-34,95-96,95-164V719 c0-68-36-130-95-164L1344,25c-29-17-62-25-95-25l0,0H1250z\"})}),/*#__PURE__*/s(\"polygon\",{fill:\"#213147\",points:\"642,2179 727,1947 897,2088 738,2234 \"}),/*#__PURE__*/c(\"g\",{children:[/*#__PURE__*/s(\"path\",{fill:\"#FFFFFF\",d:\"M1172,644H939c-17,0-33,11-39,27L401,2039l241,139l550-1507c5-14-5-28-19-28L1172,644z\"}),/*#__PURE__*/s(\"path\",{fill:\"#FFFFFF\",d:\"M1580,644h-233c-17,0-33,11-39,27L738,2233l241,139l620-1701c5-14-5-28-19-28V644z\"})]})]})})]})})}),[A.id]:e=>/*#__PURE__*/c(\"svg\",{width:\"1503\",height:\"1504\",viewBox:\"0 0 1503 1504\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",...e,children:[/*#__PURE__*/s(\"rect\",{x:\"287\",y:\"258\",width:\"928\",height:\"844\",fill:\"white\"}),/*#__PURE__*/s(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M1502.5 752C1502.5 1166.77 1166.27 1503 751.5 1503C336.734 1503 0.5 1166.77 0.5 752C0.5 337.234 336.734 1 751.5 1C1166.27 1 1502.5 337.234 1502.5 752ZM538.688 1050.86H392.94C362.314 1050.86 347.186 1050.86 337.962 1044.96C327.999 1038.5 321.911 1027.8 321.173 1015.99C320.619 1005.11 328.184 991.822 343.312 965.255L703.182 330.935C718.495 303.999 726.243 290.531 736.021 285.55C746.537 280.2 759.083 280.2 769.599 285.55C779.377 290.531 787.126 303.999 802.438 330.935L876.42 460.079L876.797 460.738C893.336 489.635 901.723 504.289 905.385 519.669C909.443 536.458 909.443 554.169 905.385 570.958C901.695 586.455 893.393 601.215 876.604 630.549L687.573 964.702L687.084 965.558C670.436 994.693 661.999 1009.46 650.306 1020.6C637.576 1032.78 622.263 1041.63 605.474 1046.62C590.161 1050.86 573.004 1050.86 538.688 1050.86ZM906.75 1050.86H1115.59C1146.4 1050.86 1161.9 1050.86 1171.13 1044.78C1181.09 1038.32 1187.36 1027.43 1187.92 1015.63C1188.45 1005.1 1181.05 992.33 1166.55 967.307C1166.05 966.455 1165.55 965.588 1165.04 964.706L1060.43 785.75L1059.24 783.735C1044.54 758.877 1037.12 746.324 1027.59 741.472C1017.08 736.121 1004.71 736.121 994.199 741.472C984.605 746.453 976.857 759.552 961.544 785.934L857.306 964.891L856.949 965.507C841.69 991.847 834.064 1005.01 834.614 1015.81C835.352 1027.62 841.44 1038.5 851.402 1044.96C860.443 1050.86 875.94 1050.86 906.75 1050.86Z\",fill:\"#E84142\"})]}),[k.id]:e=>/*#__PURE__*/c(\"svg\",{width:\"146\",height:\"146\",viewBox:\"0 0 146 146\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",...e,children:[/*#__PURE__*/s(\"circle\",{cx:\"73\",cy:\"73\",r:\"73\",fill:\"#0052FF\"}),/*#__PURE__*/s(\"path\",{d:\"M73.323 123.729C101.617 123.729 124.553 100.832 124.553 72.5875C124.553 44.343 101.617 21.4463 73.323 21.4463C46.4795 21.4463 24.4581 42.0558 22.271 68.2887H89.9859V76.8864H22.271C24.4581 103.119 46.4795 123.729 73.323 123.729Z\",fill:\"white\"})]}),[I.id]:e=>/*#__PURE__*/c(\"svg\",{fill:\"none\",height:\"400\",viewBox:\"0 0 400 400\",width:\"400\",xmlns:\"http://www.w3.org/2000/svg\",...e,children:[/*#__PURE__*/s(\"path\",{d:\"m0 0h400v400h-400z\",fill:\"#fcff52\"}),/*#__PURE__*/s(\"path\",{d:\"m300 100h-200v200h199.996v-69.813h-33.191c-11.442 25.468-37.194 43.206-66.665 43.206-40.63 0-73.533-33.187-73.533-73.533s32.903-73.249 73.533-73.249c30.043 0 55.795 18.313 67.24 44.349h32.62z\",fill:\"#000\"})]}),[T.id]:e=>/*#__PURE__*/c(\"svg\",{width:\"200\",height:\"208\",viewBox:\"0 0 200 208\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",...e,children:[/*#__PURE__*/s(\"rect\",{width:\"199.4\",height:\"207.623\",fill:\"#121212\"}),/*#__PURE__*/c(\"g\",{\"clip-path\":\"url(#clip0_2303_643)\",children:[/*#__PURE__*/s(\"path\",{d:\"M132.369 155.99H49.7001V68.8854H68.6148V139.109H132.369V155.981V155.99Z\",fill:\"white\"}),/*#__PURE__*/s(\"path\",{d:\"M132.369 85.7575C141.687 85.7575 149.241 78.2036 149.241 68.8855C149.241 59.5673 141.687 52.0134 132.369 52.0134C123.05 52.0134 115.497 59.5673 115.497 68.8855C115.497 78.2036 123.05 85.7575 132.369 85.7575Z\",fill:\"white\"})]}),/*#__PURE__*/s(\"defs\",{children:/*#__PURE__*/s(\"clipPath\",{id:\"clip0_2303_643\",children:/*#__PURE__*/s(\"rect\",{width:\"99.5407\",height:\"103.977\",fill:\"white\",transform:\"translate(49.7001 52.0134)\"})})})]}),[S.id]:e=>/*#__PURE__*/c(\"svg\",{version:\"1.1\",id:\"Layer_1\",xmlns:\"http://www.w3.org/2000/svg\",xmlnsXlink:\"http://www.w3.org/1999/xlink\",x:\"0px\",y:\"0px\",viewBox:\"0 0 327.5 533.3\",enableBackground:\"new 0 0 327.5 533.3;\",xmlSpace:\"preserve\",...e,children:[/*#__PURE__*/s(\"path\",{fill:\"#8492B2\",d:\"M163.7,197.2V0L0,271.6L163.7,197.2z\"}),/*#__PURE__*/s(\"path\",{fill:\"#62688F\",d:\"M163.7,368.4V197.2L0,271.6L163.7,368.4z M163.7,197.2l163.7,74.4L163.7,0V197.2z\"}),/*#__PURE__*/s(\"path\",{fill:\"#454A75\",d:\"M163.7,197.2v171.2l163.7-96.8L163.7,197.2z\"}),/*#__PURE__*/s(\"path\",{fill:\"#8492B2\",d:\"M163.7,399.4L0,302.7l163.7,230.7V399.4z\"}),/*#__PURE__*/s(\"path\",{fill:\"#62688F\",d:\"M327.5,302.7l-163.8,96.7v134L327.5,302.7z\"})]}),[E.id]:e=>/*#__PURE__*/c(\"svg\",{width:\"500\",height:\"500\",viewBox:\"0 0 500 500\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",...e,children:[/*#__PURE__*/s(\"circle\",{cx:\"250\",cy:\"250\",r:\"250\",fill:\"#FF0420\"}),/*#__PURE__*/s(\"path\",{d:\"M177.133 316.446C162.247 316.446 150.051 312.943 140.544 305.938C131.162 298.808 126.471 288.676 126.471 275.541C126.471 272.789 126.784 269.411 127.409 265.408C129.036 256.402 131.35 245.581 134.352 232.947C142.858 198.547 164.812 181.347 200.213 181.347C209.845 181.347 218.476 182.973 226.107 186.225C233.738 189.352 239.742 194.106 244.12 200.486C248.498 206.74 250.688 214.246 250.688 223.002C250.688 225.629 250.375 228.944 249.749 232.947C247.873 244.08 245.621 254.901 242.994 265.408C238.616 282.546 231.048 295.368 220.29 303.874C209.532 312.255 195.147 316.446 177.133 316.446ZM179.76 289.426C186.766 289.426 192.707 287.362 197.586 283.234C202.59 279.106 206.155 272.789 208.281 264.283C211.158 252.524 213.348 242.266 214.849 233.51C215.349 230.883 215.599 228.194 215.599 225.441C215.599 214.058 209.657 208.366 197.774 208.366C190.768 208.366 184.764 210.43 179.76 214.558C174.882 218.687 171.379 225.004 169.253 233.51C167.001 241.891 164.749 252.149 162.498 264.283C161.997 266.784 161.747 269.411 161.747 272.163C161.747 283.672 167.752 289.426 179.76 289.426Z\",fill:\"white\"}),/*#__PURE__*/s(\"path\",{d:\"M259.303 314.57C257.927 314.57 256.863 314.132 256.113 313.256C255.487 312.255 255.3 311.13 255.55 309.879L281.444 187.914C281.694 186.538 282.382 185.412 283.508 184.536C284.634 183.661 285.822 183.223 287.073 183.223H336.985C350.87 183.223 362.003 186.1 370.384 191.854C378.891 197.609 383.144 205.927 383.144 216.81C383.144 219.937 382.769 223.19 382.018 226.567C378.891 240.953 372.574 251.586 363.067 258.466C353.685 265.346 340.8 268.786 324.413 268.786H299.082L290.451 309.879C290.2 311.255 289.512 312.38 288.387 313.256C287.261 314.132 286.072 314.57 284.822 314.57H259.303ZM325.727 242.892C330.98 242.892 335.546 241.453 339.424 238.576C343.427 235.699 346.054 231.571 347.305 226.192C347.68 224.065 347.868 222.189 347.868 220.563C347.868 216.935 346.805 214.183 344.678 212.307C342.551 210.305 338.924 209.305 333.795 209.305H311.278L304.148 242.892H325.727Z\",fill:\"white\"})]}),[M.id]:e=>/*#__PURE__*/c(\"svg\",{width:\"360\",height:\"360\",viewBox:\"0 0 360 360\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",...e,children:[/*#__PURE__*/s(\"rect\",{width:\"360\",height:\"360\",rx:\"180\",fill:\"#6C00F6\"}),/*#__PURE__*/s(\"path\",{d:\"M157.743 154.241L141.052 144.58L90.9766 173.561V231.519L141.052 260.5L191.13 231.519V141.359L218.948 125.26L246.77 141.359V173.561L218.948 189.66L202.257 180.002V205.759L218.948 215.42L269.024 186.439V128.481L218.948 99.5L168.873 128.481V218.641L141.052 234.74L113.233 218.641V186.439L141.052 170.34L157.743 179.998V154.241Z\",fill:\"white\"})]}),[N.id]:e=>/*#__PURE__*/c(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"30\",height:\"30\",viewBox:\"0 0 30 30\",fill:\"none\",...e,children:[/*#__PURE__*/s(\"g\",{clipPath:\"url(#clip0)\",children:/*#__PURE__*/s(\"g\",{clipPath:\"url(#clip1)\",children:/*#__PURE__*/s(\"path\",{d:\"M14.9188 29.8373C6.67944 29.8373 0.00012207 23.1581 0.00012207 14.9187C0.00012207 6.67931 6.67944 0 14.9188 0C23.1581 0 29.8373 6.67931 29.8373 14.9187C29.8373 23.1581 23.1581 29.8373 14.9188 29.8373Z\",fill:\"url(#paint0)\"})})}),/*#__PURE__*/c(\"defs\",{children:[/*#__PURE__*/c(\"radialGradient\",{id:\"paint0\",cx:\"0\",cy:\"0\",r:\"1\",gradientUnits:\"userSpaceOnUse\",gradientTransform:\"translate(21.6921 8.02215) rotate(180) scale(25.2008)\",children:[/*#__PURE__*/s(\"stop\",{offset:\"0.00682297\",stopColor:\"#F2CEFE\"}),/*#__PURE__*/s(\"stop\",{offset:\"0.1913\",stopColor:\"#AFBAF1\"}),/*#__PURE__*/s(\"stop\",{offset:\"0.4982\",stopColor:\"#4281D3\"}),/*#__PURE__*/s(\"stop\",{offset:\"0.666667\",stopColor:\"#2E427D\"}),/*#__PURE__*/s(\"stop\",{offset:\"0.822917\",stopColor:\"#230101\"}),/*#__PURE__*/s(\"stop\",{offset:\"1\",stopColor:\"#8F6B40\"})]}),/*#__PURE__*/s(\"clipPath\",{id:\"clip0\",children:/*#__PURE__*/s(\"rect\",{width:\"30\",height:\"30\",fill:\"white\"})}),/*#__PURE__*/s(\"clipPath\",{id:\"clip1\",children:/*#__PURE__*/s(\"rect\",{width:\"30\",height:\"30\",fill:\"white\"})})]})]})};const Qi=({chainId:e,...t})=>{if(\"solana\"===e)/*#__PURE__*/return s(Ji,{...t});let i=Yi[e];/*#__PURE__*/return s(i||me,{...t})};let Ki=new Intl.NumberFormat(void 0,{style:\"currency\",currency:\"USD\",maximumFractionDigits:2}),er=e=>Ki.format(e);const tr=(e,t)=>{let i=er(t*parseFloat(e));return\"$0.00\"!==i?i:\"<$0.01\"},ir=(e,t)=>{let i=er(t*parseFloat(ne(e)));return\"$0.00\"===i?\"<$0.01\":i},rr=(e,t,i=6,r=!1)=>`${ar(e,i,r)} ${t}`,ar=(e,t=6,i=!1)=>{let r=parseFloat(ne(e)).toFixed(t).replace(/0+$/,\"\").replace(/\\.$/,\"\");return i?r:`${\"0\"===r?\"<0.001\":r}`},nr=e=>e.reduce(((e,t)=>e+t),0n),or=(e,t)=>{let{chains:i}=Y(),r=`https://etherscan.io/address/${t}`,a=`${((e,t)=>{let i=Number(e),r=t.find((e=>e.id===i));if(!r)throw new H(`Unsupported chainId ${e}`,4901);return r.blockExplorers?.default.url})(e,i)}/address/${t}`;if(!a)return r;try{new URL(a)}catch{return r}return a};let lr=2n**256n-1n;const sr=({amount:e,decimals:t})=>e===lr?\"Maximum\":Intl.NumberFormat(void 0,{maximumFractionDigits:t}).format(Number(e)/10**t),cr=async({chain:e,address:t,appId:i,rpcConfig:r,erc20Address:a})=>{let n=oe({chain:e,transport:le(ve(e,r,i))});return{balance:await n.readContract({address:a,abi:dr,functionName:\"balanceOf\",args:[t]}).catch((()=>0n)),chain:e}};let dr=[{constant:!0,inputs:[{name:\"_owner\",type:\"address\"}],name:\"balanceOf\",outputs:[{name:\"balance\",type:\"uint256\"}],payable:!1,stateMutability:\"view\",type:\"function\"}];const hr=({...e})=>/*#__PURE__*/c(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"16\",height:\"16\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",...e,children:[/*#__PURE__*/s(\"rect\",{width:\"18\",height:\"18\",x:\"3\",y:\"3\",rx:\"2\"}),/*#__PURE__*/s(\"path\",{d:\"M3 9a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2\"}),/*#__PURE__*/s(\"path\",{d:\"M3 11h3c.8 0 1.6.3 2.1.9l1.1.9c1.6 1.6 4.1 1.6 5.7 0l1.1-.9c.5-.5 1.3-.9 2.1-.9H21\"})]}),pr=async({address:e,chain:t,rpcConfig:i,privyAppId:r})=>{try{let a=oe({chain:t,transport:le(ve(t,i,r))}),[n,o]=await Promise.all([a.readContract({abi:ur,address:e,functionName:\"symbol\"}),a.readContract({abi:ur,address:e,functionName:\"decimals\"})]);return{decimals:o,symbol:n}}catch(e){return console.log(e),null}};let ur=[{inputs:[],name:\"decimals\",outputs:[{internalType:\"uint8\",name:\"\",type:\"uint8\"}],stateMutability:\"view\",type:\"function\"},{inputs:[],name:\"symbol\",outputs:[{internalType:\"string\",name:\"\",type:\"string\"}],stateMutability:\"view\",type:\"function\"}];function fr({rpcConfig:e,appId:t,address:a,chain:n}){let{chains:s}=Y(),[c,d]=i(0n),[h,p]=i(!1),u=r((()=>{let i=n||s[0];if(i)return oe({chain:n,transport:le(ve(i,e,t))})}),[n,e,t]),f=l((async()=>{if(!a||!u)return;p(!0);let e=await u.getBalance({address:a}).catch(console.error);return e?(d(e),p(!1),e):void 0}),[u,a,d]);return o((()=>{f().catch(console.error)}),[]),{balance:c,isLoading:h,reloadBalance:f}}let wr=/*#__PURE__*/$.label.withConfig({displayName:\"BaseEmailForm\",componentId:\"sc-d081b0e2-0\"})([\"display:block;position:relative;width:100%;> svg{position:absolute;margin:13px 17px;height:24px;width:24px;color:var(--privy-color-foreground-3);}&& > input{background-color:#f00;font-size:16px;line-height:24px;padding:12px 88px 12px 52px;flex-grow:1;background:var(--privy-color-background);border:1px solid \",\";border-radius:var(--privy-border-radius-mdlg);width:100%;@media (min-width:441px){font-size:14px;padding-right:78px;}:focus{outline:none;border-color:\",\";box-shadow:\",\";}:autofill,:-webkit-autofill{background:var(--privy-color-background);}&& > input::placeholder{color:var(--privy-color-foreground-3);}&:disabled{opacity:0.4;cursor:not-allowed;}&:disabled,&:disabled:hover,&:disabled > span{color:var(--privy-color-foreground-3);}}&& > button:last-child{right:0px;line-height:24px;padding:13px 17px;:focus{outline:none;}&:disabled{opacity:0.4;cursor:not-allowed;}&:disabled,&:disabled:hover,&:disabled > span{color:var(--privy-color-foreground-3);}}\"],(({$error:e})=>e?\"var(--privy-color-error) !important\":\"var(--privy-color-foreground-4)\"),(({$error:e})=>e?\"var(--privy-color-error) !important\":\"var(--privy-color-accent-light)\"),(({$error:e})=>e?\"none\":\"0 0 0 1px var(--privy-color-accent-light)\"));const gr=/*#__PURE__*/$(wr).withConfig({displayName:\"EmailUpdateForm\",componentId:\"sc-d081b0e2-1\"})([\"background-color:var(--privy-color-background);transition:background-color 200ms ease;&& > button{right:0;line-height:24px;position:absolute;padding:13px 17px;background-color:#090;:focus{outline:none;border-color:var(--privy-color-accent);}}\"]),mr=/*#__PURE__*/$(wr).withConfig({displayName:\"EmailInputForm\",componentId:\"sc-d081b0e2-2\"})([\"&& > input{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:\",\";border:1px solid \",\";&& > input::placeholder{color:var(--privy-color-foreground-3);}}&& > :last-child{right:16px;position:absolute;top:50%;transform:translate(0,-50%);}&& > button:last-child{right:0px;line-height:24px;padding:13px 17px;:focus{outline:none;}}\"],(e=>e.stacked?\"16px\":\"88px\"),(({$error:e})=>e?\"var(--privy-color-error) !important\":\"var(--privy-color-foreground-4)\")),vr=/*#__PURE__*/$.div.withConfig({displayName:\"InputContainerForm\",componentId:\"sc-d081b0e2-3\"})([\"width:100%;&& > \",\"{display:block;text-align:left;padding-left:var(--privy-border-radius-mdlg);padding-bottom:5px;}\"],Li);function yr(e){let{login:t}=a(C);return O(\"login\",e),{login:t}}function br(e){let{connectWallet:t}=a(C);return O(\"connectWallet\",e),{connectWallet:t}}const Cr=e=>{O(\"fundWallet\",e);let{fundWallet:t}=Y();return{fundWallet:t}},xr=he((()=>({isModalOpen:!1,resolvers:null})));let Ar=be((()=>({})),ye);const kr=(e,t)=>Ar((i=>i[e]?.[t])),Ir=(e,t,i)=>{Ar.setState((r=>({...r,[e]:{...r[e],[t]:i}})))},Tr=()=>{let e=xr.getState().resolvers;e||console.warn(\"useActiveWalletStore: Called close while modal was not open\"),xr.setState({isModalOpen:!1}),e?.resolve({wallet:xr.getState().wallet})},Sr=({address:e,client:t,appId:i})=>{let r=`${t}:${e}`;i&&W.put(Mr(i),r),xr.setState({wallet:r})},Er=()=>xr((e=>e.isModalOpen)),Mr=e=>`privy:${e}:active-wallet-connection`,Nr=()=>{let e=w(),{wallets:t}=L(),{wallets:i}=U(),a=xr((e=>e.wallet));o((()=>{if(!e.id)return;let t=W.get(Mr(e.id));xr.setState({wallet:t})}),[e.id]);let n=r((()=>{if(!a)return;let[,e]=a.split(\":\");return t.find((t=>t.address===e))||i.find((t=>t.address===e))}),[a,t,i]),l=r((()=>n?\"ethereum\"===n.type?n.chainId:\"solana\":void 0),[n]);return{connect:async r=>{r?.reset&&(W.del(Mr(e.id)),xr.setState({wallet:void 0}));let{wallet:a}=await(async()=>{let e,t,i=new Promise(((i,r)=>{e=i,t=r}));return Ar.setState({}),xr.setState({isModalOpen:!0,resolvers:{resolve:e,reject:t}}),await i})();if(!a)return{};let[,n]=a.split(\":\"),o=t.find((e=>e.address===n));if(o)return{wallet:o,network:o.chainId};let l=i.find((e=>e.address===n));return l?{wallet:l,network:\"solana\"}:{}},wallet:n,network:l}};export{Fi as $,Zt as A,at as B,Xe as C,ai as D,it as E,oi as F,Oi as G,ii as H,Ri as I,Ne as J,Xt as K,Yt as L,Ft as M,yt as N,di as O,rt as P,pi as Q,je as R,Ze as S,Vt as T,Di as U,ti as V,pt as W,ri as X,Gi as Y,wt as Z,fi as _,et as a,Qi as a0,Wi as a1,mt as a2,Xi as a3,rr as a4,Li as a5,Ct as a6,qi as a7,cr as a8,tr as a9,ot as aA,Ge as aB,He as aC,Je as aD,vi as aE,Fe as aF,Ke as aG,yr as aH,br as aI,Cr as aJ,Nr as aK,nt as aL,ht as aM,Sr as aN,kr as aO,Ir as aP,Ni as aQ,Er as aR,Tr as aS,ir as aa,sr as ab,nr as ac,Se as ad,gt as ae,ni as af,pr as ag,hr as ah,fr as ai,ei as aj,St as ak,Ie as al,Et as am,vr as an,mr as ao,ke as ap,or as aq,li as ar,Nt as as,Lt as at,ar as au,gr as av,At as aw,Ii as ax,ut as ay,Me as az,Qe as b,bt as c,We as d,jt as e,It as f,Re as g,ft as h,tt as i,Ht as j,xi as k,ct as l,Ae as m,wi as n,Ve as o,Te as p,Ei as q,ki as r,Kt as s,Pe as t,Ye as u,Mi as v,si as w,ci as x,hi as y,_i as z};\n","import digest from '../runtime/digest.js';\nexport const encoder = new TextEncoder();\nexport const decoder = new TextDecoder();\nconst MAX_INT32 = 2 ** 32;\nexport function concat(...buffers) {\n const size = buffers.reduce((acc, { length }) => acc + length, 0);\n const buf = new Uint8Array(size);\n let i = 0;\n buffers.forEach((buffer) => {\n buf.set(buffer, i);\n i += buffer.length;\n });\n return buf;\n}\nexport function p2s(alg, p2sInput) {\n return concat(encoder.encode(alg), new Uint8Array([0]), p2sInput);\n}\nfunction writeUInt32BE(buf, value, offset) {\n if (value < 0 || value >= MAX_INT32) {\n throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);\n }\n buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);\n}\nexport function uint64be(value) {\n const high = Math.floor(value / MAX_INT32);\n const low = value % MAX_INT32;\n const buf = new Uint8Array(8);\n writeUInt32BE(buf, high, 0);\n writeUInt32BE(buf, low, 4);\n return buf;\n}\nexport function uint32be(value) {\n const buf = new Uint8Array(4);\n writeUInt32BE(buf, value);\n return buf;\n}\nexport function lengthAndInput(input) {\n return concat(uint32be(input.length), input);\n}\nexport async function concatKdf(secret, bits, value) {\n const iterations = Math.ceil((bits >> 3) / 32);\n const res = new Uint8Array(iterations * 32);\n for (let iter = 0; iter < iterations; iter++) {\n const buf = new Uint8Array(4 + secret.length + value.length);\n buf.set(uint32be(iter + 1));\n buf.set(secret, 4);\n buf.set(value, 4 + secret.length);\n res.set(await digest('sha256', buf), iter * 32);\n }\n return res.slice(0, bits >> 3);\n}\n","import { encoder, decoder } from '../lib/buffer_utils.js';\nexport const encodeBase64 = (input) => {\n let unencoded = input;\n if (typeof unencoded === 'string') {\n unencoded = encoder.encode(unencoded);\n }\n const CHUNK_SIZE = 0x8000;\n const arr = [];\n for (let i = 0; i < unencoded.length; i += CHUNK_SIZE) {\n arr.push(String.fromCharCode.apply(null, unencoded.subarray(i, i + CHUNK_SIZE)));\n }\n return btoa(arr.join(''));\n};\nexport const encode = (input) => {\n return encodeBase64(input).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n};\nexport const decodeBase64 = (encoded) => {\n const binary = atob(encoded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n};\nexport const decode = (input) => {\n let encoded = input;\n if (encoded instanceof Uint8Array) {\n encoded = decoder.decode(encoded);\n }\n encoded = encoded.replace(/-/g, '+').replace(/_/g, '/').replace(/\\s/g, '');\n try {\n return decodeBase64(encoded);\n }\n catch (_a) {\n throw new TypeError('The input to be decoded is not correctly encoded.');\n }\n};\n","import * as base64url from '../runtime/base64url.js';\nexport const encode = base64url.encode;\nexport const decode = base64url.decode;\n","export class JOSEError extends Error {\n static get code() {\n return 'ERR_JOSE_GENERIC';\n }\n constructor(message) {\n var _a;\n super(message);\n this.code = 'ERR_JOSE_GENERIC';\n this.name = this.constructor.name;\n (_a = Error.captureStackTrace) === null || _a === void 0 ? void 0 : _a.call(Error, this, this.constructor);\n }\n}\nexport class JWTClaimValidationFailed extends JOSEError {\n static get code() {\n return 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n }\n constructor(message, claim = 'unspecified', reason = 'unspecified') {\n super(message);\n this.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n this.claim = claim;\n this.reason = reason;\n }\n}\nexport class JWTExpired extends JOSEError {\n static get code() {\n return 'ERR_JWT_EXPIRED';\n }\n constructor(message, claim = 'unspecified', reason = 'unspecified') {\n super(message);\n this.code = 'ERR_JWT_EXPIRED';\n this.claim = claim;\n this.reason = reason;\n }\n}\nexport class JOSEAlgNotAllowed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n }\n static get code() {\n return 'ERR_JOSE_ALG_NOT_ALLOWED';\n }\n}\nexport class JOSENotSupported extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_NOT_SUPPORTED';\n }\n static get code() {\n return 'ERR_JOSE_NOT_SUPPORTED';\n }\n}\nexport class JWEDecryptionFailed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWE_DECRYPTION_FAILED';\n this.message = 'decryption operation failed';\n }\n static get code() {\n return 'ERR_JWE_DECRYPTION_FAILED';\n }\n}\nexport class JWEDecompressionFailed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWE_DECOMPRESSION_FAILED';\n this.message = 'decompression operation failed';\n }\n static get code() {\n return 'ERR_JWE_DECOMPRESSION_FAILED';\n }\n}\nexport class JWEInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWE_INVALID';\n }\n static get code() {\n return 'ERR_JWE_INVALID';\n }\n}\nexport class JWSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWS_INVALID';\n }\n static get code() {\n return 'ERR_JWS_INVALID';\n }\n}\nexport class JWTInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWT_INVALID';\n }\n static get code() {\n return 'ERR_JWT_INVALID';\n }\n}\nexport class JWKInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWK_INVALID';\n }\n static get code() {\n return 'ERR_JWK_INVALID';\n }\n}\nexport class JWKSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_INVALID';\n }\n static get code() {\n return 'ERR_JWKS_INVALID';\n }\n}\nexport class JWKSNoMatchingKey extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_NO_MATCHING_KEY';\n this.message = 'no applicable key found in the JSON Web Key Set';\n }\n static get code() {\n return 'ERR_JWKS_NO_MATCHING_KEY';\n }\n}\nexport class JWKSMultipleMatchingKeys extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n this.message = 'multiple matching keys found in the JSON Web Key Set';\n }\n static get code() {\n return 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n }\n}\nSymbol.asyncIterator;\nexport class JWKSTimeout extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_TIMEOUT';\n this.message = 'request timed out';\n }\n static get code() {\n return 'ERR_JWKS_TIMEOUT';\n }\n}\nexport class JWSSignatureVerificationFailed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n this.message = 'signature verification failed';\n }\n static get code() {\n return 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n }\n}\n","import { decode as base64url } from './base64url.js';\nimport { decoder } from '../lib/buffer_utils.js';\nimport isObject from '../lib/is_object.js';\nimport { JWTInvalid } from './errors.js';\nexport function decodeJwt(jwt) {\n if (typeof jwt !== 'string')\n throw new JWTInvalid('JWTs must use Compact JWS serialization, JWT must be a string');\n const { 1: payload, length } = jwt.split('.');\n if (length === 5)\n throw new JWTInvalid('Only JWTs using Compact JWS serialization can be decoded');\n if (length !== 3)\n throw new JWTInvalid('Invalid JWT');\n if (!payload)\n throw new JWTInvalid('JWTs must contain a payload');\n let decoded;\n try {\n decoded = base64url(payload);\n }\n catch (_a) {\n throw new JWTInvalid('Failed to base64url decode the payload');\n }\n let result;\n try {\n result = JSON.parse(decoder.decode(decoded));\n }\n catch (_b) {\n throw new JWTInvalid('Failed to parse the decoded payload as JSON');\n }\n if (!isObject(result))\n throw new JWTInvalid('Invalid JWT Claims Set');\n return result;\n}\n","function isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\nexport default function isObject(input) {\n if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(input) === null) {\n return true;\n }\n let proto = input;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(input) === proto;\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-expect-error We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {import('./index').ContainerNode} node The node to remove\n */\nexport function removeNode(node) {\n\tif (node && node.parentNode) node.parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { slice } from './util';\nimport options from './options';\nimport { NULL, UNDEFINED } from './constants';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor for this\n * virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the\n * virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != NULL) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === UNDEFINED) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, NULL);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\t/** @type {import('./internal').VNode} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: NULL,\n\t\t_parent: NULL,\n\t\t_depth: 0,\n\t\t_dom: NULL,\n\t\t_component: NULL,\n\t\tconstructor: UNDEFINED,\n\t\t_original: original == NULL ? ++vnodeId : original,\n\t\t_index: -1,\n\t\t_flags: 0\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == NULL && options.vnode != NULL) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: NULL };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != NULL && vnode.constructor == UNDEFINED;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE, NULL } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != NULL && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == NULL) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](https://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == NULL) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: NULL;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != NULL && sibling._dom != NULL) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : NULL;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet oldVNode = component._vnode,\n\t\toldDom = oldVNode._dom,\n\t\tcommitQueue = [],\n\t\trefQueue = [];\n\n\tif (component._parentDom) {\n\t\tconst newVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : NULL,\n\t\t\tcommitQueue,\n\t\t\toldDom == NULL ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != NULL && vnode._component != NULL) {\n\t\tvnode._dom = vnode._component.base = NULL;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != NULL && child._dom != NULL) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c,\n\t\tl = 1;\n\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile (rerenderQueue.length) {\n\t\t// Keep the rerender queue sorted by (depth, insertion order). The queue\n\t\t// will initially be sorted on the first iteration only if it has more than 1 item.\n\t\t//\n\t\t// New items can be added to the queue e.g. when rerendering a provider, so we want to\n\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t// single pass\n\t\tif (rerenderQueue.length > l) {\n\t\t\trerenderQueue.sort(depthSort);\n\t\t}\n\n\t\tc = rerenderQueue.shift();\n\t\tl = rerenderQueue.length;\n\n\t\tif (c._dirty) {\n\t\t\trenderComponent(c);\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n","import { IS_NON_DIMENSIONAL, NULL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == NULL ? '' : value);\n\t} else if (value == NULL) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (\n\t\t\tname.toLowerCase() in dom ||\n\t\t\tname == 'onFocusOut' ||\n\t\t\tname == 'onFocusIn'\n\t\t)\n\t\t\tname = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == NULL ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != NULL && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e._dispatched == NULL) {\n\t\t\t\te._dispatched = eventClock++;\n\n\t\t\t\t// When `e._dispatched` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e._dispatched < eventHandler._attached) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport {\n\tEMPTY_OBJ,\n\tEMPTY_ARR,\n\tINSERT_VNODE,\n\tMATCHED,\n\tUNDEFINED,\n\tNULL\n} from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * @typedef {import('../internal').ComponentChildren} ComponentChildren\n * @typedef {import('../internal').Component} Component\n * @typedef {import('../internal').PreactElement} PreactElement\n * @typedef {import('../internal').VNode} VNode\n */\n\n/**\n * Diff the children of a virtual node\n * @param {PreactElement} parentDom The DOM element whose children are being\n * diffed\n * @param {ComponentChildren[]} renderResult\n * @param {VNode} newParentVNode The new virtual node whose children should be\n * diff'ed against oldParentVNode\n * @param {VNode} oldParentVNode The old virtual node whose children should be\n * diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\t/** @type {VNode} */\n\t\toldVNode,\n\t\t/** @type {VNode} */\n\t\tchildVNode,\n\t\t/** @type {PreactElement} */\n\t\tnewDom,\n\t\t/** @type {PreactElement} */\n\t\tfirstChildDom;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\t/** @type {VNode[]} */\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet newChildrenLength = renderResult.length;\n\n\toldDom = constructNewChildrenArray(\n\t\tnewParentVNode,\n\t\trenderResult,\n\t\toldChildren,\n\t\toldDom,\n\t\tnewChildrenLength\n\t);\n\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = newParentVNode._children[i];\n\t\tif (childVNode == NULL) continue;\n\n\t\t// At this point, constructNewChildrenArray has assigned _index to be the\n\t\t// matchingIndex for this VNode's oldVNode (or -1 if there is no oldVNode).\n\t\tif (childVNode._index === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[childVNode._index] || EMPTY_OBJ;\n\t\t}\n\n\t\t// Update childVNode._index to its final index\n\t\tchildVNode._index = i;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tlet result = diff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\t// Adjust DOM nodes\n\t\tnewDom = childVNode._dom;\n\t\tif (childVNode.ref && oldVNode.ref != childVNode.ref) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, NULL, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(\n\t\t\t\tchildVNode.ref,\n\t\t\t\tchildVNode._component || newDom,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t}\n\n\t\tif (firstChildDom == NULL && newDom != NULL) {\n\t\t\tfirstChildDom = newDom;\n\t\t}\n\n\t\tif (\n\t\t\tchildVNode._flags & INSERT_VNODE ||\n\t\t\toldVNode._children === childVNode._children\n\t\t) {\n\t\t\toldDom = insert(childVNode, oldDom, parentDom);\n\t\t} else if (typeof childVNode.type == 'function' && result !== UNDEFINED) {\n\t\t\toldDom = result;\n\t\t} else if (newDom) {\n\t\t\toldDom = newDom.nextSibling;\n\t\t}\n\n\t\t// Unset diffing flags\n\t\tchildVNode._flags &= ~(INSERT_VNODE | MATCHED);\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\treturn oldDom;\n}\n\n/**\n * @param {VNode} newParentVNode\n * @param {ComponentChildren[]} renderResult\n * @param {VNode[]} oldChildren\n */\nfunction constructNewChildrenArray(\n\tnewParentVNode,\n\trenderResult,\n\toldChildren,\n\toldDom,\n\tnewChildrenLength\n) {\n\t/** @type {number} */\n\tlet i;\n\t/** @type {VNode} */\n\tlet childVNode;\n\t/** @type {VNode} */\n\tlet oldVNode;\n\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength;\n\n\tlet skew = 0;\n\n\tnewParentVNode._children = new Array(newChildrenLength);\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\t// @ts-expect-error We are reusing the childVNode variable to hold both the\n\t\t// pre and post normalized childVNode\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == NULL ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tnewParentVNode._children[i] = NULL;\n\t\t\tcontinue;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint' ||\n\t\t\tchildVNode.constructor == String\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tNULL,\n\t\t\t\tchildVNode,\n\t\t\t\tNULL,\n\t\t\t\tNULL,\n\t\t\t\tNULL\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tNULL,\n\t\t\t\tNULL,\n\t\t\t\tNULL\n\t\t\t);\n\t\t} else if (childVNode.constructor === UNDEFINED && childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t// const reuse = <div />\n\t\t\t// <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : NULL,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\tconst skewedIndex = i + skew;\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Temporarily store the matchingIndex on the _index property so we can pull\n\t\t// out the oldVNode in diffChildren. We'll override this to the VNode's\n\t\t// final index after using this property to get the oldVNode\n\t\tconst matchingIndex = (childVNode._index = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t));\n\n\t\toldVNode = NULL;\n\t\tif (matchingIndex !== -1) {\n\t\t\toldVNode = oldChildren[matchingIndex];\n\t\t\tremainingOldChildren--;\n\t\t\tif (oldVNode) {\n\t\t\t\toldVNode._flags |= MATCHED;\n\t\t\t}\n\t\t}\n\n\t\t// Here, we define isMounting for the purposes of the skew diffing\n\t\t// algorithm. Nodes that are unsuspending are considered mounting and we detect\n\t\t// this by checking if oldVNode._original === null\n\t\tconst isMounting = oldVNode == NULL || oldVNode._original === NULL;\n\n\t\tif (isMounting) {\n\t\t\tif (matchingIndex == -1) {\n\t\t\t\tskew--;\n\t\t\t}\n\n\t\t\t// If we are mounting a DOM VNode, mark it for insertion\n\t\t\tif (typeof childVNode.type != 'function') {\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t} else if (matchingIndex != skewedIndex) {\n\t\t\t// When we move elements around i.e. [0, 1, 2] --> [1, 0, 2]\n\t\t\t// --> we diff 1, we find it at position 1 while our skewed index is 0 and our skew is 0\n\t\t\t// we set the skew to 1 as we found an offset.\n\t\t\t// --> we diff 0, we find it at position 0 while our skewed index is at 2 and our skew is 1\n\t\t\t// this makes us increase the skew again.\n\t\t\t// --> we diff 2, we find it at position 2 while our skewed index is at 4 and our skew is 2\n\t\t\t//\n\t\t\t// this becomes an optimization question where currently we see a 1 element offset as an insertion\n\t\t\t// or deletion i.e. we optimize for [0, 1, 2] --> [9, 0, 1, 2]\n\t\t\t// while a more than 1 offset we see as a swap.\n\t\t\t// We could probably build heuristics for having an optimized course of action here as well, but\n\t\t\t// might go at the cost of some bytes.\n\t\t\t//\n\t\t\t// If we wanted to optimize for i.e. only swaps we'd just do the last two code-branches and have\n\t\t\t// only the first item be a re-scouting and all the others fall in their skewed counter-part.\n\t\t\t// We could also further optimize for swaps\n\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\tskew--;\n\t\t\t} else if (matchingIndex == skewedIndex + 1) {\n\t\t\t\tskew++;\n\t\t\t} else {\n\t\t\t\tif (matchingIndex > skewedIndex) {\n\t\t\t\t\tskew--;\n\t\t\t\t} else {\n\t\t\t\t\tskew++;\n\t\t\t\t}\n\n\t\t\t\t// Move this VNode's DOM if the original index (matchingIndex) doesn't\n\t\t\t\t// match the new skew index (i + new skew)\n\t\t\t\t// In the former two branches we know that it matches after skewing\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any. Loop forwards so that as we\n\t// unmount DOM from the beginning of the oldChildren, we can adjust oldDom to\n\t// point to the next child, which needs to be the first DOM node that won't be\n\t// unmounted.\n\tif (remainingOldChildren) {\n\t\tfor (i = 0; i < oldChildrenLength; i++) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode != NULL && (oldVNode._flags & MATCHED) == 0) {\n\t\t\t\tif (oldVNode._dom == oldDom) {\n\t\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * @param {VNode} parentVNode\n * @param {PreactElement} oldDom\n * @param {PreactElement} parentDom\n * @returns {PreactElement}\n */\nfunction insert(parentVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\n\tif (typeof parentVNode.type == 'function') {\n\t\tlet children = parentVNode._children;\n\t\tfor (let i = 0; children && i < children.length; i++) {\n\t\t\tif (children[i]) {\n\t\t\t\t// If we enter this code path on sCU bailout, where we copy\n\t\t\t\t// oldVNode._children to newVNode._children, we need to update the old\n\t\t\t\t// children's _parent pointer to point to the newVNode (parentVNode\n\t\t\t\t// here).\n\t\t\t\tchildren[i]._parent = parentVNode;\n\t\t\t\toldDom = insert(children[i], oldDom, parentDom);\n\t\t\t}\n\t\t}\n\n\t\treturn oldDom;\n\t} else if (parentVNode._dom != oldDom) {\n\t\tif (oldDom && parentVNode.type && !parentDom.contains(oldDom)) {\n\t\t\toldDom = getDomSibling(parentVNode);\n\t\t}\n\t\tparentDom.insertBefore(parentVNode._dom, oldDom || NULL);\n\t\toldDom = parentVNode._dom;\n\t}\n\n\tdo {\n\t\toldDom = oldDom && oldDom.nextSibling;\n\t} while (oldDom != NULL && oldDom.nodeType == 8);\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {ComponentChildren} children The unflattened children of a virtual\n * node\n * @returns {VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == NULL || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\n/**\n * @param {VNode} childVNode\n * @param {VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\t// We only need to perform a search if there are more children\n\t// (remainingOldChildren) to search. However, if the oldVNode we just looked\n\t// at skewedIndex was not already used in this diff, then there must be at\n\t// least 1 other (so greater than 1) remainingOldChildren to attempt to match\n\t// against. So the following condition checks that ensuring\n\t// remainingOldChildren > 1 if the oldVNode is not already used/matched. Else\n\t// if the oldVNode was null or matched, then there could needs to be at least\n\t// 1 (aka `remainingOldChildren > 0`) children to find and compare against.\n\t//\n\t// If there is an unkeyed functional VNode, that isn't a built-in like our Fragment,\n\t// we should not search as we risk re-using state of an unrelated VNode. (reverted for now)\n\tlet shouldSearch =\n\t\t// (typeof type != 'function' || type === Fragment || key) &&\n\t\tremainingOldChildren >\n\t\t(oldVNode != NULL && (oldVNode._flags & MATCHED) == 0 ? 1 : 0);\n\n\tif (\n\t\toldVNode === NULL ||\n\t\t(oldVNode &&\n\t\t\tkey == oldVNode.key &&\n\t\t\ttype === oldVNode.type &&\n\t\t\t(oldVNode._flags & MATCHED) == 0)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (shouldSearch) {\n\t\tlet x = skewedIndex - 1;\n\t\tlet y = skewedIndex + 1;\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) == 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) == 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n","import {\n\tEMPTY_OBJ,\n\tMATH_NAMESPACE,\n\tMODE_HYDRATE,\n\tMODE_SUSPENDED,\n\tNULL,\n\tRESET_MODE,\n\tSVG_NAMESPACE,\n\tUNDEFINED,\n\tXHTML_NAMESPACE\n} from '../constants';\nimport { BaseComponent, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * @typedef {import('../internal').ComponentChildren} ComponentChildren\n * @typedef {import('../internal').Component} Component\n * @typedef {import('../internal').PreactElement} PreactElement\n * @typedef {import('../internal').VNode} VNode\n */\n\n/**\n * @template {any} T\n * @typedef {import('../internal').Ref<T>} Ref<T>\n */\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {PreactElement} parentDom The parent of the DOM element\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\t/** @type {any} */\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== UNDEFINED) return NULL;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._flags & MODE_SUSPENDED) {\n\t\tisHydrating = !!(oldVNode._flags & MODE_HYDRATE);\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\t\t\tconst isClassComponent =\n\t\t\t\t'prototype' in newType && newType.prototype.render;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif (isClassComponent) {\n\t\t\t\t\t// @ts-expect-error The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-expect-error Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new BaseComponent(\n\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (isClassComponent && c._nextState == NULL) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (isClassComponent && newType.getDerivedStateFromProps != NULL) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == NULL &&\n\t\t\t\t\tc.componentWillMount != NULL\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidMount != NULL) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == NULL &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != NULL\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\t((c.shouldComponentUpdate != NULL &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t\tnewVNode._original == oldVNode._original)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original != oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.some(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != NULL) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidUpdate != NULL) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif (isClassComponent) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != NULL) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (isClassComponent && !isNew && c.getSnapshotBeforeUpdate != NULL) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != NULL && tmp.type === Fragment && tmp.key == NULL;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tif (isTopLevelFragment) {\n\t\t\t\ttmp.props.children = NULL;\n\t\t\t}\n\n\t\t\toldDom = diffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnamespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._flags &= RESET_MODE;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = NULL;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = NULL;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != NULL) {\n\t\t\t\tif (e.then) {\n\t\t\t\t\tnewVNode._flags |= isHydrating\n\t\t\t\t\t\t? MODE_HYDRATE | MODE_SUSPENDED\n\t\t\t\t\t\t: MODE_SUSPENDED;\n\n\t\t\t\t\twhile (oldDom && oldDom.nodeType == 8 && oldDom.nextSibling) {\n\t\t\t\t\t\toldDom = oldDom.nextSibling;\n\t\t\t\t\t}\n\n\t\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = NULL;\n\t\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\t} else {\n\t\t\t\t\tfor (let i = excessDomChildren.length; i--; ) {\n\t\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == NULL &&\n\t\tnewVNode._original == oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\toldDom = newVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n\n\treturn newVNode._flags & MODE_SUSPENDED ? undefined : oldDom;\n}\n\n/**\n * @param {Array<Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-expect-error Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-expect-error See above comment on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {PreactElement} dom The DOM element representing the virtual nodes\n * being diffed\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n * @returns {PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = /** @type {string} */ (newVNode.type);\n\t/** @type {any} */\n\tlet i;\n\t/** @type {{ __html?: string }} */\n\tlet newHtml;\n\t/** @type {{ __html?: string }} */\n\tlet oldHtml;\n\t/** @type {ComponentChildren} */\n\tlet newChildren;\n\tlet value;\n\tlet inputValue;\n\tlet checked;\n\n\t// Tracks entering and exiting namespaces when descending through the tree.\n\tif (nodeType == 'svg') namespace = SVG_NAMESPACE;\n\telse if (nodeType == 'math') namespace = MATH_NAMESPACE;\n\telse if (!namespace) namespace = XHTML_NAMESPACE;\n\n\tif (excessDomChildren != NULL) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tvalue = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tvalue &&\n\t\t\t\t'setAttribute' in value == !!nodeType &&\n\t\t\t\t(nodeType ? value.localName == nodeType : value.nodeType == 3)\n\t\t\t) {\n\t\t\t\tdom = value;\n\t\t\t\texcessDomChildren[i] = NULL;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == NULL) {\n\t\tif (nodeType == NULL) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = document.createElementNS(\n\t\t\tnamespace,\n\t\t\tnodeType,\n\t\t\tnewProps.is && newProps\n\t\t);\n\n\t\t// we are creating a new node, so we can assume this is a new subtree (in\n\t\t// case we are hydrating), this deopts the hydrate\n\t\tif (isHydrating) {\n\t\t\tif (options._hydrationMismatch)\n\t\t\t\toptions._hydrationMismatch(newVNode, excessDomChildren);\n\t\t\tisHydrating = false;\n\t\t}\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = NULL;\n\t}\n\n\tif (nodeType === NULL) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\t// If we are in a situation where we are not hydrating but are using\n\t\t// existing DOM (e.g. replaceNode) we should read the existing DOM\n\t\t// attributes to diff them\n\t\tif (!isHydrating && excessDomChildren != NULL) {\n\t\t\toldProps = {};\n\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\tvalue = dom.attributes[i];\n\t\t\t\toldProps[value.name] = value.value;\n\t\t\t}\n\t\t}\n\n\t\tfor (i in oldProps) {\n\t\t\tvalue = oldProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\toldHtml = value;\n\t\t\t} else if (!(i in newProps)) {\n\t\t\t\tif (\n\t\t\t\t\t(i == 'value' && 'defaultValue' in newProps) ||\n\t\t\t\t\t(i == 'checked' && 'defaultChecked' in newProps)\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tsetProperty(dom, i, NULL, value, namespace);\n\t\t\t}\n\t\t}\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tfor (i in newProps) {\n\t\t\tvalue = newProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t\tnewChildren = value;\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\tnewHtml = value;\n\t\t\t} else if (i == 'value') {\n\t\t\t\tinputValue = value;\n\t\t\t} else if (i == 'checked') {\n\t\t\t\tchecked = value;\n\t\t\t} else if (\n\t\t\t\t(!isHydrating || typeof value == 'function') &&\n\t\t\t\toldProps[i] !== value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, value, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\tif (\n\t\t\t\t!isHydrating &&\n\t\t\t\t(!oldHtml ||\n\t\t\t\t\t(newHtml.__html !== oldHtml.__html &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML))\n\t\t\t) {\n\t\t\t\tdom.innerHTML = newHtml.__html;\n\t\t\t}\n\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tif (oldHtml) dom.innerHTML = '';\n\n\t\t\tdiffChildren(\n\t\t\t\t// @ts-expect-error\n\t\t\t\tnewVNode.type === 'template' ? dom.content : dom,\n\t\t\t\tisArray(newChildren) ? newChildren : [newChildren],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnodeType == 'foreignObject' ? XHTML_NAMESPACE : namespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != NULL) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// As above, don't diff props during hydration\n\t\tif (!isHydrating) {\n\t\t\ti = 'value';\n\t\t\tif (nodeType == 'progress' && inputValue == NULL) {\n\t\t\t\tdom.removeAttribute('value');\n\t\t\t} else if (\n\t\t\t\tinputValue !== UNDEFINED &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(inputValue !== dom[i] ||\n\t\t\t\t\t(nodeType == 'progress' && !inputValue) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType == 'option' && inputValue !== oldProps[i]))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, inputValue, oldProps[i], namespace);\n\t\t\t}\n\n\t\t\ti = 'checked';\n\t\t\tif (checked !== UNDEFINED && checked !== dom[i]) {\n\t\t\t\tsetProperty(dom, i, checked, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {Ref<any> & { _unmount?: unknown }} ref\n * @param {any} value\n * @param {VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') {\n\t\t\tlet hasRefUnmount = typeof ref._unmount == 'function';\n\t\t\tif (hasRefUnmount) {\n\t\t\t\t// @ts-ignore TS doesn't like moving narrowing checks into variables\n\t\t\t\tref._unmount();\n\t\t\t}\n\n\t\t\tif (!hasRefUnmount || value != NULL) {\n\t\t\t\t// Store the cleanup function on the function\n\t\t\t\t// instance object itself to avoid shape\n\t\t\t\t// transitioning vnode\n\t\t\t\tref._unmount = ref(value);\n\t\t\t}\n\t\t} else ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {VNode} vnode The virtual node to unmount\n * @param {VNode} parentVNode The parent of the VNode that initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, NULL, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != NULL) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = NULL;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type != 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\tvnode._component = vnode._parent = vnode._dom = UNDEFINED;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ, NULL } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\t// https://github.com/preactjs/preact/issues/3794\n\tif (parentDom == document) {\n\t\tparentDom = document.documentElement;\n\t}\n\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode == 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? NULL\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, NULL, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.namespaceURI,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t\t? NULL\n\t\t\t\t: parentDom.firstChild\n\t\t\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t\t\t: NULL,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t\t? oldVNode._dom\n\t\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n","import { NULL } from '../constants';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component,\n\t\t/** @type {import('../internal').ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != NULL) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != NULL) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { options as _options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {import('./internal').Component} */\nlet previousComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array<import('./internal').Component>} */\nlet afterPaintEffects = [];\n\n// Cast to use internal Options type\nconst options = /** @type {import('./internal').Options} */ (_options);\n\nlet oldBeforeDiff = options._diff;\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\nlet oldRoot = options._root;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions._diff = vnode => {\n\tcurrentComponent = null;\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n};\n\noptions._root = (vnode, parentDom) => {\n\tif (vnode && parentDom._children && parentDom._children._mask) {\n\t\tvnode._mask = parentDom._children._mask;\n\t}\n\n\tif (oldRoot) oldRoot(vnode, parentDom);\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tconst hooks = currentComponent.__hooks;\n\tif (hooks) {\n\t\tif (previousComponent === currentComponent) {\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentComponent._renderCallbacks = [];\n\t\t\thooks._list.forEach(hookItem => {\n\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t}\n\t\t\t\thookItem._pendingArgs = hookItem._nextValue = undefined;\n\t\t\t});\n\t\t} else {\n\t\t\thooks._pendingEffects.forEach(invokeCleanup);\n\t\t\thooks._pendingEffects.forEach(invokeEffect);\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentIndex = 0;\n\t\t}\n\t}\n\tpreviousComponent = currentComponent;\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tif (c.__hooks._pendingEffects.length) afterPaint(afterPaintEffects.push(c));\n\t\tc.__hooks._list.forEach(hookItem => {\n\t\t\tif (hookItem._pendingArgs) {\n\t\t\t\thookItem._args = hookItem._pendingArgs;\n\t\t\t}\n\t\t\thookItem._pendingArgs = undefined;\n\t\t});\n\t}\n\tpreviousComponent = currentComponent = null;\n};\n\n// TODO: Improve typing of commitQueue parameter\n/** @type {(vnode: import('./internal').VNode, commitQueue: any) => void} */\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tlet hasErrored;\n\t\tc.__hooks._list.forEach(s => {\n\t\t\ttry {\n\t\t\t\tinvokeCleanup(s);\n\t\t\t} catch (e) {\n\t\t\t\thasErrored = e;\n\t\t\t}\n\t\t});\n\t\tc.__hooks = undefined;\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {any}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({});\n\t}\n\n\treturn hooks._list[index];\n}\n\n/**\n * @template {unknown} S\n * @param {import('./index').Dispatch<import('./index').StateUpdater<S>>} [initialState]\n * @returns {[S, (state: S) => void]}\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @template {unknown} S\n * @template {unknown} A\n * @param {import('./index').Reducer<S, A>} reducer\n * @param {import('./index').Dispatch<import('./index').StateUpdater<S>>} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ S, (state: S) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\thookState._reducer = reducer;\n\tif (!hookState._component) {\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst currentValue = hookState._nextValue\n\t\t\t\t\t? hookState._nextValue[0]\n\t\t\t\t\t: hookState._value[0];\n\t\t\t\tconst nextValue = hookState._reducer(currentValue, action);\n\n\t\t\t\tif (currentValue !== nextValue) {\n\t\t\t\t\thookState._nextValue = [nextValue, hookState._value[1]];\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\thookState._component = currentComponent;\n\n\t\tif (!currentComponent._hasScuFromHooks) {\n\t\t\tcurrentComponent._hasScuFromHooks = true;\n\t\t\tlet prevScu = currentComponent.shouldComponentUpdate;\n\t\t\tconst prevCWU = currentComponent.componentWillUpdate;\n\n\t\t\t// If we're dealing with a forced update `shouldComponentUpdate` will\n\t\t\t// not be called. But we use that to update the hook values, so we\n\t\t\t// need to call it.\n\t\t\tcurrentComponent.componentWillUpdate = function (p, s, c) {\n\t\t\t\tif (this._force) {\n\t\t\t\t\tlet tmp = prevScu;\n\t\t\t\t\t// Clear to avoid other sCU hooks from being called\n\t\t\t\t\tprevScu = undefined;\n\t\t\t\t\tupdateHookState(p, s, c);\n\t\t\t\t\tprevScu = tmp;\n\t\t\t\t}\n\n\t\t\t\tif (prevCWU) prevCWU.call(this, p, s, c);\n\t\t\t};\n\n\t\t\t// This SCU has the purpose of bailing out after repeated updates\n\t\t\t// to stateful hooks.\n\t\t\t// we store the next value in _nextValue[0] and keep doing that for all\n\t\t\t// state setters, if we have next states and\n\t\t\t// all next states within a component end up being equal to their original state\n\t\t\t// we are safe to bail out for this specific component.\n\t\t\t/**\n\t\t\t *\n\t\t\t * @type {import('./internal').Component[\"shouldComponentUpdate\"]}\n\t\t\t */\n\t\t\t// @ts-ignore - We don't use TS to downtranspile\n\t\t\t// eslint-disable-next-line no-inner-declarations\n\t\t\tfunction updateHookState(p, s, c) {\n\t\t\t\tif (!hookState._component.__hooks) return true;\n\n\t\t\t\t/** @type {(x: import('./internal').HookState) => x is import('./internal').ReducerHookState} */\n\t\t\t\tconst isStateHook = x => !!x._component;\n\t\t\t\tconst stateHooks =\n\t\t\t\t\thookState._component.__hooks._list.filter(isStateHook);\n\n\t\t\t\tconst allHooksEmpty = stateHooks.every(x => !x._nextValue);\n\t\t\t\t// When we have no updated hooks in the component we invoke the previous SCU or\n\t\t\t\t// traverse the VDOM tree further.\n\t\t\t\tif (allHooksEmpty) {\n\t\t\t\t\treturn prevScu ? prevScu.call(this, p, s, c) : true;\n\t\t\t\t}\n\n\t\t\t\t// We check whether we have components with a nextValue set that\n\t\t\t\t// have values that aren't equal to one another this pushes\n\t\t\t\t// us to update further down the tree\n\t\t\t\tlet shouldUpdate = hookState._component.props !== p;\n\t\t\t\tstateHooks.forEach(hookItem => {\n\t\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\t\tconst currentValue = hookItem._value[0];\n\t\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t\t\thookItem._nextValue = undefined;\n\t\t\t\t\t\tif (currentValue !== hookItem._value[0]) shouldUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn prevScu\n\t\t\t\t\t? prevScu.call(this, p, s, c) || shouldUpdate\n\t\t\t\t\t: shouldUpdate;\n\t\t\t}\n\n\t\t\tcurrentComponent.shouldComponentUpdate = updateHookState;\n\t\t}\n\t}\n\n\treturn hookState._nextValue || hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\n/** @type {(initialValue: unknown) => unknown} */\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') {\n\t\t\t\tconst result = ref(createHandle());\n\t\t\t\treturn () => {\n\t\t\t\t\tref(null);\n\t\t\t\t\tif (result && typeof result == 'function') result();\n\t\t\t\t};\n\t\t\t} else if (ref) {\n\t\t\t\tref.current = createHandle();\n\t\t\t\treturn () => (ref.current = null);\n\t\t\t}\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @template {unknown} T\n * @param {() => T} factory\n * @param {unknown[]} args\n * @returns {T}\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState<T>} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._value = factory();\n\t\tstate._args = args;\n\t\tstate._factory = factory;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {unknown[]} args\n * @returns {() => void}\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\t/** @type {import('./internal').ContextHookState} */\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {<T>(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(\n\t\t\tformatter ? formatter(value) : /** @type {any}*/ (value)\n\t\t);\n\t}\n}\n\n/**\n * @param {(error: unknown, errorInfo: import('preact').ErrorInfo) => void} cb\n * @returns {[unknown, () => void]}\n */\nexport function useErrorBoundary(cb) {\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = (err, errorInfo) => {\n\t\t\tif (state._value) state._value(err, errorInfo);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\n/** @type {() => string} */\nexport function useId() {\n\t/** @type {import('./internal').IdHookState} */\n\tconst state = getHookState(currentIndex++, 11);\n\tif (!state._value) {\n\t\t// Grab either the root node or the nearest async boundary node.\n\t\t/** @type {import('./internal').VNode} */\n\t\tlet root = currentComponent._vnode;\n\t\twhile (root !== null && !root._mask && root._parent !== null) {\n\t\t\troot = root._parent;\n\t\t}\n\n\t\tlet mask = root._mask || (root._mask = [0, 0]);\n\t\tstate._value = 'P' + mask[0] + '-' + mask[1]++;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tlet component;\n\twhile ((component = afterPaintEffects.shift())) {\n\t\tif (!component._parentDom || !component.__hooks) continue;\n\t\ttry {\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t} catch (e) {\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t}\n}\n\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (HAS_RAF) {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n * @returns {void}\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').HookState} hook\n * @returns {void}\n */\nfunction invokeCleanup(hook) {\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\tlet cleanup = hook._cleanup;\n\tif (typeof cleanup == 'function') {\n\t\thook._cleanup = undefined;\n\t\tcleanup();\n\t}\n\n\tcurrentComponent = comp;\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n * @returns {void}\n */\nfunction invokeEffect(hook) {\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\thook._cleanup = hook._value();\n\tcurrentComponent = comp;\n}\n\n/**\n * @param {unknown[]} oldArgs\n * @param {unknown[]} newArgs\n * @returns {boolean}\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn (\n\t\t!oldArgs ||\n\t\toldArgs.length !== newArgs.length ||\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\n\t);\n}\n\n/**\n * @template Arg\n * @param {Arg} arg\n * @param {(arg: Arg) => any} f\n * @returns {any}\n */\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"import { BaseError } from './base.js'\n\nexport type InvalidDecimalNumberErrorType = InvalidDecimalNumberError & {\n name: 'InvalidDecimalNumberError'\n}\nexport class InvalidDecimalNumberError extends BaseError {\n constructor({ value }: { value: string }) {\n super(`Number \\`${value}\\` is not a valid decimal number.`, {\n name: 'InvalidDecimalNumberError',\n })\n }\n}\n","import { etherUnits } from '../../constants/unit.js'\nimport type { ErrorType } from '../../errors/utils.js'\n\nimport { type ParseUnitsErrorType, parseUnits } from './parseUnits.js'\n\nexport type ParseEtherErrorType = ParseUnitsErrorType | ErrorType\n\n/**\n * Converts a string representation of ether to numerical wei.\n *\n * - Docs: https://viem.sh/docs/utilities/parseEther\n *\n * @example\n * import { parseEther } from 'viem'\n *\n * parseEther('420')\n * // 420000000000000000000n\n */\nexport function parseEther(ether: string, unit: 'wei' | 'gwei' = 'wei') {\n return parseUnits(ether, etherUnits[unit])\n}\n","import { InvalidDecimalNumberError } from '../../errors/unit.js'\nimport type { ErrorType } from '../../errors/utils.js'\n\nexport type ParseUnitsErrorType = ErrorType\n\n/**\n * Multiplies a string representation of a number by a given exponent of base 10 (10exponent).\n *\n * - Docs: https://viem.sh/docs/utilities/parseUnits\n *\n * @example\n * import { parseUnits } from 'viem'\n *\n * parseUnits('420', 9)\n * // 420000000000n\n */\nexport function parseUnits(value: string, decimals: number) {\n if (!/^(-?)([0-9]*)\\.?([0-9]*)$/.test(value))\n throw new InvalidDecimalNumberError({ value })\n\n let [integer, fraction = '0'] = value.split('.')\n\n const negative = integer.startsWith('-')\n if (negative) integer = integer.slice(1)\n\n // trim trailing zeros.\n fraction = fraction.replace(/(0+)$/, '')\n\n // round off if the fraction is larger than the number of decimals.\n if (decimals === 0) {\n if (Math.round(Number(`.${fraction}`)) === 1)\n integer = `${BigInt(integer) + 1n}`\n fraction = ''\n } else if (fraction.length > decimals) {\n const [left, unit, right] = [\n fraction.slice(0, decimals - 1),\n fraction.slice(decimals - 1, decimals),\n fraction.slice(decimals),\n ]\n\n const rounded = Math.round(Number(`${unit}.${right}`))\n if (rounded > 9)\n fraction = `${BigInt(left) + BigInt(1)}0`.padStart(left.length + 1, '0')\n else fraction = `${left}${rounded}`\n\n if (fraction.length > decimals) {\n fraction = fraction.slice(1)\n integer = `${BigInt(integer) + 1n}`\n }\n\n fraction = fraction.slice(0, decimals)\n } else {\n fraction = fraction.padEnd(decimals, '0')\n }\n\n return BigInt(`${negative ? '-' : ''}${integer}${fraction}`)\n}\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { forwardRef, useState, useEffect, useRef, useMemo, useImperativeHandle } from 'react';\n\nconst Component = ({ as: Element = \"div\", ...props }, ref) => {\n return /* @__PURE__ */ jsx(Element, { ...props, ref });\n};\nconst Container = forwardRef(Component);\n\nconst SCRIPT_URL = \"https://challenges.cloudflare.com/turnstile/v0/api.js\";\nconst DEFAULT_SCRIPT_ID = \"cf-turnstile-script\";\nconst DEFAULT_CONTAINER_ID = \"cf-turnstile\";\nconst DEFAULT_ONLOAD_NAME = \"onloadTurnstileCallback\";\nconst checkElementExistence = (id) => !!document.getElementById(id);\nconst injectTurnstileScript = ({\n render = \"explicit\",\n onLoadCallbackName = DEFAULT_ONLOAD_NAME,\n scriptOptions: {\n nonce = \"\",\n defer = true,\n async = true,\n id = \"\",\n appendTo,\n onError,\n crossOrigin = \"\"\n } = {}\n}) => {\n const scriptId = id || DEFAULT_SCRIPT_ID;\n if (checkElementExistence(scriptId)) {\n return;\n }\n const script = document.createElement(\"script\");\n script.id = scriptId;\n script.src = `${SCRIPT_URL}?onload=${onLoadCallbackName}&render=${render}`;\n if (document.querySelector(`script[src=\"${script.src}\"]`)) {\n return;\n }\n script.defer = !!defer;\n script.async = !!async;\n if (nonce) {\n script.nonce = nonce;\n }\n if (crossOrigin) {\n script.crossOrigin = crossOrigin;\n }\n if (onError) {\n script.onerror = onError;\n }\n const parentEl = appendTo === \"body\" ? document.body : document.getElementsByTagName(\"head\")[0];\n parentEl.appendChild(script);\n};\nconst CONTAINER_STYLE_SET = {\n normal: {\n width: 300,\n height: 65\n },\n compact: {\n width: 130,\n height: 120\n },\n invisible: {\n width: 0,\n height: 0,\n overflow: \"hidden\"\n },\n interactionOnly: {\n width: \"fit-content\",\n height: \"auto\"\n }\n};\nfunction getTurnstileSizeOpts(size) {\n let result;\n if (size !== \"invisible\") {\n result = size;\n }\n return result;\n}\n\nfunction useObserveScript(scriptId = DEFAULT_SCRIPT_ID) {\n const [scriptLoaded, setScriptLoaded] = useState(false);\n useEffect(() => {\n const checkScriptExists = () => {\n if (checkElementExistence(scriptId)) {\n setScriptLoaded(true);\n }\n };\n const observer = new MutationObserver(checkScriptExists);\n observer.observe(document, { childList: true, subtree: true });\n checkScriptExists();\n return () => {\n observer.disconnect();\n };\n }, [scriptId]);\n return scriptLoaded;\n}\n\nconst Turnstile = forwardRef((props, ref) => {\n const {\n scriptOptions,\n options = {},\n siteKey,\n onWidgetLoad,\n onSuccess,\n onExpire,\n onError,\n onBeforeInteractive,\n onAfterInteractive,\n onUnsupported,\n onLoadScript,\n id,\n style,\n as = \"div\",\n injectScript = true,\n ...divProps\n } = props;\n const widgetSize = options.size ?? \"normal\";\n const [containerStyle, setContainerStyle] = useState(\n options.execution === \"execute\" ? CONTAINER_STYLE_SET.invisible : options.appearance === \"interaction-only\" ? CONTAINER_STYLE_SET.interactionOnly : CONTAINER_STYLE_SET[widgetSize]\n );\n const containerRef = useRef(null);\n const firstRendered = useRef(false);\n const [widgetId, setWidgetId] = useState();\n const [turnstileLoaded, setTurnstileLoaded] = useState(false);\n const containerId = id ?? DEFAULT_CONTAINER_ID;\n const scriptId = injectScript ? scriptOptions?.id || `${DEFAULT_SCRIPT_ID}__${containerId}` : scriptOptions?.id || DEFAULT_SCRIPT_ID;\n const scriptLoaded = useObserveScript(scriptId);\n const onLoadCallbackName = scriptOptions?.onLoadCallbackName ? `${scriptOptions.onLoadCallbackName}__${containerId}` : `${DEFAULT_ONLOAD_NAME}__${containerId}`;\n const renderConfig = useMemo(\n () => ({\n sitekey: siteKey,\n action: options.action,\n cData: options.cData,\n callback: onSuccess,\n \"error-callback\": onError,\n \"expired-callback\": onExpire,\n \"before-interactive-callback\": onBeforeInteractive,\n \"after-interactive-callback\": onAfterInteractive,\n \"unsupported-callback\": onUnsupported,\n theme: options.theme ?? \"auto\",\n language: options.language ?? \"auto\",\n tabindex: options.tabIndex,\n \"response-field\": options.responseField,\n \"response-field-name\": options.responseFieldName,\n size: getTurnstileSizeOpts(widgetSize),\n retry: options.retry ?? \"auto\",\n \"retry-interval\": options.retryInterval ?? 8e3,\n \"refresh-expired\": options.refreshExpired ?? \"auto\",\n execution: options.execution ?? \"render\",\n appearance: options.appearance ?? \"always\"\n }),\n [\n siteKey,\n options,\n onSuccess,\n onError,\n onExpire,\n widgetSize,\n onBeforeInteractive,\n onAfterInteractive,\n onUnsupported\n ]\n );\n const renderConfigStringified = useMemo(() => JSON.stringify(renderConfig), [renderConfig]);\n useImperativeHandle(\n ref,\n () => {\n if (typeof window === \"undefined\" || !scriptLoaded) {\n return;\n }\n const { turnstile } = window;\n return {\n getResponse() {\n if (!turnstile?.getResponse || !widgetId) {\n console.warn(\"Turnstile has not been loaded\");\n return;\n }\n return turnstile.getResponse(widgetId);\n },\n reset() {\n if (!turnstile?.reset || !widgetId) {\n console.warn(\"Turnstile has not been loaded\");\n return;\n }\n if (options.execution === \"execute\") {\n setContainerStyle(CONTAINER_STYLE_SET.invisible);\n }\n try {\n turnstile.reset(widgetId);\n } catch (error) {\n console.warn(`Failed to reset Turnstile widget ${widgetId}`, error);\n }\n },\n remove() {\n if (!turnstile?.remove || !widgetId) {\n console.warn(\"Turnstile has not been loaded\");\n return;\n }\n setWidgetId(\"\");\n setContainerStyle(CONTAINER_STYLE_SET.invisible);\n turnstile.remove(widgetId);\n },\n render() {\n if (!turnstile?.render || !containerRef.current || widgetId) {\n console.warn(\"Turnstile has not been loaded or widget already rendered\");\n return;\n }\n const id2 = turnstile.render(containerRef.current, renderConfig);\n setWidgetId(id2);\n if (options.execution !== \"execute\") {\n setContainerStyle(CONTAINER_STYLE_SET[widgetSize]);\n }\n return id2;\n },\n execute() {\n if (options.execution !== \"execute\") {\n return;\n }\n if (!turnstile?.execute || !containerRef.current || !widgetId) {\n console.warn(\"Turnstile has not been loaded or widget has not been rendered\");\n return;\n }\n turnstile.execute(containerRef.current, renderConfig);\n setContainerStyle(CONTAINER_STYLE_SET[widgetSize]);\n },\n isExpired() {\n if (!turnstile?.isExpired || !widgetId) {\n console.warn(\"Turnstile has not been loaded\");\n return;\n }\n return turnstile.isExpired(widgetId);\n }\n };\n },\n [scriptLoaded, widgetId, options.execution, widgetSize, renderConfig, containerRef]\n );\n useEffect(() => {\n window[onLoadCallbackName] = () => setTurnstileLoaded(true);\n return () => {\n delete window[onLoadCallbackName];\n };\n }, [onLoadCallbackName]);\n useEffect(() => {\n if (injectScript && !turnstileLoaded) {\n injectTurnstileScript({\n onLoadCallbackName,\n scriptOptions: {\n ...scriptOptions,\n id: scriptId\n }\n });\n }\n }, [injectScript, turnstileLoaded, onLoadCallbackName, scriptOptions, scriptId]);\n useEffect(() => {\n if (scriptLoaded && !turnstileLoaded && window.turnstile) {\n setTurnstileLoaded(true);\n }\n }, [turnstileLoaded, scriptLoaded]);\n useEffect(() => {\n if (!siteKey) {\n console.warn(\"sitekey was not provided\");\n return;\n }\n if (!scriptLoaded || !containerRef.current || !turnstileLoaded || firstRendered.current) {\n return;\n }\n const id2 = window.turnstile.render(containerRef.current, renderConfig);\n setWidgetId(id2);\n firstRendered.current = true;\n }, [scriptLoaded, siteKey, renderConfig, firstRendered, turnstileLoaded]);\n useEffect(() => {\n if (!window.turnstile)\n return;\n if (containerRef.current && widgetId) {\n if (checkElementExistence(widgetId)) {\n window.turnstile.remove(widgetId);\n }\n const newWidgetId = window.turnstile.render(containerRef.current, renderConfig);\n setWidgetId(newWidgetId);\n firstRendered.current = true;\n }\n }, [renderConfigStringified, siteKey]);\n useEffect(() => {\n if (!window.turnstile)\n return;\n if (!widgetId)\n return;\n if (!checkElementExistence(widgetId))\n return;\n onWidgetLoad?.(widgetId);\n return () => {\n window.turnstile.remove(widgetId);\n };\n }, [widgetId, onWidgetLoad]);\n useEffect(() => {\n setContainerStyle(\n options.execution === \"execute\" ? CONTAINER_STYLE_SET.invisible : renderConfig.appearance === \"interaction-only\" ? CONTAINER_STYLE_SET.interactionOnly : CONTAINER_STYLE_SET[widgetSize]\n );\n }, [options.execution, widgetSize, renderConfig.appearance]);\n useEffect(() => {\n if (!scriptLoaded || typeof onLoadScript !== \"function\")\n return;\n onLoadScript();\n }, [scriptLoaded, onLoadScript]);\n return /* @__PURE__ */ jsx(\n Container,\n {\n ref: containerRef,\n as,\n id: containerId,\n style: { ...containerStyle, ...style },\n ...divProps\n }\n );\n});\nTurnstile.displayName = \"Turnstile\";\n\nexport { DEFAULT_CONTAINER_ID, DEFAULT_ONLOAD_NAME, DEFAULT_SCRIPT_ID, SCRIPT_URL, Turnstile };\n","import * as React from \"react\";\nfunction ExclamationTriangleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ExclamationTriangleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction WalletIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M21 12a2.25 2.25 0 0 0-2.25-2.25H15a3 3 0 1 1-6 0H5.25A2.25 2.25 0 0 0 3 12m18 0v6a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 18v-6m18 0V9M3 12V9m18 0a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 9m18 0V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v3\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(WalletIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ExclamationCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ExclamationCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ArrowTopRightOnSquareIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ArrowTopRightOnSquareIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction DocumentCheckIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9 1.5H5.625c-1.036 0-1.875.84-1.875 1.875v17.25c0 1.035.84 1.875 1.875 1.875h12.75c1.035 0 1.875-.84 1.875-1.875V12.75A3.75 3.75 0 0 0 16.5 9h-1.875a1.875 1.875 0 0 1-1.875-1.875V5.25A3.75 3.75 0 0 0 9 1.5Zm6.61 10.936a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 14.47a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\",\n clipRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.971 1.816A5.23 5.23 0 0 1 14.25 5.25v1.875c0 .207.168.375.375.375H16.5a5.23 5.23 0 0 1 3.434 1.279 9.768 9.768 0 0 0-6.963-6.963Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(DocumentCheckIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CheckIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M16.704 4.153a.75.75 0 0 1 .143 1.052l-8 10.5a.75.75 0 0 1-1.127.075l-4.5-4.5a.75.75 0 0 1 1.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 0 1 1.05-.143Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CheckIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction EnvelopeIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M21.75 6.75v10.5a2.25 2.25 0 0 1-2.25 2.25h-15a2.25 2.25 0 0 1-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25m19.5 0v.243a2.25 2.25 0 0 1-1.07 1.916l-7.5 4.615a2.25 2.25 0 0 1-2.36 0L3.32 8.91a2.25 2.25 0 0 1-1.07-1.916V6.75\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(EnvelopeIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction PhoneIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M2.25 6.75c0 8.284 6.716 15 15 15h2.25a2.25 2.25 0 0 0 2.25-2.25v-1.372c0-.516-.351-.966-.852-1.091l-4.423-1.106c-.44-.11-.902.055-1.173.417l-.97 1.293c-.282.376-.769.542-1.21.38a12.035 12.035 0 0 1-7.143-7.143c-.162-.441.004-.928.38-1.21l1.293-.97c.363-.271.527-.734.417-1.173L6.963 3.102a1.125 1.125 0 0 0-1.091-.852H4.5A2.25 2.25 0 0 0 2.25 4.5v2.25Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(PhoneIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CheckCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CheckCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction XCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25Zm-1.72 6.97a.75.75 0 1 0-1.06 1.06L10.94 12l-1.72 1.72a.75.75 0 1 0 1.06 1.06L12 13.06l1.72 1.72a.75.75 0 1 0 1.06-1.06L13.06 12l1.72-1.72a.75.75 0 1 0-1.06-1.06L12 10.94l-1.72-1.72Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(XCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CheckCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CheckCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CloudArrowUpIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 16.5V9.75m0 0 3 3m-3-3-3 3M6.75 19.5a4.5 4.5 0 0 1-1.41-8.775 5.25 5.25 0 0 1 10.233-2.33 3 3 0 0 1 3.758 3.848A3.752 3.752 0 0 1 18 19.5H6.75Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CloudArrowUpIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction NoSymbolIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M18.364 18.364A9 9 0 0 0 5.636 5.636m12.728 12.728A9 9 0 0 1 5.636 5.636m12.728 12.728L5.636 5.636\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(NoSymbolIcon);\nexport default ForwardRef;","export function getRandomBytes(numBytes: number): Uint8Array {\n return crypto.getRandomValues(new Uint8Array(numBytes));\n}\n","import { getRandomBytes } from 'secure-password-utilities/csprng';\n\nconst MAXIMUM_ONE_BYTE_VALUE = 256;\nconst MAXIMUM_TWO_BYTE_VALUE = 65536;\n\nfunction getOneByteRandomInteger() {\n const [byte] = getRandomBytes(1);\n return byte;\n}\n\nfunction getTwoByteRandomInteger() {\n const [byte1, byte2] = getRandomBytes(2);\n return (byte1 << 8) + byte2;\n}\n\nfunction getRandomNumberLessThan(number: number) {\n if (typeof number !== 'number' || number < 2 || number > MAXIMUM_TWO_BYTE_VALUE) {\n throw new Error(\n `Invalid number: number must be at least two and at most ${MAXIMUM_TWO_BYTE_VALUE}`\n );\n }\n\n const needsTwoBytes = number > 256;\n const maxValue = needsTwoBytes ? MAXIMUM_TWO_BYTE_VALUE : MAXIMUM_ONE_BYTE_VALUE;\n const getRandomNumber = needsTwoBytes ? getTwoByteRandomInteger : getOneByteRandomInteger;\n\n // We are going to calculate the maximum numeric value that is *evenly divisible* by\n // the number argument. By only considering random values GTE zero and LT this value,\n // we give each number in the requested range an equal probability of being chosen when\n // using the modulo operator and thus avoiding modulo bias.\n //\n // The reason for choosing the maximum value, as opposed to the requested number argument\n // itself, is efficiency. For example, let's say the number argument is 10. If we naively\n // filter out any bytes from the RNG that are not between 0 and 10, then we would be\n // rejecting > 95% of the bytes returned from the RNG. Instead we can do much better\n // by selecting bytes in the range [0, 250) mod 10, which only rejects < 5% of bytes\n // from the RNG. This is especially important when dealing with two-byte numbers.\n const randomNumberMax = number * Math.floor(maxValue / number);\n\n while (true) {\n const randomNumber = getRandomNumber();\n\n // Be careful that the random number is strictly LESS THAN the random number max.\n if (randomNumber < randomNumberMax) {\n return randomNumber % number;\n }\n }\n}\n\n/**\n * Get a list of random numbers where each number is greater than or equal to `start` and less than `end`.\n *\n * The `end` of the range must be less than or equal to 2^16.\n *\n * Examples:\n *\n * getRandomNumbersInRange(6, 0, 10) // [8, 2, 1, 3, 5, 0]\n *\n * getRandomNumbersInRange(6, 10, 1000); // [111, 752, 41, 420, 360, 630]\n *\n * @param length The length of the resulting list of random numbers.\n * @param start The start of the range (inclusive).\n * @param end The end of the range (exclusive). Cannot exceed 2^16.\n * @returns A list of `length` random numbers in the desired range.\n */\nexport function getRandomNumbersInRange(length: number, start: number, end: number): number[] {\n if (typeof length !== 'number' || length < 1) {\n throw new Error('Invalid argument: length must be a number greater than or equal to 1');\n }\n\n if (typeof start !== 'number' || start < 0) {\n throw new Error('Invalid argument: start must be a number greater than or equal to 0');\n }\n\n if (typeof end !== 'number' || end > MAXIMUM_TWO_BYTE_VALUE) {\n throw new Error(\n `Invalid argument: end must be a number less than or equal to ${MAXIMUM_TWO_BYTE_VALUE}`\n );\n }\n\n if (end - start < 2) {\n throw new Error('Invalid range: range must contain at least two values');\n }\n\n const values = [];\n\n for (let i = 0; i < length; i++) {\n values[i] = start + getRandomNumberLessThan(end - start);\n }\n\n return values;\n}\n\n/**\n * Randomize the ordering of the characters in the given string.\n *\n * Examples:\n *\n * randomizeCharacters('randomize me'); // e znmaedimro\n * randomizeCharacters('randomize me'); // arndimz moee\n * randomizeCharacters('randomize me'); // ai emdonmrze\n *\n * @param characters A string of characters to randomize.\n * @returns A random ordering of the `characters` argument.\n */\nexport function randomizeCharacters(characters: string) {\n if (typeof characters !== 'string') {\n throw new Error('Invalid argument: characters argument must be a string');\n }\n\n const charactersLength = characters.length;\n\n if (charactersLength < 2) {\n return characters;\n }\n\n // Get random values within the index range of our input characters.\n // We will use these values to swap elements from the input.\n //\n // NOTE: This can contain duplicates, which is desired (random), but it does\n // mean that we cannot construct the resulting string solely from these values\n // as they may contain duplicates and be missing some indices in the input string.\n //\n // For example:\n //\n // * Let's say `characters` here is the string \"M9bz\"\n // * `charactersLength` is the number 4\n // * We'll then call getRandomValues(4, 4)\n // * This might return `UInt8Array([3, 2, 3, 0])`\n // * Then we'll iterate over the characters and at each position `i` we'll\n // swap `character[i]` with the one at `characters[swapIndices[i]]`.\n //\n const swapIndices = getRandomNumbersInRange(charactersLength, 0, charactersLength);\n\n // We start with the input as a list because strings\n // are immutable and we need to swap elements.\n const result = Array.from(characters);\n\n for (let i = 0; i < charactersLength; i++) {\n const j = swapIndices[i];\n\n // Swap elements at i and j\n const temp = result[i];\n result[i] = result[j];\n result[j] = temp;\n }\n\n return result.join('');\n}\n\n/**\n * Get random values between 0 and `rangeMax` (at most, 256 exclusive) from a CSPRNG.\n *\n * This is a helper function to safely filter random byte values into a desired range.\n * \"safely\" here meaning careful use of the modulo operator to avoid modulo bias.\n *\n * This is deprecated. Use `getRandomNumbersInRange` instead.\n *\n * Examples:\n *\n * getRandomValues(6, 10); // Returns a Uint8Array of length 6 with values between 0-9 inclusive.\n *\n * getRandomValues(12, 52); // Returns a Uint8Array of length 12 with values between 0-51 inclusive.\n *\n * @deprecated\n * @param numValues The number of random values to return.\n * @param rangeMax Values returned must be strictly less than this value.\n * @returns A random set of values between 0 (inclusive) and rangeMax (exclusive).\n */\nexport function getRandomValues(numValues: number, rangeMax = 256): Uint8Array {\n if (numValues < 0) {\n throw new Error('Invalid number of values: number of values to return must be at least 0');\n }\n\n if (typeof rangeMax !== 'number' || rangeMax > 256) {\n throw new Error('Invalid range max: range max must be a number that is at most 256');\n }\n\n if (numValues === 0) {\n return new Uint8Array(0);\n }\n\n // Any byte values will work just fine in this case.\n if (rangeMax === 256) {\n return getRandomBytes(numValues);\n }\n\n const values = new Uint8Array(numValues);\n\n for (let i = 0; i < numValues; i++) {\n values[i] = getRandomNumberLessThan(rangeMax);\n }\n\n return values;\n}\n","/**\n * This is the EFF long word list. More details here:\n *\n * * https://www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases\n * * https://www.eff.org/files/2016/07/18/eff_large_wordlist.txt\n */\nexport const EFF_LONG_WORDLIST = Object.freeze([\n 'abacus',\n 'abdomen',\n 'abdominal',\n 'abide',\n 'abiding',\n 'ability',\n 'ablaze',\n 'able',\n 'abnormal',\n 'abrasion',\n 'abrasive',\n 'abreast',\n 'abridge',\n 'abroad',\n 'abruptly',\n 'absence',\n 'absentee',\n 'absently',\n 'absinthe',\n 'absolute',\n 'absolve',\n 'abstain',\n 'abstract',\n 'absurd',\n 'accent',\n 'acclaim',\n 'acclimate',\n 'accompany',\n 'account',\n 'accuracy',\n 'accurate',\n 'accustom',\n 'acetone',\n 'achiness',\n 'aching',\n 'acid',\n 'acorn',\n 'acquaint',\n 'acquire',\n 'acre',\n 'acrobat',\n 'acronym',\n 'acting',\n 'action',\n 'activate',\n 'activator',\n 'active',\n 'activism',\n 'activist',\n 'activity',\n 'actress',\n 'acts',\n 'acutely',\n 'acuteness',\n 'aeration',\n 'aerobics',\n 'aerosol',\n 'aerospace',\n 'afar',\n 'affair',\n 'affected',\n 'affecting',\n 'affection',\n 'affidavit',\n 'affiliate',\n 'affirm',\n 'affix',\n 'afflicted',\n 'affluent',\n 'afford',\n 'affront',\n 'aflame',\n 'afloat',\n 'aflutter',\n 'afoot',\n 'afraid',\n 'afterglow',\n 'afterlife',\n 'aftermath',\n 'aftermost',\n 'afternoon',\n 'aged',\n 'ageless',\n 'agency',\n 'agenda',\n 'agent',\n 'aggregate',\n 'aghast',\n 'agile',\n 'agility',\n 'aging',\n 'agnostic',\n 'agonize',\n 'agonizing',\n 'agony',\n 'agreeable',\n 'agreeably',\n 'agreed',\n 'agreeing',\n 'agreement',\n 'aground',\n 'ahead',\n 'ahoy',\n 'aide',\n 'aids',\n 'aim',\n 'ajar',\n 'alabaster',\n 'alarm',\n 'albatross',\n 'album',\n 'alfalfa',\n 'algebra',\n 'algorithm',\n 'alias',\n 'alibi',\n 'alienable',\n 'alienate',\n 'aliens',\n 'alike',\n 'alive',\n 'alkaline',\n 'alkalize',\n 'almanac',\n 'almighty',\n 'almost',\n 'aloe',\n 'aloft',\n 'aloha',\n 'alone',\n 'alongside',\n 'aloof',\n 'alphabet',\n 'alright',\n 'although',\n 'altitude',\n 'alto',\n 'aluminum',\n 'alumni',\n 'always',\n 'amaretto',\n 'amaze',\n 'amazingly',\n 'amber',\n 'ambiance',\n 'ambiguity',\n 'ambiguous',\n 'ambition',\n 'ambitious',\n 'ambulance',\n 'ambush',\n 'amendable',\n 'amendment',\n 'amends',\n 'amenity',\n 'amiable',\n 'amicably',\n 'amid',\n 'amigo',\n 'amino',\n 'amiss',\n 'ammonia',\n 'ammonium',\n 'amnesty',\n 'amniotic',\n 'among',\n 'amount',\n 'amperage',\n 'ample',\n 'amplifier',\n 'amplify',\n 'amply',\n 'amuck',\n 'amulet',\n 'amusable',\n 'amused',\n 'amusement',\n 'amuser',\n 'amusing',\n 'anaconda',\n 'anaerobic',\n 'anagram',\n 'anatomist',\n 'anatomy',\n 'anchor',\n 'anchovy',\n 'ancient',\n 'android',\n 'anemia',\n 'anemic',\n 'aneurism',\n 'anew',\n 'angelfish',\n 'angelic',\n 'anger',\n 'angled',\n 'angler',\n 'angles',\n 'angling',\n 'angrily',\n 'angriness',\n 'anguished',\n 'angular',\n 'animal',\n 'animate',\n 'animating',\n 'animation',\n 'animator',\n 'anime',\n 'animosity',\n 'ankle',\n 'annex',\n 'annotate',\n 'announcer',\n 'annoying',\n 'annually',\n 'annuity',\n 'anointer',\n 'another',\n 'answering',\n 'antacid',\n 'antarctic',\n 'anteater',\n 'antelope',\n 'antennae',\n 'anthem',\n 'anthill',\n 'anthology',\n 'antibody',\n 'antics',\n 'antidote',\n 'antihero',\n 'antiquely',\n 'antiques',\n 'antiquity',\n 'antirust',\n 'antitoxic',\n 'antitrust',\n 'antiviral',\n 'antivirus',\n 'antler',\n 'antonym',\n 'antsy',\n 'anvil',\n 'anybody',\n 'anyhow',\n 'anymore',\n 'anyone',\n 'anyplace',\n 'anything',\n 'anytime',\n 'anyway',\n 'anywhere',\n 'aorta',\n 'apache',\n 'apostle',\n 'appealing',\n 'appear',\n 'appease',\n 'appeasing',\n 'appendage',\n 'appendix',\n 'appetite',\n 'appetizer',\n 'applaud',\n 'applause',\n 'apple',\n 'appliance',\n 'applicant',\n 'applied',\n 'apply',\n 'appointee',\n 'appraisal',\n 'appraiser',\n 'apprehend',\n 'approach',\n 'approval',\n 'approve',\n 'apricot',\n 'april',\n 'apron',\n 'aptitude',\n 'aptly',\n 'aqua',\n 'aqueduct',\n 'arbitrary',\n 'arbitrate',\n 'ardently',\n 'area',\n 'arena',\n 'arguable',\n 'arguably',\n 'argue',\n 'arise',\n 'armadillo',\n 'armband',\n 'armchair',\n 'armed',\n 'armful',\n 'armhole',\n 'arming',\n 'armless',\n 'armoire',\n 'armored',\n 'armory',\n 'armrest',\n 'army',\n 'aroma',\n 'arose',\n 'around',\n 'arousal',\n 'arrange',\n 'array',\n 'arrest',\n 'arrival',\n 'arrive',\n 'arrogance',\n 'arrogant',\n 'arson',\n 'art',\n 'ascend',\n 'ascension',\n 'ascent',\n 'ascertain',\n 'ashamed',\n 'ashen',\n 'ashes',\n 'ashy',\n 'aside',\n 'askew',\n 'asleep',\n 'asparagus',\n 'aspect',\n 'aspirate',\n 'aspire',\n 'aspirin',\n 'astonish',\n 'astound',\n 'astride',\n 'astrology',\n 'astronaut',\n 'astronomy',\n 'astute',\n 'atlantic',\n 'atlas',\n 'atom',\n 'atonable',\n 'atop',\n 'atrium',\n 'atrocious',\n 'atrophy',\n 'attach',\n 'attain',\n 'attempt',\n 'attendant',\n 'attendee',\n 'attention',\n 'attentive',\n 'attest',\n 'attic',\n 'attire',\n 'attitude',\n 'attractor',\n 'attribute',\n 'atypical',\n 'auction',\n 'audacious',\n 'audacity',\n 'audible',\n 'audibly',\n 'audience',\n 'audio',\n 'audition',\n 'augmented',\n 'august',\n 'authentic',\n 'author',\n 'autism',\n 'autistic',\n 'autograph',\n 'automaker',\n 'automated',\n 'automatic',\n 'autopilot',\n 'available',\n 'avalanche',\n 'avatar',\n 'avenge',\n 'avenging',\n 'avenue',\n 'average',\n 'aversion',\n 'avert',\n 'aviation',\n 'aviator',\n 'avid',\n 'avoid',\n 'await',\n 'awaken',\n 'award',\n 'aware',\n 'awhile',\n 'awkward',\n 'awning',\n 'awoke',\n 'awry',\n 'axis',\n 'babble',\n 'babbling',\n 'babied',\n 'baboon',\n 'backache',\n 'backboard',\n 'backboned',\n 'backdrop',\n 'backed',\n 'backer',\n 'backfield',\n 'backfire',\n 'backhand',\n 'backing',\n 'backlands',\n 'backlash',\n 'backless',\n 'backlight',\n 'backlit',\n 'backlog',\n 'backpack',\n 'backpedal',\n 'backrest',\n 'backroom',\n 'backshift',\n 'backside',\n 'backslid',\n 'backspace',\n 'backspin',\n 'backstab',\n 'backstage',\n 'backtalk',\n 'backtrack',\n 'backup',\n 'backward',\n 'backwash',\n 'backwater',\n 'backyard',\n 'bacon',\n 'bacteria',\n 'bacterium',\n 'badass',\n 'badge',\n 'badland',\n 'badly',\n 'badness',\n 'baffle',\n 'baffling',\n 'bagel',\n 'bagful',\n 'baggage',\n 'bagged',\n 'baggie',\n 'bagginess',\n 'bagging',\n 'baggy',\n 'bagpipe',\n 'baguette',\n 'baked',\n 'bakery',\n 'bakeshop',\n 'baking',\n 'balance',\n 'balancing',\n 'balcony',\n 'balmy',\n 'balsamic',\n 'bamboo',\n 'banana',\n 'banish',\n 'banister',\n 'banjo',\n 'bankable',\n 'bankbook',\n 'banked',\n 'banker',\n 'banking',\n 'banknote',\n 'bankroll',\n 'banner',\n 'bannister',\n 'banshee',\n 'banter',\n 'barbecue',\n 'barbed',\n 'barbell',\n 'barber',\n 'barcode',\n 'barge',\n 'bargraph',\n 'barista',\n 'baritone',\n 'barley',\n 'barmaid',\n 'barman',\n 'barn',\n 'barometer',\n 'barrack',\n 'barracuda',\n 'barrel',\n 'barrette',\n 'barricade',\n 'barrier',\n 'barstool',\n 'bartender',\n 'barterer',\n 'bash',\n 'basically',\n 'basics',\n 'basil',\n 'basin',\n 'basis',\n 'basket',\n 'batboy',\n 'batch',\n 'bath',\n 'baton',\n 'bats',\n 'battalion',\n 'battered',\n 'battering',\n 'battery',\n 'batting',\n 'battle',\n 'bauble',\n 'bazooka',\n 'blabber',\n 'bladder',\n 'blade',\n 'blah',\n 'blame',\n 'blaming',\n 'blanching',\n 'blandness',\n 'blank',\n 'blaspheme',\n 'blasphemy',\n 'blast',\n 'blatancy',\n 'blatantly',\n 'blazer',\n 'blazing',\n 'bleach',\n 'bleak',\n 'bleep',\n 'blemish',\n 'blend',\n 'bless',\n 'blighted',\n 'blimp',\n 'bling',\n 'blinked',\n 'blinker',\n 'blinking',\n 'blinks',\n 'blip',\n 'blissful',\n 'blitz',\n 'blizzard',\n 'bloated',\n 'bloating',\n 'blob',\n 'blog',\n 'bloomers',\n 'blooming',\n 'blooper',\n 'blot',\n 'blouse',\n 'blubber',\n 'bluff',\n 'bluish',\n 'blunderer',\n 'blunt',\n 'blurb',\n 'blurred',\n 'blurry',\n 'blurt',\n 'blush',\n 'blustery',\n 'boaster',\n 'boastful',\n 'boasting',\n 'boat',\n 'bobbed',\n 'bobbing',\n 'bobble',\n 'bobcat',\n 'bobsled',\n 'bobtail',\n 'bodacious',\n 'body',\n 'bogged',\n 'boggle',\n 'bogus',\n 'boil',\n 'bok',\n 'bolster',\n 'bolt',\n 'bonanza',\n 'bonded',\n 'bonding',\n 'bondless',\n 'boned',\n 'bonehead',\n 'boneless',\n 'bonelike',\n 'boney',\n 'bonfire',\n 'bonnet',\n 'bonsai',\n 'bonus',\n 'bony',\n 'boogeyman',\n 'boogieman',\n 'book',\n 'boondocks',\n 'booted',\n 'booth',\n 'bootie',\n 'booting',\n 'bootlace',\n 'bootleg',\n 'boots',\n 'boozy',\n 'borax',\n 'boring',\n 'borough',\n 'borrower',\n 'borrowing',\n 'boss',\n 'botanical',\n 'botanist',\n 'botany',\n 'botch',\n 'both',\n 'bottle',\n 'bottling',\n 'bottom',\n 'bounce',\n 'bouncing',\n 'bouncy',\n 'bounding',\n 'boundless',\n 'bountiful',\n 'bovine',\n 'boxcar',\n 'boxer',\n 'boxing',\n 'boxlike',\n 'boxy',\n 'breach',\n 'breath',\n 'breeches',\n 'breeching',\n 'breeder',\n 'breeding',\n 'breeze',\n 'breezy',\n 'brethren',\n 'brewery',\n 'brewing',\n 'briar',\n 'bribe',\n 'brick',\n 'bride',\n 'bridged',\n 'brigade',\n 'bright',\n 'brilliant',\n 'brim',\n 'bring',\n 'brink',\n 'brisket',\n 'briskly',\n 'briskness',\n 'bristle',\n 'brittle',\n 'broadband',\n 'broadcast',\n 'broaden',\n 'broadly',\n 'broadness',\n 'broadside',\n 'broadways',\n 'broiler',\n 'broiling',\n 'broken',\n 'broker',\n 'bronchial',\n 'bronco',\n 'bronze',\n 'bronzing',\n 'brook',\n 'broom',\n 'brought',\n 'browbeat',\n 'brownnose',\n 'browse',\n 'browsing',\n 'bruising',\n 'brunch',\n 'brunette',\n 'brunt',\n 'brush',\n 'brussels',\n 'brute',\n 'brutishly',\n 'bubble',\n 'bubbling',\n 'bubbly',\n 'buccaneer',\n 'bucked',\n 'bucket',\n 'buckle',\n 'buckshot',\n 'buckskin',\n 'bucktooth',\n 'buckwheat',\n 'buddhism',\n 'buddhist',\n 'budding',\n 'buddy',\n 'budget',\n 'buffalo',\n 'buffed',\n 'buffer',\n 'buffing',\n 'buffoon',\n 'buggy',\n 'bulb',\n 'bulge',\n 'bulginess',\n 'bulgur',\n 'bulk',\n 'bulldog',\n 'bulldozer',\n 'bullfight',\n 'bullfrog',\n 'bullhorn',\n 'bullion',\n 'bullish',\n 'bullpen',\n 'bullring',\n 'bullseye',\n 'bullwhip',\n 'bully',\n 'bunch',\n 'bundle',\n 'bungee',\n 'bunion',\n 'bunkbed',\n 'bunkhouse',\n 'bunkmate',\n 'bunny',\n 'bunt',\n 'busboy',\n 'bush',\n 'busily',\n 'busload',\n 'bust',\n 'busybody',\n 'buzz',\n 'cabana',\n 'cabbage',\n 'cabbie',\n 'cabdriver',\n 'cable',\n 'caboose',\n 'cache',\n 'cackle',\n 'cacti',\n 'cactus',\n 'caddie',\n 'caddy',\n 'cadet',\n 'cadillac',\n 'cadmium',\n 'cage',\n 'cahoots',\n 'cake',\n 'calamari',\n 'calamity',\n 'calcium',\n 'calculate',\n 'calculus',\n 'caliber',\n 'calibrate',\n 'calm',\n 'caloric',\n 'calorie',\n 'calzone',\n 'camcorder',\n 'cameo',\n 'camera',\n 'camisole',\n 'camper',\n 'campfire',\n 'camping',\n 'campsite',\n 'campus',\n 'canal',\n 'canary',\n 'cancel',\n 'candied',\n 'candle',\n 'candy',\n 'cane',\n 'canine',\n 'canister',\n 'cannabis',\n 'canned',\n 'canning',\n 'cannon',\n 'cannot',\n 'canola',\n 'canon',\n 'canopener',\n 'canopy',\n 'canteen',\n 'canyon',\n 'capable',\n 'capably',\n 'capacity',\n 'cape',\n 'capillary',\n 'capital',\n 'capitol',\n 'capped',\n 'capricorn',\n 'capsize',\n 'capsule',\n 'caption',\n 'captivate',\n 'captive',\n 'captivity',\n 'capture',\n 'caramel',\n 'carat',\n 'caravan',\n 'carbon',\n 'cardboard',\n 'carded',\n 'cardiac',\n 'cardigan',\n 'cardinal',\n 'cardstock',\n 'carefully',\n 'caregiver',\n 'careless',\n 'caress',\n 'caretaker',\n 'cargo',\n 'caring',\n 'carless',\n 'carload',\n 'carmaker',\n 'carnage',\n 'carnation',\n 'carnival',\n 'carnivore',\n 'carol',\n 'carpenter',\n 'carpentry',\n 'carpool',\n 'carport',\n 'carried',\n 'carrot',\n 'carrousel',\n 'carry',\n 'cartel',\n 'cartload',\n 'carton',\n 'cartoon',\n 'cartridge',\n 'cartwheel',\n 'carve',\n 'carving',\n 'carwash',\n 'cascade',\n 'case',\n 'cash',\n 'casing',\n 'casino',\n 'casket',\n 'cassette',\n 'casually',\n 'casualty',\n 'catacomb',\n 'catalog',\n 'catalyst',\n 'catalyze',\n 'catapult',\n 'cataract',\n 'catatonic',\n 'catcall',\n 'catchable',\n 'catcher',\n 'catching',\n 'catchy',\n 'caterer',\n 'catering',\n 'catfight',\n 'catfish',\n 'cathedral',\n 'cathouse',\n 'catlike',\n 'catnap',\n 'catnip',\n 'catsup',\n 'cattail',\n 'cattishly',\n 'cattle',\n 'catty',\n 'catwalk',\n 'caucasian',\n 'caucus',\n 'causal',\n 'causation',\n 'cause',\n 'causing',\n 'cauterize',\n 'caution',\n 'cautious',\n 'cavalier',\n 'cavalry',\n 'caviar',\n 'cavity',\n 'cedar',\n 'celery',\n 'celestial',\n 'celibacy',\n 'celibate',\n 'celtic',\n 'cement',\n 'census',\n 'ceramics',\n 'ceremony',\n 'certainly',\n 'certainty',\n 'certified',\n 'certify',\n 'cesarean',\n 'cesspool',\n 'chafe',\n 'chaffing',\n 'chain',\n 'chair',\n 'chalice',\n 'challenge',\n 'chamber',\n 'chamomile',\n 'champion',\n 'chance',\n 'change',\n 'channel',\n 'chant',\n 'chaos',\n 'chaperone',\n 'chaplain',\n 'chapped',\n 'chaps',\n 'chapter',\n 'character',\n 'charbroil',\n 'charcoal',\n 'charger',\n 'charging',\n 'chariot',\n 'charity',\n 'charm',\n 'charred',\n 'charter',\n 'charting',\n 'chase',\n 'chasing',\n 'chaste',\n 'chastise',\n 'chastity',\n 'chatroom',\n 'chatter',\n 'chatting',\n 'chatty',\n 'cheating',\n 'cheddar',\n 'cheek',\n 'cheer',\n 'cheese',\n 'cheesy',\n 'chef',\n 'chemicals',\n 'chemist',\n 'chemo',\n 'cherisher',\n 'cherub',\n 'chess',\n 'chest',\n 'chevron',\n 'chevy',\n 'chewable',\n 'chewer',\n 'chewing',\n 'chewy',\n 'chief',\n 'chihuahua',\n 'childcare',\n 'childhood',\n 'childish',\n 'childless',\n 'childlike',\n 'chili',\n 'chill',\n 'chimp',\n 'chip',\n 'chirping',\n 'chirpy',\n 'chitchat',\n 'chivalry',\n 'chive',\n 'chloride',\n 'chlorine',\n 'choice',\n 'chokehold',\n 'choking',\n 'chomp',\n 'chooser',\n 'choosing',\n 'choosy',\n 'chop',\n 'chosen',\n 'chowder',\n 'chowtime',\n 'chrome',\n 'chubby',\n 'chuck',\n 'chug',\n 'chummy',\n 'chump',\n 'chunk',\n 'churn',\n 'chute',\n 'cider',\n 'cilantro',\n 'cinch',\n 'cinema',\n 'cinnamon',\n 'circle',\n 'circling',\n 'circular',\n 'circulate',\n 'circus',\n 'citable',\n 'citadel',\n 'citation',\n 'citizen',\n 'citric',\n 'citrus',\n 'city',\n 'civic',\n 'civil',\n 'clad',\n 'claim',\n 'clambake',\n 'clammy',\n 'clamor',\n 'clamp',\n 'clamshell',\n 'clang',\n 'clanking',\n 'clapped',\n 'clapper',\n 'clapping',\n 'clarify',\n 'clarinet',\n 'clarity',\n 'clash',\n 'clasp',\n 'class',\n 'clatter',\n 'clause',\n 'clavicle',\n 'claw',\n 'clay',\n 'clean',\n 'clear',\n 'cleat',\n 'cleaver',\n 'cleft',\n 'clench',\n 'clergyman',\n 'clerical',\n 'clerk',\n 'clever',\n 'clicker',\n 'client',\n 'climate',\n 'climatic',\n 'cling',\n 'clinic',\n 'clinking',\n 'clip',\n 'clique',\n 'cloak',\n 'clobber',\n 'clock',\n 'clone',\n 'cloning',\n 'closable',\n 'closure',\n 'clothes',\n 'clothing',\n 'cloud',\n 'clover',\n 'clubbed',\n 'clubbing',\n 'clubhouse',\n 'clump',\n 'clumsily',\n 'clumsy',\n 'clunky',\n 'clustered',\n 'clutch',\n 'clutter',\n 'coach',\n 'coagulant',\n 'coastal',\n 'coaster',\n 'coasting',\n 'coastland',\n 'coastline',\n 'coat',\n 'coauthor',\n 'cobalt',\n 'cobbler',\n 'cobweb',\n 'cocoa',\n 'coconut',\n 'cod',\n 'coeditor',\n 'coerce',\n 'coexist',\n 'coffee',\n 'cofounder',\n 'cognition',\n 'cognitive',\n 'cogwheel',\n 'coherence',\n 'coherent',\n 'cohesive',\n 'coil',\n 'coke',\n 'cola',\n 'cold',\n 'coleslaw',\n 'coliseum',\n 'collage',\n 'collapse',\n 'collar',\n 'collected',\n 'collector',\n 'collide',\n 'collie',\n 'collision',\n 'colonial',\n 'colonist',\n 'colonize',\n 'colony',\n 'colossal',\n 'colt',\n 'coma',\n 'come',\n 'comfort',\n 'comfy',\n 'comic',\n 'coming',\n 'comma',\n 'commence',\n 'commend',\n 'comment',\n 'commerce',\n 'commode',\n 'commodity',\n 'commodore',\n 'common',\n 'commotion',\n 'commute',\n 'commuting',\n 'compacted',\n 'compacter',\n 'compactly',\n 'compactor',\n 'companion',\n 'company',\n 'compare',\n 'compel',\n 'compile',\n 'comply',\n 'component',\n 'composed',\n 'composer',\n 'composite',\n 'compost',\n 'composure',\n 'compound',\n 'compress',\n 'comprised',\n 'computer',\n 'computing',\n 'comrade',\n 'concave',\n 'conceal',\n 'conceded',\n 'concept',\n 'concerned',\n 'concert',\n 'conch',\n 'concierge',\n 'concise',\n 'conclude',\n 'concrete',\n 'concur',\n 'condense',\n 'condiment',\n 'condition',\n 'condone',\n 'conducive',\n 'conductor',\n 'conduit',\n 'cone',\n 'confess',\n 'confetti',\n 'confidant',\n 'confident',\n 'confider',\n 'confiding',\n 'configure',\n 'confined',\n 'confining',\n 'confirm',\n 'conflict',\n 'conform',\n 'confound',\n 'confront',\n 'confused',\n 'confusing',\n 'confusion',\n 'congenial',\n 'congested',\n 'congrats',\n 'congress',\n 'conical',\n 'conjoined',\n 'conjure',\n 'conjuror',\n 'connected',\n 'connector',\n 'consensus',\n 'consent',\n 'console',\n 'consoling',\n 'consonant',\n 'constable',\n 'constant',\n 'constrain',\n 'constrict',\n 'construct',\n 'consult',\n 'consumer',\n 'consuming',\n 'contact',\n 'container',\n 'contempt',\n 'contend',\n 'contented',\n 'contently',\n 'contents',\n 'contest',\n 'context',\n 'contort',\n 'contour',\n 'contrite',\n 'control',\n 'contusion',\n 'convene',\n 'convent',\n 'copartner',\n 'cope',\n 'copied',\n 'copier',\n 'copilot',\n 'coping',\n 'copious',\n 'copper',\n 'copy',\n 'coral',\n 'cork',\n 'cornball',\n 'cornbread',\n 'corncob',\n 'cornea',\n 'corned',\n 'corner',\n 'cornfield',\n 'cornflake',\n 'cornhusk',\n 'cornmeal',\n 'cornstalk',\n 'corny',\n 'coronary',\n 'coroner',\n 'corporal',\n 'corporate',\n 'corral',\n 'correct',\n 'corridor',\n 'corrode',\n 'corroding',\n 'corrosive',\n 'corsage',\n 'corset',\n 'cortex',\n 'cosigner',\n 'cosmetics',\n 'cosmic',\n 'cosmos',\n 'cosponsor',\n 'cost',\n 'cottage',\n 'cotton',\n 'couch',\n 'cough',\n 'could',\n 'countable',\n 'countdown',\n 'counting',\n 'countless',\n 'country',\n 'county',\n 'courier',\n 'covenant',\n 'cover',\n 'coveted',\n 'coveting',\n 'coyness',\n 'cozily',\n 'coziness',\n 'cozy',\n 'crabbing',\n 'crabgrass',\n 'crablike',\n 'crabmeat',\n 'cradle',\n 'cradling',\n 'crafter',\n 'craftily',\n 'craftsman',\n 'craftwork',\n 'crafty',\n 'cramp',\n 'cranberry',\n 'crane',\n 'cranial',\n 'cranium',\n 'crank',\n 'crate',\n 'crave',\n 'craving',\n 'crawfish',\n 'crawlers',\n 'crawling',\n 'crayfish',\n 'crayon',\n 'crazed',\n 'crazily',\n 'craziness',\n 'crazy',\n 'creamed',\n 'creamer',\n 'creamlike',\n 'crease',\n 'creasing',\n 'creatable',\n 'create',\n 'creation',\n 'creative',\n 'creature',\n 'credible',\n 'credibly',\n 'credit',\n 'creed',\n 'creme',\n 'creole',\n 'crepe',\n 'crept',\n 'crescent',\n 'crested',\n 'cresting',\n 'crestless',\n 'crevice',\n 'crewless',\n 'crewman',\n 'crewmate',\n 'crib',\n 'cricket',\n 'cried',\n 'crier',\n 'crimp',\n 'crimson',\n 'cringe',\n 'cringing',\n 'crinkle',\n 'crinkly',\n 'crisped',\n 'crisping',\n 'crisply',\n 'crispness',\n 'crispy',\n 'criteria',\n 'critter',\n 'croak',\n 'crock',\n 'crook',\n 'croon',\n 'crop',\n 'cross',\n 'crouch',\n 'crouton',\n 'crowbar',\n 'crowd',\n 'crown',\n 'crucial',\n 'crudely',\n 'crudeness',\n 'cruelly',\n 'cruelness',\n 'cruelty',\n 'crumb',\n 'crummiest',\n 'crummy',\n 'crumpet',\n 'crumpled',\n 'cruncher',\n 'crunching',\n 'crunchy',\n 'crusader',\n 'crushable',\n 'crushed',\n 'crusher',\n 'crushing',\n 'crust',\n 'crux',\n 'crying',\n 'cryptic',\n 'crystal',\n 'cubbyhole',\n 'cube',\n 'cubical',\n 'cubicle',\n 'cucumber',\n 'cuddle',\n 'cuddly',\n 'cufflink',\n 'culinary',\n 'culminate',\n 'culpable',\n 'culprit',\n 'cultivate',\n 'cultural',\n 'culture',\n 'cupbearer',\n 'cupcake',\n 'cupid',\n 'cupped',\n 'cupping',\n 'curable',\n 'curator',\n 'curdle',\n 'cure',\n 'curfew',\n 'curing',\n 'curled',\n 'curler',\n 'curliness',\n 'curling',\n 'curly',\n 'curry',\n 'curse',\n 'cursive',\n 'cursor',\n 'curtain',\n 'curtly',\n 'curtsy',\n 'curvature',\n 'curve',\n 'curvy',\n 'cushy',\n 'cusp',\n 'cussed',\n 'custard',\n 'custodian',\n 'custody',\n 'customary',\n 'customer',\n 'customize',\n 'customs',\n 'cut',\n 'cycle',\n 'cyclic',\n 'cycling',\n 'cyclist',\n 'cylinder',\n 'cymbal',\n 'cytoplasm',\n 'cytoplast',\n 'dab',\n 'dad',\n 'daffodil',\n 'dagger',\n 'daily',\n 'daintily',\n 'dainty',\n 'dairy',\n 'daisy',\n 'dallying',\n 'dance',\n 'dancing',\n 'dandelion',\n 'dander',\n 'dandruff',\n 'dandy',\n 'danger',\n 'dangle',\n 'dangling',\n 'daredevil',\n 'dares',\n 'daringly',\n 'darkened',\n 'darkening',\n 'darkish',\n 'darkness',\n 'darkroom',\n 'darling',\n 'darn',\n 'dart',\n 'darwinism',\n 'dash',\n 'dastardly',\n 'data',\n 'datebook',\n 'dating',\n 'daughter',\n 'daunting',\n 'dawdler',\n 'dawn',\n 'daybed',\n 'daybreak',\n 'daycare',\n 'daydream',\n 'daylight',\n 'daylong',\n 'dayroom',\n 'daytime',\n 'dazzler',\n 'dazzling',\n 'deacon',\n 'deafening',\n 'deafness',\n 'dealer',\n 'dealing',\n 'dealmaker',\n 'dealt',\n 'dean',\n 'debatable',\n 'debate',\n 'debating',\n 'debit',\n 'debrief',\n 'debtless',\n 'debtor',\n 'debug',\n 'debunk',\n 'decade',\n 'decaf',\n 'decal',\n 'decathlon',\n 'decay',\n 'deceased',\n 'deceit',\n 'deceiver',\n 'deceiving',\n 'december',\n 'decency',\n 'decent',\n 'deception',\n 'deceptive',\n 'decibel',\n 'decidable',\n 'decimal',\n 'decimeter',\n 'decipher',\n 'deck',\n 'declared',\n 'decline',\n 'decode',\n 'decompose',\n 'decorated',\n 'decorator',\n 'decoy',\n 'decrease',\n 'decree',\n 'dedicate',\n 'dedicator',\n 'deduce',\n 'deduct',\n 'deed',\n 'deem',\n 'deepen',\n 'deeply',\n 'deepness',\n 'deface',\n 'defacing',\n 'defame',\n 'default',\n 'defeat',\n 'defection',\n 'defective',\n 'defendant',\n 'defender',\n 'defense',\n 'defensive',\n 'deferral',\n 'deferred',\n 'defiance',\n 'defiant',\n 'defile',\n 'defiling',\n 'define',\n 'definite',\n 'deflate',\n 'deflation',\n 'deflator',\n 'deflected',\n 'deflector',\n 'defog',\n 'deforest',\n 'defraud',\n 'defrost',\n 'deftly',\n 'defuse',\n 'defy',\n 'degraded',\n 'degrading',\n 'degrease',\n 'degree',\n 'dehydrate',\n 'deity',\n 'dejected',\n 'delay',\n 'delegate',\n 'delegator',\n 'delete',\n 'deletion',\n 'delicacy',\n 'delicate',\n 'delicious',\n 'delighted',\n 'delirious',\n 'delirium',\n 'deliverer',\n 'delivery',\n 'delouse',\n 'delta',\n 'deluge',\n 'delusion',\n 'deluxe',\n 'demanding',\n 'demeaning',\n 'demeanor',\n 'demise',\n 'democracy',\n 'democrat',\n 'demote',\n 'demotion',\n 'demystify',\n 'denatured',\n 'deniable',\n 'denial',\n 'denim',\n 'denote',\n 'dense',\n 'density',\n 'dental',\n 'dentist',\n 'denture',\n 'deny',\n 'deodorant',\n 'deodorize',\n 'departed',\n 'departure',\n 'depict',\n 'deplete',\n 'depletion',\n 'deplored',\n 'deploy',\n 'deport',\n 'depose',\n 'depraved',\n 'depravity',\n 'deprecate',\n 'depress',\n 'deprive',\n 'depth',\n 'deputize',\n 'deputy',\n 'derail',\n 'deranged',\n 'derby',\n 'derived',\n 'desecrate',\n 'deserve',\n 'deserving',\n 'designate',\n 'designed',\n 'designer',\n 'designing',\n 'deskbound',\n 'desktop',\n 'deskwork',\n 'desolate',\n 'despair',\n 'despise',\n 'despite',\n 'destiny',\n 'destitute',\n 'destruct',\n 'detached',\n 'detail',\n 'detection',\n 'detective',\n 'detector',\n 'detention',\n 'detergent',\n 'detest',\n 'detonate',\n 'detonator',\n 'detoxify',\n 'detract',\n 'deuce',\n 'devalue',\n 'deviancy',\n 'deviant',\n 'deviate',\n 'deviation',\n 'deviator',\n 'device',\n 'devious',\n 'devotedly',\n 'devotee',\n 'devotion',\n 'devourer',\n 'devouring',\n 'devoutly',\n 'dexterity',\n 'dexterous',\n 'diabetes',\n 'diabetic',\n 'diabolic',\n 'diagnoses',\n 'diagnosis',\n 'diagram',\n 'dial',\n 'diameter',\n 'diaper',\n 'diaphragm',\n 'diary',\n 'dice',\n 'dicing',\n 'dictate',\n 'dictation',\n 'dictator',\n 'difficult',\n 'diffused',\n 'diffuser',\n 'diffusion',\n 'diffusive',\n 'dig',\n 'dilation',\n 'diligence',\n 'diligent',\n 'dill',\n 'dilute',\n 'dime',\n 'diminish',\n 'dimly',\n 'dimmed',\n 'dimmer',\n 'dimness',\n 'dimple',\n 'diner',\n 'dingbat',\n 'dinghy',\n 'dinginess',\n 'dingo',\n 'dingy',\n 'dining',\n 'dinner',\n 'diocese',\n 'dioxide',\n 'diploma',\n 'dipped',\n 'dipper',\n 'dipping',\n 'directed',\n 'direction',\n 'directive',\n 'directly',\n 'directory',\n 'direness',\n 'dirtiness',\n 'disabled',\n 'disagree',\n 'disallow',\n 'disarm',\n 'disarray',\n 'disaster',\n 'disband',\n 'disbelief',\n 'disburse',\n 'discard',\n 'discern',\n 'discharge',\n 'disclose',\n 'discolor',\n 'discount',\n 'discourse',\n 'discover',\n 'discuss',\n 'disdain',\n 'disengage',\n 'disfigure',\n 'disgrace',\n 'dish',\n 'disinfect',\n 'disjoin',\n 'disk',\n 'dislike',\n 'disliking',\n 'dislocate',\n 'dislodge',\n 'disloyal',\n 'dismantle',\n 'dismay',\n 'dismiss',\n 'dismount',\n 'disobey',\n 'disorder',\n 'disown',\n 'disparate',\n 'disparity',\n 'dispatch',\n 'dispense',\n 'dispersal',\n 'dispersed',\n 'disperser',\n 'displace',\n 'display',\n 'displease',\n 'disposal',\n 'dispose',\n 'disprove',\n 'dispute',\n 'disregard',\n 'disrupt',\n 'dissuade',\n 'distance',\n 'distant',\n 'distaste',\n 'distill',\n 'distinct',\n 'distort',\n 'distract',\n 'distress',\n 'district',\n 'distrust',\n 'ditch',\n 'ditto',\n 'ditzy',\n 'dividable',\n 'divided',\n 'dividend',\n 'dividers',\n 'dividing',\n 'divinely',\n 'diving',\n 'divinity',\n 'divisible',\n 'divisibly',\n 'division',\n 'divisive',\n 'divorcee',\n 'dizziness',\n 'dizzy',\n 'doable',\n 'docile',\n 'dock',\n 'doctrine',\n 'document',\n 'dodge',\n 'dodgy',\n 'doily',\n 'doing',\n 'dole',\n 'dollar',\n 'dollhouse',\n 'dollop',\n 'dolly',\n 'dolphin',\n 'domain',\n 'domelike',\n 'domestic',\n 'dominion',\n 'dominoes',\n 'donated',\n 'donation',\n 'donator',\n 'donor',\n 'donut',\n 'doodle',\n 'doorbell',\n 'doorframe',\n 'doorknob',\n 'doorman',\n 'doormat',\n 'doornail',\n 'doorpost',\n 'doorstep',\n 'doorstop',\n 'doorway',\n 'doozy',\n 'dork',\n 'dormitory',\n 'dorsal',\n 'dosage',\n 'dose',\n 'dotted',\n 'doubling',\n 'douche',\n 'dove',\n 'down',\n 'dowry',\n 'doze',\n 'drab',\n 'dragging',\n 'dragonfly',\n 'dragonish',\n 'dragster',\n 'drainable',\n 'drainage',\n 'drained',\n 'drainer',\n 'drainpipe',\n 'dramatic',\n 'dramatize',\n 'drank',\n 'drapery',\n 'drastic',\n 'draw',\n 'dreaded',\n 'dreadful',\n 'dreadlock',\n 'dreamboat',\n 'dreamily',\n 'dreamland',\n 'dreamless',\n 'dreamlike',\n 'dreamt',\n 'dreamy',\n 'drearily',\n 'dreary',\n 'drench',\n 'dress',\n 'drew',\n 'dribble',\n 'dried',\n 'drier',\n 'drift',\n 'driller',\n 'drilling',\n 'drinkable',\n 'drinking',\n 'dripping',\n 'drippy',\n 'drivable',\n 'driven',\n 'driver',\n 'driveway',\n 'driving',\n 'drizzle',\n 'drizzly',\n 'drone',\n 'drool',\n 'droop',\n 'drop-down',\n 'dropbox',\n 'dropkick',\n 'droplet',\n 'dropout',\n 'dropper',\n 'drove',\n 'drown',\n 'drowsily',\n 'drudge',\n 'drum',\n 'dry',\n 'dubbed',\n 'dubiously',\n 'duchess',\n 'duckbill',\n 'ducking',\n 'duckling',\n 'ducktail',\n 'ducky',\n 'duct',\n 'dude',\n 'duffel',\n 'dugout',\n 'duh',\n 'duke',\n 'duller',\n 'dullness',\n 'duly',\n 'dumping',\n 'dumpling',\n 'dumpster',\n 'duo',\n 'dupe',\n 'duplex',\n 'duplicate',\n 'duplicity',\n 'durable',\n 'durably',\n 'duration',\n 'duress',\n 'during',\n 'dusk',\n 'dust',\n 'dutiful',\n 'duty',\n 'duvet',\n 'dwarf',\n 'dweeb',\n 'dwelled',\n 'dweller',\n 'dwelling',\n 'dwindle',\n 'dwindling',\n 'dynamic',\n 'dynamite',\n 'dynasty',\n 'dyslexia',\n 'dyslexic',\n 'each',\n 'eagle',\n 'earache',\n 'eardrum',\n 'earflap',\n 'earful',\n 'earlobe',\n 'early',\n 'earmark',\n 'earmuff',\n 'earphone',\n 'earpiece',\n 'earplugs',\n 'earring',\n 'earshot',\n 'earthen',\n 'earthlike',\n 'earthling',\n 'earthly',\n 'earthworm',\n 'earthy',\n 'earwig',\n 'easeful',\n 'easel',\n 'easiest',\n 'easily',\n 'easiness',\n 'easing',\n 'eastbound',\n 'eastcoast',\n 'easter',\n 'eastward',\n 'eatable',\n 'eaten',\n 'eatery',\n 'eating',\n 'eats',\n 'ebay',\n 'ebony',\n 'ebook',\n 'ecard',\n 'eccentric',\n 'echo',\n 'eclair',\n 'eclipse',\n 'ecologist',\n 'ecology',\n 'economic',\n 'economist',\n 'economy',\n 'ecosphere',\n 'ecosystem',\n 'edge',\n 'edginess',\n 'edging',\n 'edgy',\n 'edition',\n 'editor',\n 'educated',\n 'education',\n 'educator',\n 'eel',\n 'effective',\n 'effects',\n 'efficient',\n 'effort',\n 'eggbeater',\n 'egging',\n 'eggnog',\n 'eggplant',\n 'eggshell',\n 'egomaniac',\n 'egotism',\n 'egotistic',\n 'either',\n 'eject',\n 'elaborate',\n 'elastic',\n 'elated',\n 'elbow',\n 'eldercare',\n 'elderly',\n 'eldest',\n 'electable',\n 'election',\n 'elective',\n 'elephant',\n 'elevate',\n 'elevating',\n 'elevation',\n 'elevator',\n 'eleven',\n 'elf',\n 'eligible',\n 'eligibly',\n 'eliminate',\n 'elite',\n 'elitism',\n 'elixir',\n 'elk',\n 'ellipse',\n 'elliptic',\n 'elm',\n 'elongated',\n 'elope',\n 'eloquence',\n 'eloquent',\n 'elsewhere',\n 'elude',\n 'elusive',\n 'elves',\n 'email',\n 'embargo',\n 'embark',\n 'embassy',\n 'embattled',\n 'embellish',\n 'ember',\n 'embezzle',\n 'emblaze',\n 'emblem',\n 'embody',\n 'embolism',\n 'emboss',\n 'embroider',\n 'emcee',\n 'emerald',\n 'emergency',\n 'emission',\n 'emit',\n 'emote',\n 'emoticon',\n 'emotion',\n 'empathic',\n 'empathy',\n 'emperor',\n 'emphases',\n 'emphasis',\n 'emphasize',\n 'emphatic',\n 'empirical',\n 'employed',\n 'employee',\n 'employer',\n 'emporium',\n 'empower',\n 'emptier',\n 'emptiness',\n 'empty',\n 'emu',\n 'enable',\n 'enactment',\n 'enamel',\n 'enchanted',\n 'enchilada',\n 'encircle',\n 'enclose',\n 'enclosure',\n 'encode',\n 'encore',\n 'encounter',\n 'encourage',\n 'encroach',\n 'encrust',\n 'encrypt',\n 'endanger',\n 'endeared',\n 'endearing',\n 'ended',\n 'ending',\n 'endless',\n 'endnote',\n 'endocrine',\n 'endorphin',\n 'endorse',\n 'endowment',\n 'endpoint',\n 'endurable',\n 'endurance',\n 'enduring',\n 'energetic',\n 'energize',\n 'energy',\n 'enforced',\n 'enforcer',\n 'engaged',\n 'engaging',\n 'engine',\n 'engorge',\n 'engraved',\n 'engraver',\n 'engraving',\n 'engross',\n 'engulf',\n 'enhance',\n 'enigmatic',\n 'enjoyable',\n 'enjoyably',\n 'enjoyer',\n 'enjoying',\n 'enjoyment',\n 'enlarged',\n 'enlarging',\n 'enlighten',\n 'enlisted',\n 'enquirer',\n 'enrage',\n 'enrich',\n 'enroll',\n 'enslave',\n 'ensnare',\n 'ensure',\n 'entail',\n 'entangled',\n 'entering',\n 'entertain',\n 'enticing',\n 'entire',\n 'entitle',\n 'entity',\n 'entomb',\n 'entourage',\n 'entrap',\n 'entree',\n 'entrench',\n 'entrust',\n 'entryway',\n 'entwine',\n 'enunciate',\n 'envelope',\n 'enviable',\n 'enviably',\n 'envious',\n 'envision',\n 'envoy',\n 'envy',\n 'enzyme',\n 'epic',\n 'epidemic',\n 'epidermal',\n 'epidermis',\n 'epidural',\n 'epilepsy',\n 'epileptic',\n 'epilogue',\n 'epiphany',\n 'episode',\n 'equal',\n 'equate',\n 'equation',\n 'equator',\n 'equinox',\n 'equipment',\n 'equity',\n 'equivocal',\n 'eradicate',\n 'erasable',\n 'erased',\n 'eraser',\n 'erasure',\n 'ergonomic',\n 'errand',\n 'errant',\n 'erratic',\n 'error',\n 'erupt',\n 'escalate',\n 'escalator',\n 'escapable',\n 'escapade',\n 'escapist',\n 'escargot',\n 'eskimo',\n 'esophagus',\n 'espionage',\n 'espresso',\n 'esquire',\n 'essay',\n 'essence',\n 'essential',\n 'establish',\n 'estate',\n 'esteemed',\n 'estimate',\n 'estimator',\n 'estranged',\n 'estrogen',\n 'etching',\n 'eternal',\n 'eternity',\n 'ethanol',\n 'ether',\n 'ethically',\n 'ethics',\n 'euphemism',\n 'evacuate',\n 'evacuee',\n 'evade',\n 'evaluate',\n 'evaluator',\n 'evaporate',\n 'evasion',\n 'evasive',\n 'even',\n 'everglade',\n 'evergreen',\n 'everybody',\n 'everyday',\n 'everyone',\n 'evict',\n 'evidence',\n 'evident',\n 'evil',\n 'evoke',\n 'evolution',\n 'evolve',\n 'exact',\n 'exalted',\n 'example',\n 'excavate',\n 'excavator',\n 'exceeding',\n 'exception',\n 'excess',\n 'exchange',\n 'excitable',\n 'exciting',\n 'exclaim',\n 'exclude',\n 'excluding',\n 'exclusion',\n 'exclusive',\n 'excretion',\n 'excretory',\n 'excursion',\n 'excusable',\n 'excusably',\n 'excuse',\n 'exemplary',\n 'exemplify',\n 'exemption',\n 'exerciser',\n 'exert',\n 'exes',\n 'exfoliate',\n 'exhale',\n 'exhaust',\n 'exhume',\n 'exile',\n 'existing',\n 'exit',\n 'exodus',\n 'exonerate',\n 'exorcism',\n 'exorcist',\n 'expand',\n 'expanse',\n 'expansion',\n 'expansive',\n 'expectant',\n 'expedited',\n 'expediter',\n 'expel',\n 'expend',\n 'expenses',\n 'expensive',\n 'expert',\n 'expire',\n 'expiring',\n 'explain',\n 'expletive',\n 'explicit',\n 'explode',\n 'exploit',\n 'explore',\n 'exploring',\n 'exponent',\n 'exporter',\n 'exposable',\n 'expose',\n 'exposure',\n 'express',\n 'expulsion',\n 'exquisite',\n 'extended',\n 'extending',\n 'extent',\n 'extenuate',\n 'exterior',\n 'external',\n 'extinct',\n 'extortion',\n 'extradite',\n 'extras',\n 'extrovert',\n 'extrude',\n 'extruding',\n 'exuberant',\n 'fable',\n 'fabric',\n 'fabulous',\n 'facebook',\n 'facecloth',\n 'facedown',\n 'faceless',\n 'facelift',\n 'faceplate',\n 'faceted',\n 'facial',\n 'facility',\n 'facing',\n 'facsimile',\n 'faction',\n 'factoid',\n 'factor',\n 'factsheet',\n 'factual',\n 'faculty',\n 'fade',\n 'fading',\n 'failing',\n 'falcon',\n 'fall',\n 'false',\n 'falsify',\n 'fame',\n 'familiar',\n 'family',\n 'famine',\n 'famished',\n 'fanatic',\n 'fancied',\n 'fanciness',\n 'fancy',\n 'fanfare',\n 'fang',\n 'fanning',\n 'fantasize',\n 'fantastic',\n 'fantasy',\n 'fascism',\n 'fastball',\n 'faster',\n 'fasting',\n 'fastness',\n 'faucet',\n 'favorable',\n 'favorably',\n 'favored',\n 'favoring',\n 'favorite',\n 'fax',\n 'feast',\n 'federal',\n 'fedora',\n 'feeble',\n 'feed',\n 'feel',\n 'feisty',\n 'feline',\n 'felt-tip',\n 'feminine',\n 'feminism',\n 'feminist',\n 'feminize',\n 'femur',\n 'fence',\n 'fencing',\n 'fender',\n 'ferment',\n 'fernlike',\n 'ferocious',\n 'ferocity',\n 'ferret',\n 'ferris',\n 'ferry',\n 'fervor',\n 'fester',\n 'festival',\n 'festive',\n 'festivity',\n 'fetal',\n 'fetch',\n 'fever',\n 'fiber',\n 'fiction',\n 'fiddle',\n 'fiddling',\n 'fidelity',\n 'fidgeting',\n 'fidgety',\n 'fifteen',\n 'fifth',\n 'fiftieth',\n 'fifty',\n 'figment',\n 'figure',\n 'figurine',\n 'filing',\n 'filled',\n 'filler',\n 'filling',\n 'film',\n 'filter',\n 'filth',\n 'filtrate',\n 'finale',\n 'finalist',\n 'finalize',\n 'finally',\n 'finance',\n 'financial',\n 'finch',\n 'fineness',\n 'finer',\n 'finicky',\n 'finished',\n 'finisher',\n 'finishing',\n 'finite',\n 'finless',\n 'finlike',\n 'fiscally',\n 'fit',\n 'five',\n 'flaccid',\n 'flagman',\n 'flagpole',\n 'flagship',\n 'flagstick',\n 'flagstone',\n 'flail',\n 'flakily',\n 'flaky',\n 'flame',\n 'flammable',\n 'flanked',\n 'flanking',\n 'flannels',\n 'flap',\n 'flaring',\n 'flashback',\n 'flashbulb',\n 'flashcard',\n 'flashily',\n 'flashing',\n 'flashy',\n 'flask',\n 'flatbed',\n 'flatfoot',\n 'flatly',\n 'flatness',\n 'flatten',\n 'flattered',\n 'flatterer',\n 'flattery',\n 'flattop',\n 'flatware',\n 'flatworm',\n 'flavored',\n 'flavorful',\n 'flavoring',\n 'flaxseed',\n 'fled',\n 'fleshed',\n 'fleshy',\n 'flick',\n 'flier',\n 'flight',\n 'flinch',\n 'fling',\n 'flint',\n 'flip',\n 'flirt',\n 'float',\n 'flock',\n 'flogging',\n 'flop',\n 'floral',\n 'florist',\n 'floss',\n 'flounder',\n 'flyable',\n 'flyaway',\n 'flyer',\n 'flying',\n 'flyover',\n 'flypaper',\n 'foam',\n 'foe',\n 'fog',\n 'foil',\n 'folic',\n 'folk',\n 'follicle',\n 'follow',\n 'fondling',\n 'fondly',\n 'fondness',\n 'fondue',\n 'font',\n 'food',\n 'fool',\n 'footage',\n 'football',\n 'footbath',\n 'footboard',\n 'footer',\n 'footgear',\n 'foothill',\n 'foothold',\n 'footing',\n 'footless',\n 'footman',\n 'footnote',\n 'footpad',\n 'footpath',\n 'footprint',\n 'footrest',\n 'footsie',\n 'footsore',\n 'footwear',\n 'footwork',\n 'fossil',\n 'foster',\n 'founder',\n 'founding',\n 'fountain',\n 'fox',\n 'foyer',\n 'fraction',\n 'fracture',\n 'fragile',\n 'fragility',\n 'fragment',\n 'fragrance',\n 'fragrant',\n 'frail',\n 'frame',\n 'framing',\n 'frantic',\n 'fraternal',\n 'frayed',\n 'fraying',\n 'frays',\n 'freckled',\n 'freckles',\n 'freebase',\n 'freebee',\n 'freebie',\n 'freedom',\n 'freefall',\n 'freehand',\n 'freeing',\n 'freeload',\n 'freely',\n 'freemason',\n 'freeness',\n 'freestyle',\n 'freeware',\n 'freeway',\n 'freewill',\n 'freezable',\n 'freezing',\n 'freight',\n 'french',\n 'frenzied',\n 'frenzy',\n 'frequency',\n 'frequent',\n 'fresh',\n 'fretful',\n 'fretted',\n 'friction',\n 'friday',\n 'fridge',\n 'fried',\n 'friend',\n 'frighten',\n 'frightful',\n 'frigidity',\n 'frigidly',\n 'frill',\n 'fringe',\n 'frisbee',\n 'frisk',\n 'fritter',\n 'frivolous',\n 'frolic',\n 'from',\n 'front',\n 'frostbite',\n 'frosted',\n 'frostily',\n 'frosting',\n 'frostlike',\n 'frosty',\n 'froth',\n 'frown',\n 'frozen',\n 'fructose',\n 'frugality',\n 'frugally',\n 'fruit',\n 'frustrate',\n 'frying',\n 'gab',\n 'gaffe',\n 'gag',\n 'gainfully',\n 'gaining',\n 'gains',\n 'gala',\n 'gallantly',\n 'galleria',\n 'gallery',\n 'galley',\n 'gallon',\n 'gallows',\n 'gallstone',\n 'galore',\n 'galvanize',\n 'gambling',\n 'game',\n 'gaming',\n 'gamma',\n 'gander',\n 'gangly',\n 'gangrene',\n 'gangway',\n 'gap',\n 'garage',\n 'garbage',\n 'garden',\n 'gargle',\n 'garland',\n 'garlic',\n 'garment',\n 'garnet',\n 'garnish',\n 'garter',\n 'gas',\n 'gatherer',\n 'gathering',\n 'gating',\n 'gauging',\n 'gauntlet',\n 'gauze',\n 'gave',\n 'gawk',\n 'gazing',\n 'gear',\n 'gecko',\n 'geek',\n 'geiger',\n 'gem',\n 'gender',\n 'generic',\n 'generous',\n 'genetics',\n 'genre',\n 'gentile',\n 'gentleman',\n 'gently',\n 'gents',\n 'geography',\n 'geologic',\n 'geologist',\n 'geology',\n 'geometric',\n 'geometry',\n 'geranium',\n 'gerbil',\n 'geriatric',\n 'germicide',\n 'germinate',\n 'germless',\n 'germproof',\n 'gestate',\n 'gestation',\n 'gesture',\n 'getaway',\n 'getting',\n 'getup',\n 'giant',\n 'gibberish',\n 'giblet',\n 'giddily',\n 'giddiness',\n 'giddy',\n 'gift',\n 'gigabyte',\n 'gigahertz',\n 'gigantic',\n 'giggle',\n 'giggling',\n 'giggly',\n 'gigolo',\n 'gilled',\n 'gills',\n 'gimmick',\n 'girdle',\n 'giveaway',\n 'given',\n 'giver',\n 'giving',\n 'gizmo',\n 'gizzard',\n 'glacial',\n 'glacier',\n 'glade',\n 'gladiator',\n 'gladly',\n 'glamorous',\n 'glamour',\n 'glance',\n 'glancing',\n 'glandular',\n 'glare',\n 'glaring',\n 'glass',\n 'glaucoma',\n 'glazing',\n 'gleaming',\n 'gleeful',\n 'glider',\n 'gliding',\n 'glimmer',\n 'glimpse',\n 'glisten',\n 'glitch',\n 'glitter',\n 'glitzy',\n 'gloater',\n 'gloating',\n 'gloomily',\n 'gloomy',\n 'glorified',\n 'glorifier',\n 'glorify',\n 'glorious',\n 'glory',\n 'gloss',\n 'glove',\n 'glowing',\n 'glowworm',\n 'glucose',\n 'glue',\n 'gluten',\n 'glutinous',\n 'glutton',\n 'gnarly',\n 'gnat',\n 'goal',\n 'goatskin',\n 'goes',\n 'goggles',\n 'going',\n 'goldfish',\n 'goldmine',\n 'goldsmith',\n 'golf',\n 'goliath',\n 'gonad',\n 'gondola',\n 'gone',\n 'gong',\n 'good',\n 'gooey',\n 'goofball',\n 'goofiness',\n 'goofy',\n 'google',\n 'goon',\n 'gopher',\n 'gore',\n 'gorged',\n 'gorgeous',\n 'gory',\n 'gosling',\n 'gossip',\n 'gothic',\n 'gotten',\n 'gout',\n 'gown',\n 'grab',\n 'graceful',\n 'graceless',\n 'gracious',\n 'gradation',\n 'graded',\n 'grader',\n 'gradient',\n 'grading',\n 'gradually',\n 'graduate',\n 'graffiti',\n 'grafted',\n 'grafting',\n 'grain',\n 'granddad',\n 'grandkid',\n 'grandly',\n 'grandma',\n 'grandpa',\n 'grandson',\n 'granite',\n 'granny',\n 'granola',\n 'grant',\n 'granular',\n 'grape',\n 'graph',\n 'grapple',\n 'grappling',\n 'grasp',\n 'grass',\n 'gratified',\n 'gratify',\n 'grating',\n 'gratitude',\n 'gratuity',\n 'gravel',\n 'graveness',\n 'graves',\n 'graveyard',\n 'gravitate',\n 'gravity',\n 'gravy',\n 'gray',\n 'grazing',\n 'greasily',\n 'greedily',\n 'greedless',\n 'greedy',\n 'green',\n 'greeter',\n 'greeting',\n 'grew',\n 'greyhound',\n 'grid',\n 'grief',\n 'grievance',\n 'grieving',\n 'grievous',\n 'grill',\n 'grimace',\n 'grimacing',\n 'grime',\n 'griminess',\n 'grimy',\n 'grinch',\n 'grinning',\n 'grip',\n 'gristle',\n 'grit',\n 'groggily',\n 'groggy',\n 'groin',\n 'groom',\n 'groove',\n 'grooving',\n 'groovy',\n 'grope',\n 'ground',\n 'grouped',\n 'grout',\n 'grove',\n 'grower',\n 'growing',\n 'growl',\n 'grub',\n 'grudge',\n 'grudging',\n 'grueling',\n 'gruffly',\n 'grumble',\n 'grumbling',\n 'grumbly',\n 'grumpily',\n 'grunge',\n 'grunt',\n 'guacamole',\n 'guidable',\n 'guidance',\n 'guide',\n 'guiding',\n 'guileless',\n 'guise',\n 'gulf',\n 'gullible',\n 'gully',\n 'gulp',\n 'gumball',\n 'gumdrop',\n 'gumminess',\n 'gumming',\n 'gummy',\n 'gurgle',\n 'gurgling',\n 'guru',\n 'gush',\n 'gusto',\n 'gusty',\n 'gutless',\n 'guts',\n 'gutter',\n 'guy',\n 'guzzler',\n 'gyration',\n 'habitable',\n 'habitant',\n 'habitat',\n 'habitual',\n 'hacked',\n 'hacker',\n 'hacking',\n 'hacksaw',\n 'had',\n 'haggler',\n 'haiku',\n 'half',\n 'halogen',\n 'halt',\n 'halved',\n 'halves',\n 'hamburger',\n 'hamlet',\n 'hammock',\n 'hamper',\n 'hamster',\n 'hamstring',\n 'handbag',\n 'handball',\n 'handbook',\n 'handbrake',\n 'handcart',\n 'handclap',\n 'handclasp',\n 'handcraft',\n 'handcuff',\n 'handed',\n 'handful',\n 'handgrip',\n 'handgun',\n 'handheld',\n 'handiness',\n 'handiwork',\n 'handlebar',\n 'handled',\n 'handler',\n 'handling',\n 'handmade',\n 'handoff',\n 'handpick',\n 'handprint',\n 'handrail',\n 'handsaw',\n 'handset',\n 'handsfree',\n 'handshake',\n 'handstand',\n 'handwash',\n 'handwork',\n 'handwoven',\n 'handwrite',\n 'handyman',\n 'hangnail',\n 'hangout',\n 'hangover',\n 'hangup',\n 'hankering',\n 'hankie',\n 'hanky',\n 'haphazard',\n 'happening',\n 'happier',\n 'happiest',\n 'happily',\n 'happiness',\n 'happy',\n 'harbor',\n 'hardcopy',\n 'hardcore',\n 'hardcover',\n 'harddisk',\n 'hardened',\n 'hardener',\n 'hardening',\n 'hardhat',\n 'hardhead',\n 'hardiness',\n 'hardly',\n 'hardness',\n 'hardship',\n 'hardware',\n 'hardwired',\n 'hardwood',\n 'hardy',\n 'harmful',\n 'harmless',\n 'harmonica',\n 'harmonics',\n 'harmonize',\n 'harmony',\n 'harness',\n 'harpist',\n 'harsh',\n 'harvest',\n 'hash',\n 'hassle',\n 'haste',\n 'hastily',\n 'hastiness',\n 'hasty',\n 'hatbox',\n 'hatchback',\n 'hatchery',\n 'hatchet',\n 'hatching',\n 'hatchling',\n 'hate',\n 'hatless',\n 'hatred',\n 'haunt',\n 'haven',\n 'hazard',\n 'hazelnut',\n 'hazily',\n 'haziness',\n 'hazing',\n 'hazy',\n 'headache',\n 'headband',\n 'headboard',\n 'headcount',\n 'headdress',\n 'headed',\n 'header',\n 'headfirst',\n 'headgear',\n 'heading',\n 'headlamp',\n 'headless',\n 'headlock',\n 'headphone',\n 'headpiece',\n 'headrest',\n 'headroom',\n 'headscarf',\n 'headset',\n 'headsman',\n 'headstand',\n 'headstone',\n 'headway',\n 'headwear',\n 'heap',\n 'heat',\n 'heave',\n 'heavily',\n 'heaviness',\n 'heaving',\n 'hedge',\n 'hedging',\n 'heftiness',\n 'hefty',\n 'helium',\n 'helmet',\n 'helper',\n 'helpful',\n 'helping',\n 'helpless',\n 'helpline',\n 'hemlock',\n 'hemstitch',\n 'hence',\n 'henchman',\n 'henna',\n 'herald',\n 'herbal',\n 'herbicide',\n 'herbs',\n 'heritage',\n 'hermit',\n 'heroics',\n 'heroism',\n 'herring',\n 'herself',\n 'hertz',\n 'hesitancy',\n 'hesitant',\n 'hesitate',\n 'hexagon',\n 'hexagram',\n 'hubcap',\n 'huddle',\n 'huddling',\n 'huff',\n 'hug',\n 'hula',\n 'hulk',\n 'hull',\n 'human',\n 'humble',\n 'humbling',\n 'humbly',\n 'humid',\n 'humiliate',\n 'humility',\n 'humming',\n 'hummus',\n 'humongous',\n 'humorist',\n 'humorless',\n 'humorous',\n 'humpback',\n 'humped',\n 'humvee',\n 'hunchback',\n 'hundredth',\n 'hunger',\n 'hungrily',\n 'hungry',\n 'hunk',\n 'hunter',\n 'hunting',\n 'huntress',\n 'huntsman',\n 'hurdle',\n 'hurled',\n 'hurler',\n 'hurling',\n 'hurray',\n 'hurricane',\n 'hurried',\n 'hurry',\n 'hurt',\n 'husband',\n 'hush',\n 'husked',\n 'huskiness',\n 'hut',\n 'hybrid',\n 'hydrant',\n 'hydrated',\n 'hydration',\n 'hydrogen',\n 'hydroxide',\n 'hyperlink',\n 'hypertext',\n 'hyphen',\n 'hypnoses',\n 'hypnosis',\n 'hypnotic',\n 'hypnotism',\n 'hypnotist',\n 'hypnotize',\n 'hypocrisy',\n 'hypocrite',\n 'ibuprofen',\n 'ice',\n 'iciness',\n 'icing',\n 'icky',\n 'icon',\n 'icy',\n 'idealism',\n 'idealist',\n 'idealize',\n 'ideally',\n 'idealness',\n 'identical',\n 'identify',\n 'identity',\n 'ideology',\n 'idiocy',\n 'idiom',\n 'idly',\n 'igloo',\n 'ignition',\n 'ignore',\n 'iguana',\n 'illicitly',\n 'illusion',\n 'illusive',\n 'image',\n 'imaginary',\n 'imagines',\n 'imaging',\n 'imbecile',\n 'imitate',\n 'imitation',\n 'immature',\n 'immerse',\n 'immersion',\n 'imminent',\n 'immobile',\n 'immodest',\n 'immorally',\n 'immortal',\n 'immovable',\n 'immovably',\n 'immunity',\n 'immunize',\n 'impaired',\n 'impale',\n 'impart',\n 'impatient',\n 'impeach',\n 'impeding',\n 'impending',\n 'imperfect',\n 'imperial',\n 'impish',\n 'implant',\n 'implement',\n 'implicate',\n 'implicit',\n 'implode',\n 'implosion',\n 'implosive',\n 'imply',\n 'impolite',\n 'important',\n 'importer',\n 'impose',\n 'imposing',\n 'impotence',\n 'impotency',\n 'impotent',\n 'impound',\n 'imprecise',\n 'imprint',\n 'imprison',\n 'impromptu',\n 'improper',\n 'improve',\n 'improving',\n 'improvise',\n 'imprudent',\n 'impulse',\n 'impulsive',\n 'impure',\n 'impurity',\n 'iodine',\n 'iodize',\n 'ion',\n 'ipad',\n 'iphone',\n 'ipod',\n 'irate',\n 'irk',\n 'iron',\n 'irregular',\n 'irrigate',\n 'irritable',\n 'irritably',\n 'irritant',\n 'irritate',\n 'islamic',\n 'islamist',\n 'isolated',\n 'isolating',\n 'isolation',\n 'isotope',\n 'issue',\n 'issuing',\n 'italicize',\n 'italics',\n 'item',\n 'itinerary',\n 'itunes',\n 'ivory',\n 'ivy',\n 'jab',\n 'jackal',\n 'jacket',\n 'jackknife',\n 'jackpot',\n 'jailbird',\n 'jailbreak',\n 'jailer',\n 'jailhouse',\n 'jalapeno',\n 'jam',\n 'janitor',\n 'january',\n 'jargon',\n 'jarring',\n 'jasmine',\n 'jaundice',\n 'jaunt',\n 'java',\n 'jawed',\n 'jawless',\n 'jawline',\n 'jaws',\n 'jaybird',\n 'jaywalker',\n 'jazz',\n 'jeep',\n 'jeeringly',\n 'jellied',\n 'jelly',\n 'jersey',\n 'jester',\n 'jet',\n 'jiffy',\n 'jigsaw',\n 'jimmy',\n 'jingle',\n 'jingling',\n 'jinx',\n 'jitters',\n 'jittery',\n 'job',\n 'jockey',\n 'jockstrap',\n 'jogger',\n 'jogging',\n 'john',\n 'joining',\n 'jokester',\n 'jokingly',\n 'jolliness',\n 'jolly',\n 'jolt',\n 'jot',\n 'jovial',\n 'joyfully',\n 'joylessly',\n 'joyous',\n 'joyride',\n 'joystick',\n 'jubilance',\n 'jubilant',\n 'judge',\n 'judgingly',\n 'judicial',\n 'judiciary',\n 'judo',\n 'juggle',\n 'juggling',\n 'jugular',\n 'juice',\n 'juiciness',\n 'juicy',\n 'jujitsu',\n 'jukebox',\n 'july',\n 'jumble',\n 'jumbo',\n 'jump',\n 'junction',\n 'juncture',\n 'june',\n 'junior',\n 'juniper',\n 'junkie',\n 'junkman',\n 'junkyard',\n 'jurist',\n 'juror',\n 'jury',\n 'justice',\n 'justifier',\n 'justify',\n 'justly',\n 'justness',\n 'juvenile',\n 'kabob',\n 'kangaroo',\n 'karaoke',\n 'karate',\n 'karma',\n 'kebab',\n 'keenly',\n 'keenness',\n 'keep',\n 'keg',\n 'kelp',\n 'kennel',\n 'kept',\n 'kerchief',\n 'kerosene',\n 'kettle',\n 'kick',\n 'kiln',\n 'kilobyte',\n 'kilogram',\n 'kilometer',\n 'kilowatt',\n 'kilt',\n 'kimono',\n 'kindle',\n 'kindling',\n 'kindly',\n 'kindness',\n 'kindred',\n 'kinetic',\n 'kinfolk',\n 'king',\n 'kinship',\n 'kinsman',\n 'kinswoman',\n 'kissable',\n 'kisser',\n 'kissing',\n 'kitchen',\n 'kite',\n 'kitten',\n 'kitty',\n 'kiwi',\n 'kleenex',\n 'knapsack',\n 'knee',\n 'knelt',\n 'knickers',\n 'knoll',\n 'koala',\n 'kooky',\n 'kosher',\n 'krypton',\n 'kudos',\n 'kung',\n 'labored',\n 'laborer',\n 'laboring',\n 'laborious',\n 'labrador',\n 'ladder',\n 'ladies',\n 'ladle',\n 'ladybug',\n 'ladylike',\n 'lagged',\n 'lagging',\n 'lagoon',\n 'lair',\n 'lake',\n 'lance',\n 'landed',\n 'landfall',\n 'landfill',\n 'landing',\n 'landlady',\n 'landless',\n 'landline',\n 'landlord',\n 'landmark',\n 'landmass',\n 'landmine',\n 'landowner',\n 'landscape',\n 'landside',\n 'landslide',\n 'language',\n 'lankiness',\n 'lanky',\n 'lantern',\n 'lapdog',\n 'lapel',\n 'lapped',\n 'lapping',\n 'laptop',\n 'lard',\n 'large',\n 'lark',\n 'lash',\n 'lasso',\n 'last',\n 'latch',\n 'late',\n 'lather',\n 'latitude',\n 'latrine',\n 'latter',\n 'latticed',\n 'launch',\n 'launder',\n 'laundry',\n 'laurel',\n 'lavender',\n 'lavish',\n 'laxative',\n 'lazily',\n 'laziness',\n 'lazy',\n 'lecturer',\n 'left',\n 'legacy',\n 'legal',\n 'legend',\n 'legged',\n 'leggings',\n 'legible',\n 'legibly',\n 'legislate',\n 'lego',\n 'legroom',\n 'legume',\n 'legwarmer',\n 'legwork',\n 'lemon',\n 'lend',\n 'length',\n 'lens',\n 'lent',\n 'leotard',\n 'lesser',\n 'letdown',\n 'lethargic',\n 'lethargy',\n 'letter',\n 'lettuce',\n 'level',\n 'leverage',\n 'levers',\n 'levitate',\n 'levitator',\n 'liability',\n 'liable',\n 'liberty',\n 'librarian',\n 'library',\n 'licking',\n 'licorice',\n 'lid',\n 'life',\n 'lifter',\n 'lifting',\n 'liftoff',\n 'ligament',\n 'likely',\n 'likeness',\n 'likewise',\n 'liking',\n 'lilac',\n 'lilly',\n 'lily',\n 'limb',\n 'limeade',\n 'limelight',\n 'limes',\n 'limit',\n 'limping',\n 'limpness',\n 'line',\n 'lingo',\n 'linguini',\n 'linguist',\n 'lining',\n 'linked',\n 'linoleum',\n 'linseed',\n 'lint',\n 'lion',\n 'lip',\n 'liquefy',\n 'liqueur',\n 'liquid',\n 'lisp',\n 'list',\n 'litigate',\n 'litigator',\n 'litmus',\n 'litter',\n 'little',\n 'livable',\n 'lived',\n 'lively',\n 'liver',\n 'livestock',\n 'lividly',\n 'living',\n 'lizard',\n 'lubricant',\n 'lubricate',\n 'lucid',\n 'luckily',\n 'luckiness',\n 'luckless',\n 'lucrative',\n 'ludicrous',\n 'lugged',\n 'lukewarm',\n 'lullaby',\n 'lumber',\n 'luminance',\n 'luminous',\n 'lumpiness',\n 'lumping',\n 'lumpish',\n 'lunacy',\n 'lunar',\n 'lunchbox',\n 'luncheon',\n 'lunchroom',\n 'lunchtime',\n 'lung',\n 'lurch',\n 'lure',\n 'luridness',\n 'lurk',\n 'lushly',\n 'lushness',\n 'luster',\n 'lustfully',\n 'lustily',\n 'lustiness',\n 'lustrous',\n 'lusty',\n 'luxurious',\n 'luxury',\n 'lying',\n 'lyrically',\n 'lyricism',\n 'lyricist',\n 'lyrics',\n 'macarena',\n 'macaroni',\n 'macaw',\n 'mace',\n 'machine',\n 'machinist',\n 'magazine',\n 'magenta',\n 'maggot',\n 'magical',\n 'magician',\n 'magma',\n 'magnesium',\n 'magnetic',\n 'magnetism',\n 'magnetize',\n 'magnifier',\n 'magnify',\n 'magnitude',\n 'magnolia',\n 'mahogany',\n 'maimed',\n 'majestic',\n 'majesty',\n 'majorette',\n 'majority',\n 'makeover',\n 'maker',\n 'makeshift',\n 'making',\n 'malformed',\n 'malt',\n 'mama',\n 'mammal',\n 'mammary',\n 'mammogram',\n 'manager',\n 'managing',\n 'manatee',\n 'mandarin',\n 'mandate',\n 'mandatory',\n 'mandolin',\n 'manger',\n 'mangle',\n 'mango',\n 'mangy',\n 'manhandle',\n 'manhole',\n 'manhood',\n 'manhunt',\n 'manicotti',\n 'manicure',\n 'manifesto',\n 'manila',\n 'mankind',\n 'manlike',\n 'manliness',\n 'manly',\n 'manmade',\n 'manned',\n 'mannish',\n 'manor',\n 'manpower',\n 'mantis',\n 'mantra',\n 'manual',\n 'many',\n 'map',\n 'marathon',\n 'marauding',\n 'marbled',\n 'marbles',\n 'marbling',\n 'march',\n 'mardi',\n 'margarine',\n 'margarita',\n 'margin',\n 'marigold',\n 'marina',\n 'marine',\n 'marital',\n 'maritime',\n 'marlin',\n 'marmalade',\n 'maroon',\n 'married',\n 'marrow',\n 'marry',\n 'marshland',\n 'marshy',\n 'marsupial',\n 'marvelous',\n 'marxism',\n 'mascot',\n 'masculine',\n 'mashed',\n 'mashing',\n 'massager',\n 'masses',\n 'massive',\n 'mastiff',\n 'matador',\n 'matchbook',\n 'matchbox',\n 'matcher',\n 'matching',\n 'matchless',\n 'material',\n 'maternal',\n 'maternity',\n 'math',\n 'mating',\n 'matriarch',\n 'matrimony',\n 'matrix',\n 'matron',\n 'matted',\n 'matter',\n 'maturely',\n 'maturing',\n 'maturity',\n 'mauve',\n 'maverick',\n 'maximize',\n 'maximum',\n 'maybe',\n 'mayday',\n 'mayflower',\n 'moaner',\n 'moaning',\n 'mobile',\n 'mobility',\n 'mobilize',\n 'mobster',\n 'mocha',\n 'mocker',\n 'mockup',\n 'modified',\n 'modify',\n 'modular',\n 'modulator',\n 'module',\n 'moisten',\n 'moistness',\n 'moisture',\n 'molar',\n 'molasses',\n 'mold',\n 'molecular',\n 'molecule',\n 'molehill',\n 'mollusk',\n 'mom',\n 'monastery',\n 'monday',\n 'monetary',\n 'monetize',\n 'moneybags',\n 'moneyless',\n 'moneywise',\n 'mongoose',\n 'mongrel',\n 'monitor',\n 'monkhood',\n 'monogamy',\n 'monogram',\n 'monologue',\n 'monopoly',\n 'monorail',\n 'monotone',\n 'monotype',\n 'monoxide',\n 'monsieur',\n 'monsoon',\n 'monstrous',\n 'monthly',\n 'monument',\n 'moocher',\n 'moodiness',\n 'moody',\n 'mooing',\n 'moonbeam',\n 'mooned',\n 'moonlight',\n 'moonlike',\n 'moonlit',\n 'moonrise',\n 'moonscape',\n 'moonshine',\n 'moonstone',\n 'moonwalk',\n 'mop',\n 'morale',\n 'morality',\n 'morally',\n 'morbidity',\n 'morbidly',\n 'morphine',\n 'morphing',\n 'morse',\n 'mortality',\n 'mortally',\n 'mortician',\n 'mortified',\n 'mortify',\n 'mortuary',\n 'mosaic',\n 'mossy',\n 'most',\n 'mothball',\n 'mothproof',\n 'motion',\n 'motivate',\n 'motivator',\n 'motive',\n 'motocross',\n 'motor',\n 'motto',\n 'mountable',\n 'mountain',\n 'mounted',\n 'mounting',\n 'mourner',\n 'mournful',\n 'mouse',\n 'mousiness',\n 'moustache',\n 'mousy',\n 'mouth',\n 'movable',\n 'move',\n 'movie',\n 'moving',\n 'mower',\n 'mowing',\n 'much',\n 'muck',\n 'mud',\n 'mug',\n 'mulberry',\n 'mulch',\n 'mule',\n 'mulled',\n 'mullets',\n 'multiple',\n 'multiply',\n 'multitask',\n 'multitude',\n 'mumble',\n 'mumbling',\n 'mumbo',\n 'mummified',\n 'mummify',\n 'mummy',\n 'mumps',\n 'munchkin',\n 'mundane',\n 'municipal',\n 'muppet',\n 'mural',\n 'murkiness',\n 'murky',\n 'murmuring',\n 'muscular',\n 'museum',\n 'mushily',\n 'mushiness',\n 'mushroom',\n 'mushy',\n 'music',\n 'musket',\n 'muskiness',\n 'musky',\n 'mustang',\n 'mustard',\n 'muster',\n 'mustiness',\n 'musty',\n 'mutable',\n 'mutate',\n 'mutation',\n 'mute',\n 'mutilated',\n 'mutilator',\n 'mutiny',\n 'mutt',\n 'mutual',\n 'muzzle',\n 'myself',\n 'myspace',\n 'mystified',\n 'mystify',\n 'myth',\n 'nacho',\n 'nag',\n 'nail',\n 'name',\n 'naming',\n 'nanny',\n 'nanometer',\n 'nape',\n 'napkin',\n 'napped',\n 'napping',\n 'nappy',\n 'narrow',\n 'nastily',\n 'nastiness',\n 'national',\n 'native',\n 'nativity',\n 'natural',\n 'nature',\n 'naturist',\n 'nautical',\n 'navigate',\n 'navigator',\n 'navy',\n 'nearby',\n 'nearest',\n 'nearly',\n 'nearness',\n 'neatly',\n 'neatness',\n 'nebula',\n 'nebulizer',\n 'nectar',\n 'negate',\n 'negation',\n 'negative',\n 'neglector',\n 'negligee',\n 'negligent',\n 'negotiate',\n 'nemeses',\n 'nemesis',\n 'neon',\n 'nephew',\n 'nerd',\n 'nervous',\n 'nervy',\n 'nest',\n 'net',\n 'neurology',\n 'neuron',\n 'neurosis',\n 'neurotic',\n 'neuter',\n 'neutron',\n 'never',\n 'next',\n 'nibble',\n 'nickname',\n 'nicotine',\n 'niece',\n 'nifty',\n 'nimble',\n 'nimbly',\n 'nineteen',\n 'ninetieth',\n 'ninja',\n 'nintendo',\n 'ninth',\n 'nuclear',\n 'nuclei',\n 'nucleus',\n 'nugget',\n 'nullify',\n 'number',\n 'numbing',\n 'numbly',\n 'numbness',\n 'numeral',\n 'numerate',\n 'numerator',\n 'numeric',\n 'numerous',\n 'nuptials',\n 'nursery',\n 'nursing',\n 'nurture',\n 'nutcase',\n 'nutlike',\n 'nutmeg',\n 'nutrient',\n 'nutshell',\n 'nuttiness',\n 'nutty',\n 'nuzzle',\n 'nylon',\n 'oaf',\n 'oak',\n 'oasis',\n 'oat',\n 'obedience',\n 'obedient',\n 'obituary',\n 'object',\n 'obligate',\n 'obliged',\n 'oblivion',\n 'oblivious',\n 'oblong',\n 'obnoxious',\n 'oboe',\n 'obscure',\n 'obscurity',\n 'observant',\n 'observer',\n 'observing',\n 'obsessed',\n 'obsession',\n 'obsessive',\n 'obsolete',\n 'obstacle',\n 'obstinate',\n 'obstruct',\n 'obtain',\n 'obtrusive',\n 'obtuse',\n 'obvious',\n 'occultist',\n 'occupancy',\n 'occupant',\n 'occupier',\n 'occupy',\n 'ocean',\n 'ocelot',\n 'octagon',\n 'octane',\n 'october',\n 'octopus',\n 'ogle',\n 'oil',\n 'oink',\n 'ointment',\n 'okay',\n 'old',\n 'olive',\n 'olympics',\n 'omega',\n 'omen',\n 'ominous',\n 'omission',\n 'omit',\n 'omnivore',\n 'onboard',\n 'oncoming',\n 'ongoing',\n 'onion',\n 'online',\n 'onlooker',\n 'only',\n 'onscreen',\n 'onset',\n 'onshore',\n 'onslaught',\n 'onstage',\n 'onto',\n 'onward',\n 'onyx',\n 'oops',\n 'ooze',\n 'oozy',\n 'opacity',\n 'opal',\n 'open',\n 'operable',\n 'operate',\n 'operating',\n 'operation',\n 'operative',\n 'operator',\n 'opium',\n 'opossum',\n 'opponent',\n 'oppose',\n 'opposing',\n 'opposite',\n 'oppressed',\n 'oppressor',\n 'opt',\n 'opulently',\n 'osmosis',\n 'other',\n 'otter',\n 'ouch',\n 'ought',\n 'ounce',\n 'outage',\n 'outback',\n 'outbid',\n 'outboard',\n 'outbound',\n 'outbreak',\n 'outburst',\n 'outcast',\n 'outclass',\n 'outcome',\n 'outdated',\n 'outdoors',\n 'outer',\n 'outfield',\n 'outfit',\n 'outflank',\n 'outgoing',\n 'outgrow',\n 'outhouse',\n 'outing',\n 'outlast',\n 'outlet',\n 'outline',\n 'outlook',\n 'outlying',\n 'outmatch',\n 'outmost',\n 'outnumber',\n 'outplayed',\n 'outpost',\n 'outpour',\n 'output',\n 'outrage',\n 'outrank',\n 'outreach',\n 'outright',\n 'outscore',\n 'outsell',\n 'outshine',\n 'outshoot',\n 'outsider',\n 'outskirts',\n 'outsmart',\n 'outsource',\n 'outspoken',\n 'outtakes',\n 'outthink',\n 'outward',\n 'outweigh',\n 'outwit',\n 'oval',\n 'ovary',\n 'oven',\n 'overact',\n 'overall',\n 'overarch',\n 'overbid',\n 'overbill',\n 'overbite',\n 'overblown',\n 'overboard',\n 'overbook',\n 'overbuilt',\n 'overcast',\n 'overcoat',\n 'overcome',\n 'overcook',\n 'overcrowd',\n 'overdraft',\n 'overdrawn',\n 'overdress',\n 'overdrive',\n 'overdue',\n 'overeager',\n 'overeater',\n 'overexert',\n 'overfed',\n 'overfeed',\n 'overfill',\n 'overflow',\n 'overfull',\n 'overgrown',\n 'overhand',\n 'overhang',\n 'overhaul',\n 'overhead',\n 'overhear',\n 'overheat',\n 'overhung',\n 'overjoyed',\n 'overkill',\n 'overlabor',\n 'overlaid',\n 'overlap',\n 'overlay',\n 'overload',\n 'overlook',\n 'overlord',\n 'overlying',\n 'overnight',\n 'overpass',\n 'overpay',\n 'overplant',\n 'overplay',\n 'overpower',\n 'overprice',\n 'overrate',\n 'overreach',\n 'overreact',\n 'override',\n 'overripe',\n 'overrule',\n 'overrun',\n 'overshoot',\n 'overshot',\n 'oversight',\n 'oversized',\n 'oversleep',\n 'oversold',\n 'overspend',\n 'overstate',\n 'overstay',\n 'overstep',\n 'overstock',\n 'overstuff',\n 'oversweet',\n 'overtake',\n 'overthrow',\n 'overtime',\n 'overtly',\n 'overtone',\n 'overture',\n 'overturn',\n 'overuse',\n 'overvalue',\n 'overview',\n 'overwrite',\n 'owl',\n 'oxford',\n 'oxidant',\n 'oxidation',\n 'oxidize',\n 'oxidizing',\n 'oxygen',\n 'oxymoron',\n 'oyster',\n 'ozone',\n 'paced',\n 'pacemaker',\n 'pacific',\n 'pacifier',\n 'pacifism',\n 'pacifist',\n 'pacify',\n 'padded',\n 'padding',\n 'paddle',\n 'paddling',\n 'padlock',\n 'pagan',\n 'pager',\n 'paging',\n 'pajamas',\n 'palace',\n 'palatable',\n 'palm',\n 'palpable',\n 'palpitate',\n 'paltry',\n 'pampered',\n 'pamperer',\n 'pampers',\n 'pamphlet',\n 'panama',\n 'pancake',\n 'pancreas',\n 'panda',\n 'pandemic',\n 'pang',\n 'panhandle',\n 'panic',\n 'panning',\n 'panorama',\n 'panoramic',\n 'panther',\n 'pantomime',\n 'pantry',\n 'pants',\n 'pantyhose',\n 'paparazzi',\n 'papaya',\n 'paper',\n 'paprika',\n 'papyrus',\n 'parabola',\n 'parachute',\n 'parade',\n 'paradox',\n 'paragraph',\n 'parakeet',\n 'paralegal',\n 'paralyses',\n 'paralysis',\n 'paralyze',\n 'paramedic',\n 'parameter',\n 'paramount',\n 'parasail',\n 'parasite',\n 'parasitic',\n 'parcel',\n 'parched',\n 'parchment',\n 'pardon',\n 'parish',\n 'parka',\n 'parking',\n 'parkway',\n 'parlor',\n 'parmesan',\n 'parole',\n 'parrot',\n 'parsley',\n 'parsnip',\n 'partake',\n 'parted',\n 'parting',\n 'partition',\n 'partly',\n 'partner',\n 'partridge',\n 'party',\n 'passable',\n 'passably',\n 'passage',\n 'passcode',\n 'passenger',\n 'passerby',\n 'passing',\n 'passion',\n 'passive',\n 'passivism',\n 'passover',\n 'passport',\n 'password',\n 'pasta',\n 'pasted',\n 'pastel',\n 'pastime',\n 'pastor',\n 'pastrami',\n 'pasture',\n 'pasty',\n 'patchwork',\n 'patchy',\n 'paternal',\n 'paternity',\n 'path',\n 'patience',\n 'patient',\n 'patio',\n 'patriarch',\n 'patriot',\n 'patrol',\n 'patronage',\n 'patronize',\n 'pauper',\n 'pavement',\n 'paver',\n 'pavestone',\n 'pavilion',\n 'paving',\n 'pawing',\n 'payable',\n 'payback',\n 'paycheck',\n 'payday',\n 'payee',\n 'payer',\n 'paying',\n 'payment',\n 'payphone',\n 'payroll',\n 'pebble',\n 'pebbly',\n 'pecan',\n 'pectin',\n 'peculiar',\n 'peddling',\n 'pediatric',\n 'pedicure',\n 'pedigree',\n 'pedometer',\n 'pegboard',\n 'pelican',\n 'pellet',\n 'pelt',\n 'pelvis',\n 'penalize',\n 'penalty',\n 'pencil',\n 'pendant',\n 'pending',\n 'penholder',\n 'penknife',\n 'pennant',\n 'penniless',\n 'penny',\n 'penpal',\n 'pension',\n 'pentagon',\n 'pentagram',\n 'pep',\n 'perceive',\n 'percent',\n 'perch',\n 'percolate',\n 'perennial',\n 'perfected',\n 'perfectly',\n 'perfume',\n 'periscope',\n 'perish',\n 'perjurer',\n 'perjury',\n 'perkiness',\n 'perky',\n 'perm',\n 'peroxide',\n 'perpetual',\n 'perplexed',\n 'persecute',\n 'persevere',\n 'persuaded',\n 'persuader',\n 'pesky',\n 'peso',\n 'pessimism',\n 'pessimist',\n 'pester',\n 'pesticide',\n 'petal',\n 'petite',\n 'petition',\n 'petri',\n 'petroleum',\n 'petted',\n 'petticoat',\n 'pettiness',\n 'petty',\n 'petunia',\n 'phantom',\n 'phobia',\n 'phoenix',\n 'phonebook',\n 'phoney',\n 'phonics',\n 'phoniness',\n 'phony',\n 'phosphate',\n 'photo',\n 'phrase',\n 'phrasing',\n 'placard',\n 'placate',\n 'placidly',\n 'plank',\n 'planner',\n 'plant',\n 'plasma',\n 'plaster',\n 'plastic',\n 'plated',\n 'platform',\n 'plating',\n 'platinum',\n 'platonic',\n 'platter',\n 'platypus',\n 'plausible',\n 'plausibly',\n 'playable',\n 'playback',\n 'player',\n 'playful',\n 'playgroup',\n 'playhouse',\n 'playing',\n 'playlist',\n 'playmaker',\n 'playmate',\n 'playoff',\n 'playpen',\n 'playroom',\n 'playset',\n 'plaything',\n 'playtime',\n 'plaza',\n 'pleading',\n 'pleat',\n 'pledge',\n 'plentiful',\n 'plenty',\n 'plethora',\n 'plexiglas',\n 'pliable',\n 'plod',\n 'plop',\n 'plot',\n 'plow',\n 'ploy',\n 'pluck',\n 'plug',\n 'plunder',\n 'plunging',\n 'plural',\n 'plus',\n 'plutonium',\n 'plywood',\n 'poach',\n 'pod',\n 'poem',\n 'poet',\n 'pogo',\n 'pointed',\n 'pointer',\n 'pointing',\n 'pointless',\n 'pointy',\n 'poise',\n 'poison',\n 'poker',\n 'poking',\n 'polar',\n 'police',\n 'policy',\n 'polio',\n 'polish',\n 'politely',\n 'polka',\n 'polo',\n 'polyester',\n 'polygon',\n 'polygraph',\n 'polymer',\n 'poncho',\n 'pond',\n 'pony',\n 'popcorn',\n 'pope',\n 'poplar',\n 'popper',\n 'poppy',\n 'popsicle',\n 'populace',\n 'popular',\n 'populate',\n 'porcupine',\n 'pork',\n 'porous',\n 'porridge',\n 'portable',\n 'portal',\n 'portfolio',\n 'porthole',\n 'portion',\n 'portly',\n 'portside',\n 'poser',\n 'posh',\n 'posing',\n 'possible',\n 'possibly',\n 'possum',\n 'postage',\n 'postal',\n 'postbox',\n 'postcard',\n 'posted',\n 'poster',\n 'posting',\n 'postnasal',\n 'posture',\n 'postwar',\n 'pouch',\n 'pounce',\n 'pouncing',\n 'pound',\n 'pouring',\n 'pout',\n 'powdered',\n 'powdering',\n 'powdery',\n 'power',\n 'powwow',\n 'pox',\n 'praising',\n 'prance',\n 'prancing',\n 'pranker',\n 'prankish',\n 'prankster',\n 'prayer',\n 'praying',\n 'preacher',\n 'preaching',\n 'preachy',\n 'preamble',\n 'precinct',\n 'precise',\n 'precision',\n 'precook',\n 'precut',\n 'predator',\n 'predefine',\n 'predict',\n 'preface',\n 'prefix',\n 'preflight',\n 'preformed',\n 'pregame',\n 'pregnancy',\n 'pregnant',\n 'preheated',\n 'prelaunch',\n 'prelaw',\n 'prelude',\n 'premiere',\n 'premises',\n 'premium',\n 'prenatal',\n 'preoccupy',\n 'preorder',\n 'prepaid',\n 'prepay',\n 'preplan',\n 'preppy',\n 'preschool',\n 'prescribe',\n 'preseason',\n 'preset',\n 'preshow',\n 'president',\n 'presoak',\n 'press',\n 'presume',\n 'presuming',\n 'preteen',\n 'pretended',\n 'pretender',\n 'pretense',\n 'pretext',\n 'pretty',\n 'pretzel',\n 'prevail',\n 'prevalent',\n 'prevent',\n 'preview',\n 'previous',\n 'prewar',\n 'prewashed',\n 'prideful',\n 'pried',\n 'primal',\n 'primarily',\n 'primary',\n 'primate',\n 'primer',\n 'primp',\n 'princess',\n 'print',\n 'prior',\n 'prism',\n 'prison',\n 'prissy',\n 'pristine',\n 'privacy',\n 'private',\n 'privatize',\n 'prize',\n 'proactive',\n 'probable',\n 'probably',\n 'probation',\n 'probe',\n 'probing',\n 'probiotic',\n 'problem',\n 'procedure',\n 'process',\n 'proclaim',\n 'procreate',\n 'procurer',\n 'prodigal',\n 'prodigy',\n 'produce',\n 'product',\n 'profane',\n 'profanity',\n 'professed',\n 'professor',\n 'profile',\n 'profound',\n 'profusely',\n 'progeny',\n 'prognosis',\n 'program',\n 'progress',\n 'projector',\n 'prologue',\n 'prolonged',\n 'promenade',\n 'prominent',\n 'promoter',\n 'promotion',\n 'prompter',\n 'promptly',\n 'prone',\n 'prong',\n 'pronounce',\n 'pronto',\n 'proofing',\n 'proofread',\n 'proofs',\n 'propeller',\n 'properly',\n 'property',\n 'proponent',\n 'proposal',\n 'propose',\n 'props',\n 'prorate',\n 'protector',\n 'protegee',\n 'proton',\n 'prototype',\n 'protozoan',\n 'protract',\n 'protrude',\n 'proud',\n 'provable',\n 'proved',\n 'proven',\n 'provided',\n 'provider',\n 'providing',\n 'province',\n 'proving',\n 'provoke',\n 'provoking',\n 'provolone',\n 'prowess',\n 'prowler',\n 'prowling',\n 'proximity',\n 'proxy',\n 'prozac',\n 'prude',\n 'prudishly',\n 'prune',\n 'pruning',\n 'pry',\n 'psychic',\n 'public',\n 'publisher',\n 'pucker',\n 'pueblo',\n 'pug',\n 'pull',\n 'pulmonary',\n 'pulp',\n 'pulsate',\n 'pulse',\n 'pulverize',\n 'puma',\n 'pumice',\n 'pummel',\n 'punch',\n 'punctual',\n 'punctuate',\n 'punctured',\n 'pungent',\n 'punisher',\n 'punk',\n 'pupil',\n 'puppet',\n 'puppy',\n 'purchase',\n 'pureblood',\n 'purebred',\n 'purely',\n 'pureness',\n 'purgatory',\n 'purge',\n 'purging',\n 'purifier',\n 'purify',\n 'purist',\n 'puritan',\n 'purity',\n 'purple',\n 'purplish',\n 'purposely',\n 'purr',\n 'purse',\n 'pursuable',\n 'pursuant',\n 'pursuit',\n 'purveyor',\n 'pushcart',\n 'pushchair',\n 'pusher',\n 'pushiness',\n 'pushing',\n 'pushover',\n 'pushpin',\n 'pushup',\n 'pushy',\n 'putdown',\n 'putt',\n 'puzzle',\n 'puzzling',\n 'pyramid',\n 'pyromania',\n 'python',\n 'quack',\n 'quadrant',\n 'quail',\n 'quaintly',\n 'quake',\n 'quaking',\n 'qualified',\n 'qualifier',\n 'qualify',\n 'quality',\n 'qualm',\n 'quantum',\n 'quarrel',\n 'quarry',\n 'quartered',\n 'quarterly',\n 'quarters',\n 'quartet',\n 'quench',\n 'query',\n 'quicken',\n 'quickly',\n 'quickness',\n 'quicksand',\n 'quickstep',\n 'quiet',\n 'quill',\n 'quilt',\n 'quintet',\n 'quintuple',\n 'quirk',\n 'quit',\n 'quiver',\n 'quizzical',\n 'quotable',\n 'quotation',\n 'quote',\n 'rabid',\n 'race',\n 'racing',\n 'racism',\n 'rack',\n 'racoon',\n 'radar',\n 'radial',\n 'radiance',\n 'radiantly',\n 'radiated',\n 'radiation',\n 'radiator',\n 'radio',\n 'radish',\n 'raffle',\n 'raft',\n 'rage',\n 'ragged',\n 'raging',\n 'ragweed',\n 'raider',\n 'railcar',\n 'railing',\n 'railroad',\n 'railway',\n 'raisin',\n 'rake',\n 'raking',\n 'rally',\n 'ramble',\n 'rambling',\n 'ramp',\n 'ramrod',\n 'ranch',\n 'rancidity',\n 'random',\n 'ranged',\n 'ranger',\n 'ranging',\n 'ranked',\n 'ranking',\n 'ransack',\n 'ranting',\n 'rants',\n 'rare',\n 'rarity',\n 'rascal',\n 'rash',\n 'rasping',\n 'ravage',\n 'raven',\n 'ravine',\n 'raving',\n 'ravioli',\n 'ravishing',\n 'reabsorb',\n 'reach',\n 'reacquire',\n 'reaction',\n 'reactive',\n 'reactor',\n 'reaffirm',\n 'ream',\n 'reanalyze',\n 'reappear',\n 'reapply',\n 'reappoint',\n 'reapprove',\n 'rearrange',\n 'rearview',\n 'reason',\n 'reassign',\n 'reassure',\n 'reattach',\n 'reawake',\n 'rebalance',\n 'rebate',\n 'rebel',\n 'rebirth',\n 'reboot',\n 'reborn',\n 'rebound',\n 'rebuff',\n 'rebuild',\n 'rebuilt',\n 'reburial',\n 'rebuttal',\n 'recall',\n 'recant',\n 'recapture',\n 'recast',\n 'recede',\n 'recent',\n 'recess',\n 'recharger',\n 'recipient',\n 'recital',\n 'recite',\n 'reckless',\n 'reclaim',\n 'recliner',\n 'reclining',\n 'recluse',\n 'reclusive',\n 'recognize',\n 'recoil',\n 'recollect',\n 'recolor',\n 'reconcile',\n 'reconfirm',\n 'reconvene',\n 'recopy',\n 'record',\n 'recount',\n 'recoup',\n 'recovery',\n 'recreate',\n 'rectal',\n 'rectangle',\n 'rectified',\n 'rectify',\n 'recycled',\n 'recycler',\n 'recycling',\n 'reemerge',\n 'reenact',\n 'reenter',\n 'reentry',\n 'reexamine',\n 'referable',\n 'referee',\n 'reference',\n 'refill',\n 'refinance',\n 'refined',\n 'refinery',\n 'refining',\n 'refinish',\n 'reflected',\n 'reflector',\n 'reflex',\n 'reflux',\n 'refocus',\n 'refold',\n 'reforest',\n 'reformat',\n 'reformed',\n 'reformer',\n 'reformist',\n 'refract',\n 'refrain',\n 'refreeze',\n 'refresh',\n 'refried',\n 'refueling',\n 'refund',\n 'refurbish',\n 'refurnish',\n 'refusal',\n 'refuse',\n 'refusing',\n 'refutable',\n 'refute',\n 'regain',\n 'regalia',\n 'regally',\n 'reggae',\n 'regime',\n 'region',\n 'register',\n 'registrar',\n 'registry',\n 'regress',\n 'regretful',\n 'regroup',\n 'regular',\n 'regulate',\n 'regulator',\n 'rehab',\n 'reheat',\n 'rehire',\n 'rehydrate',\n 'reimburse',\n 'reissue',\n 'reiterate',\n 'rejoice',\n 'rejoicing',\n 'rejoin',\n 'rekindle',\n 'relapse',\n 'relapsing',\n 'relatable',\n 'related',\n 'relation',\n 'relative',\n 'relax',\n 'relay',\n 'relearn',\n 'release',\n 'relenting',\n 'reliable',\n 'reliably',\n 'reliance',\n 'reliant',\n 'relic',\n 'relieve',\n 'relieving',\n 'relight',\n 'relish',\n 'relive',\n 'reload',\n 'relocate',\n 'relock',\n 'reluctant',\n 'rely',\n 'remake',\n 'remark',\n 'remarry',\n 'rematch',\n 'remedial',\n 'remedy',\n 'remember',\n 'reminder',\n 'remindful',\n 'remission',\n 'remix',\n 'remnant',\n 'remodeler',\n 'remold',\n 'remorse',\n 'remote',\n 'removable',\n 'removal',\n 'removed',\n 'remover',\n 'removing',\n 'rename',\n 'renderer',\n 'rendering',\n 'rendition',\n 'renegade',\n 'renewable',\n 'renewably',\n 'renewal',\n 'renewed',\n 'renounce',\n 'renovate',\n 'renovator',\n 'rentable',\n 'rental',\n 'rented',\n 'renter',\n 'reoccupy',\n 'reoccur',\n 'reopen',\n 'reorder',\n 'repackage',\n 'repacking',\n 'repaint',\n 'repair',\n 'repave',\n 'repaying',\n 'repayment',\n 'repeal',\n 'repeated',\n 'repeater',\n 'repent',\n 'rephrase',\n 'replace',\n 'replay',\n 'replica',\n 'reply',\n 'reporter',\n 'repose',\n 'repossess',\n 'repost',\n 'repressed',\n 'reprimand',\n 'reprint',\n 'reprise',\n 'reproach',\n 'reprocess',\n 'reproduce',\n 'reprogram',\n 'reps',\n 'reptile',\n 'reptilian',\n 'repugnant',\n 'repulsion',\n 'repulsive',\n 'repurpose',\n 'reputable',\n 'reputably',\n 'request',\n 'require',\n 'requisite',\n 'reroute',\n 'rerun',\n 'resale',\n 'resample',\n 'rescuer',\n 'reseal',\n 'research',\n 'reselect',\n 'reseller',\n 'resemble',\n 'resend',\n 'resent',\n 'reset',\n 'reshape',\n 'reshoot',\n 'reshuffle',\n 'residence',\n 'residency',\n 'resident',\n 'residual',\n 'residue',\n 'resigned',\n 'resilient',\n 'resistant',\n 'resisting',\n 'resize',\n 'resolute',\n 'resolved',\n 'resonant',\n 'resonate',\n 'resort',\n 'resource',\n 'respect',\n 'resubmit',\n 'result',\n 'resume',\n 'resupply',\n 'resurface',\n 'resurrect',\n 'retail',\n 'retainer',\n 'retaining',\n 'retake',\n 'retaliate',\n 'retention',\n 'rethink',\n 'retinal',\n 'retired',\n 'retiree',\n 'retiring',\n 'retold',\n 'retool',\n 'retorted',\n 'retouch',\n 'retrace',\n 'retract',\n 'retrain',\n 'retread',\n 'retreat',\n 'retrial',\n 'retrieval',\n 'retriever',\n 'retry',\n 'return',\n 'retying',\n 'retype',\n 'reunion',\n 'reunite',\n 'reusable',\n 'reuse',\n 'reveal',\n 'reveler',\n 'revenge',\n 'revenue',\n 'reverb',\n 'revered',\n 'reverence',\n 'reverend',\n 'reversal',\n 'reverse',\n 'reversing',\n 'reversion',\n 'revert',\n 'revisable',\n 'revise',\n 'revision',\n 'revisit',\n 'revivable',\n 'revival',\n 'reviver',\n 'reviving',\n 'revocable',\n 'revoke',\n 'revolt',\n 'revolver',\n 'revolving',\n 'reward',\n 'rewash',\n 'rewind',\n 'rewire',\n 'reword',\n 'rework',\n 'rewrap',\n 'rewrite',\n 'rhyme',\n 'ribbon',\n 'ribcage',\n 'rice',\n 'riches',\n 'richly',\n 'richness',\n 'rickety',\n 'ricotta',\n 'riddance',\n 'ridden',\n 'ride',\n 'riding',\n 'rifling',\n 'rift',\n 'rigging',\n 'rigid',\n 'rigor',\n 'rimless',\n 'rimmed',\n 'rind',\n 'rink',\n 'rinse',\n 'rinsing',\n 'riot',\n 'ripcord',\n 'ripeness',\n 'ripening',\n 'ripping',\n 'ripple',\n 'rippling',\n 'riptide',\n 'rise',\n 'rising',\n 'risk',\n 'risotto',\n 'ritalin',\n 'ritzy',\n 'rival',\n 'riverbank',\n 'riverbed',\n 'riverboat',\n 'riverside',\n 'riveter',\n 'riveting',\n 'roamer',\n 'roaming',\n 'roast',\n 'robbing',\n 'robe',\n 'robin',\n 'robotics',\n 'robust',\n 'rockband',\n 'rocker',\n 'rocket',\n 'rockfish',\n 'rockiness',\n 'rocking',\n 'rocklike',\n 'rockslide',\n 'rockstar',\n 'rocky',\n 'rogue',\n 'roman',\n 'romp',\n 'rope',\n 'roping',\n 'roster',\n 'rosy',\n 'rotten',\n 'rotting',\n 'rotunda',\n 'roulette',\n 'rounding',\n 'roundish',\n 'roundness',\n 'roundup',\n 'roundworm',\n 'routine',\n 'routing',\n 'rover',\n 'roving',\n 'royal',\n 'rubbed',\n 'rubber',\n 'rubbing',\n 'rubble',\n 'rubdown',\n 'ruby',\n 'ruckus',\n 'rudder',\n 'rug',\n 'ruined',\n 'rule',\n 'rumble',\n 'rumbling',\n 'rummage',\n 'rumor',\n 'runaround',\n 'rundown',\n 'runner',\n 'running',\n 'runny',\n 'runt',\n 'runway',\n 'rupture',\n 'rural',\n 'ruse',\n 'rush',\n 'rust',\n 'rut',\n 'sabbath',\n 'sabotage',\n 'sacrament',\n 'sacred',\n 'sacrifice',\n 'sadden',\n 'saddlebag',\n 'saddled',\n 'saddling',\n 'sadly',\n 'sadness',\n 'safari',\n 'safeguard',\n 'safehouse',\n 'safely',\n 'safeness',\n 'saffron',\n 'saga',\n 'sage',\n 'sagging',\n 'saggy',\n 'said',\n 'saint',\n 'sake',\n 'salad',\n 'salami',\n 'salaried',\n 'salary',\n 'saline',\n 'salon',\n 'saloon',\n 'salsa',\n 'salt',\n 'salutary',\n 'salute',\n 'salvage',\n 'salvaging',\n 'salvation',\n 'same',\n 'sample',\n 'sampling',\n 'sanction',\n 'sanctity',\n 'sanctuary',\n 'sandal',\n 'sandbag',\n 'sandbank',\n 'sandbar',\n 'sandblast',\n 'sandbox',\n 'sanded',\n 'sandfish',\n 'sanding',\n 'sandlot',\n 'sandpaper',\n 'sandpit',\n 'sandstone',\n 'sandstorm',\n 'sandworm',\n 'sandy',\n 'sanitary',\n 'sanitizer',\n 'sank',\n 'santa',\n 'sapling',\n 'sappiness',\n 'sappy',\n 'sarcasm',\n 'sarcastic',\n 'sardine',\n 'sash',\n 'sasquatch',\n 'sassy',\n 'satchel',\n 'satiable',\n 'satin',\n 'satirical',\n 'satisfied',\n 'satisfy',\n 'saturate',\n 'saturday',\n 'sauciness',\n 'saucy',\n 'sauna',\n 'savage',\n 'savanna',\n 'saved',\n 'savings',\n 'savior',\n 'savor',\n 'saxophone',\n 'say',\n 'scabbed',\n 'scabby',\n 'scalded',\n 'scalding',\n 'scale',\n 'scaling',\n 'scallion',\n 'scallop',\n 'scalping',\n 'scam',\n 'scandal',\n 'scanner',\n 'scanning',\n 'scant',\n 'scapegoat',\n 'scarce',\n 'scarcity',\n 'scarecrow',\n 'scared',\n 'scarf',\n 'scarily',\n 'scariness',\n 'scarring',\n 'scary',\n 'scavenger',\n 'scenic',\n 'schedule',\n 'schematic',\n 'scheme',\n 'scheming',\n 'schilling',\n 'schnapps',\n 'scholar',\n 'science',\n 'scientist',\n 'scion',\n 'scoff',\n 'scolding',\n 'scone',\n 'scoop',\n 'scooter',\n 'scope',\n 'scorch',\n 'scorebook',\n 'scorecard',\n 'scored',\n 'scoreless',\n 'scorer',\n 'scoring',\n 'scorn',\n 'scorpion',\n 'scotch',\n 'scoundrel',\n 'scoured',\n 'scouring',\n 'scouting',\n 'scouts',\n 'scowling',\n 'scrabble',\n 'scraggly',\n 'scrambled',\n 'scrambler',\n 'scrap',\n 'scratch',\n 'scrawny',\n 'screen',\n 'scribble',\n 'scribe',\n 'scribing',\n 'scrimmage',\n 'script',\n 'scroll',\n 'scrooge',\n 'scrounger',\n 'scrubbed',\n 'scrubber',\n 'scruffy',\n 'scrunch',\n 'scrutiny',\n 'scuba',\n 'scuff',\n 'sculptor',\n 'sculpture',\n 'scurvy',\n 'scuttle',\n 'secluded',\n 'secluding',\n 'seclusion',\n 'second',\n 'secrecy',\n 'secret',\n 'sectional',\n 'sector',\n 'secular',\n 'securely',\n 'security',\n 'sedan',\n 'sedate',\n 'sedation',\n 'sedative',\n 'sediment',\n 'seduce',\n 'seducing',\n 'segment',\n 'seismic',\n 'seizing',\n 'seldom',\n 'selected',\n 'selection',\n 'selective',\n 'selector',\n 'self',\n 'seltzer',\n 'semantic',\n 'semester',\n 'semicolon',\n 'semifinal',\n 'seminar',\n 'semisoft',\n 'semisweet',\n 'senate',\n 'senator',\n 'send',\n 'senior',\n 'senorita',\n 'sensation',\n 'sensitive',\n 'sensitize',\n 'sensually',\n 'sensuous',\n 'sepia',\n 'september',\n 'septic',\n 'septum',\n 'sequel',\n 'sequence',\n 'sequester',\n 'series',\n 'sermon',\n 'serotonin',\n 'serpent',\n 'serrated',\n 'serve',\n 'service',\n 'serving',\n 'sesame',\n 'sessions',\n 'setback',\n 'setting',\n 'settle',\n 'settling',\n 'setup',\n 'sevenfold',\n 'seventeen',\n 'seventh',\n 'seventy',\n 'severity',\n 'shabby',\n 'shack',\n 'shaded',\n 'shadily',\n 'shadiness',\n 'shading',\n 'shadow',\n 'shady',\n 'shaft',\n 'shakable',\n 'shakily',\n 'shakiness',\n 'shaking',\n 'shaky',\n 'shale',\n 'shallot',\n 'shallow',\n 'shame',\n 'shampoo',\n 'shamrock',\n 'shank',\n 'shanty',\n 'shape',\n 'shaping',\n 'share',\n 'sharpener',\n 'sharper',\n 'sharpie',\n 'sharply',\n 'sharpness',\n 'shawl',\n 'sheath',\n 'shed',\n 'sheep',\n 'sheet',\n 'shelf',\n 'shell',\n 'shelter',\n 'shelve',\n 'shelving',\n 'sherry',\n 'shield',\n 'shifter',\n 'shifting',\n 'shiftless',\n 'shifty',\n 'shimmer',\n 'shimmy',\n 'shindig',\n 'shine',\n 'shingle',\n 'shininess',\n 'shining',\n 'shiny',\n 'ship',\n 'shirt',\n 'shivering',\n 'shock',\n 'shone',\n 'shoplift',\n 'shopper',\n 'shopping',\n 'shoptalk',\n 'shore',\n 'shortage',\n 'shortcake',\n 'shortcut',\n 'shorten',\n 'shorter',\n 'shorthand',\n 'shortlist',\n 'shortly',\n 'shortness',\n 'shorts',\n 'shortwave',\n 'shorty',\n 'shout',\n 'shove',\n 'showbiz',\n 'showcase',\n 'showdown',\n 'shower',\n 'showgirl',\n 'showing',\n 'showman',\n 'shown',\n 'showoff',\n 'showpiece',\n 'showplace',\n 'showroom',\n 'showy',\n 'shrank',\n 'shrapnel',\n 'shredder',\n 'shredding',\n 'shrewdly',\n 'shriek',\n 'shrill',\n 'shrimp',\n 'shrine',\n 'shrink',\n 'shrivel',\n 'shrouded',\n 'shrubbery',\n 'shrubs',\n 'shrug',\n 'shrunk',\n 'shucking',\n 'shudder',\n 'shuffle',\n 'shuffling',\n 'shun',\n 'shush',\n 'shut',\n 'shy',\n 'siamese',\n 'siberian',\n 'sibling',\n 'siding',\n 'sierra',\n 'siesta',\n 'sift',\n 'sighing',\n 'silenced',\n 'silencer',\n 'silent',\n 'silica',\n 'silicon',\n 'silk',\n 'silliness',\n 'silly',\n 'silo',\n 'silt',\n 'silver',\n 'similarly',\n 'simile',\n 'simmering',\n 'simple',\n 'simplify',\n 'simply',\n 'sincere',\n 'sincerity',\n 'singer',\n 'singing',\n 'single',\n 'singular',\n 'sinister',\n 'sinless',\n 'sinner',\n 'sinuous',\n 'sip',\n 'siren',\n 'sister',\n 'sitcom',\n 'sitter',\n 'sitting',\n 'situated',\n 'situation',\n 'sixfold',\n 'sixteen',\n 'sixth',\n 'sixties',\n 'sixtieth',\n 'sixtyfold',\n 'sizable',\n 'sizably',\n 'size',\n 'sizing',\n 'sizzle',\n 'sizzling',\n 'skater',\n 'skating',\n 'skedaddle',\n 'skeletal',\n 'skeleton',\n 'skeptic',\n 'sketch',\n 'skewed',\n 'skewer',\n 'skid',\n 'skied',\n 'skier',\n 'skies',\n 'skiing',\n 'skilled',\n 'skillet',\n 'skillful',\n 'skimmed',\n 'skimmer',\n 'skimming',\n 'skimpily',\n 'skincare',\n 'skinhead',\n 'skinless',\n 'skinning',\n 'skinny',\n 'skintight',\n 'skipper',\n 'skipping',\n 'skirmish',\n 'skirt',\n 'skittle',\n 'skydiver',\n 'skylight',\n 'skyline',\n 'skype',\n 'skyrocket',\n 'skyward',\n 'slab',\n 'slacked',\n 'slacker',\n 'slacking',\n 'slackness',\n 'slacks',\n 'slain',\n 'slam',\n 'slander',\n 'slang',\n 'slapping',\n 'slapstick',\n 'slashed',\n 'slashing',\n 'slate',\n 'slather',\n 'slaw',\n 'sled',\n 'sleek',\n 'sleep',\n 'sleet',\n 'sleeve',\n 'slept',\n 'sliceable',\n 'sliced',\n 'slicer',\n 'slicing',\n 'slick',\n 'slider',\n 'slideshow',\n 'sliding',\n 'slighted',\n 'slighting',\n 'slightly',\n 'slimness',\n 'slimy',\n 'slinging',\n 'slingshot',\n 'slinky',\n 'slip',\n 'slit',\n 'sliver',\n 'slobbery',\n 'slogan',\n 'sloped',\n 'sloping',\n 'sloppily',\n 'sloppy',\n 'slot',\n 'slouching',\n 'slouchy',\n 'sludge',\n 'slug',\n 'slum',\n 'slurp',\n 'slush',\n 'sly',\n 'small',\n 'smartly',\n 'smartness',\n 'smasher',\n 'smashing',\n 'smashup',\n 'smell',\n 'smelting',\n 'smile',\n 'smilingly',\n 'smirk',\n 'smite',\n 'smith',\n 'smitten',\n 'smock',\n 'smog',\n 'smoked',\n 'smokeless',\n 'smokiness',\n 'smoking',\n 'smoky',\n 'smolder',\n 'smooth',\n 'smother',\n 'smudge',\n 'smudgy',\n 'smuggler',\n 'smuggling',\n 'smugly',\n 'smugness',\n 'snack',\n 'snagged',\n 'snaking',\n 'snap',\n 'snare',\n 'snarl',\n 'snazzy',\n 'sneak',\n 'sneer',\n 'sneeze',\n 'sneezing',\n 'snide',\n 'sniff',\n 'snippet',\n 'snipping',\n 'snitch',\n 'snooper',\n 'snooze',\n 'snore',\n 'snoring',\n 'snorkel',\n 'snort',\n 'snout',\n 'snowbird',\n 'snowboard',\n 'snowbound',\n 'snowcap',\n 'snowdrift',\n 'snowdrop',\n 'snowfall',\n 'snowfield',\n 'snowflake',\n 'snowiness',\n 'snowless',\n 'snowman',\n 'snowplow',\n 'snowshoe',\n 'snowstorm',\n 'snowsuit',\n 'snowy',\n 'snub',\n 'snuff',\n 'snuggle',\n 'snugly',\n 'snugness',\n 'speak',\n 'spearfish',\n 'spearhead',\n 'spearman',\n 'spearmint',\n 'species',\n 'specimen',\n 'specked',\n 'speckled',\n 'specks',\n 'spectacle',\n 'spectator',\n 'spectrum',\n 'speculate',\n 'speech',\n 'speed',\n 'spellbind',\n 'speller',\n 'spelling',\n 'spendable',\n 'spender',\n 'spending',\n 'spent',\n 'spew',\n 'sphere',\n 'spherical',\n 'sphinx',\n 'spider',\n 'spied',\n 'spiffy',\n 'spill',\n 'spilt',\n 'spinach',\n 'spinal',\n 'spindle',\n 'spinner',\n 'spinning',\n 'spinout',\n 'spinster',\n 'spiny',\n 'spiral',\n 'spirited',\n 'spiritism',\n 'spirits',\n 'spiritual',\n 'splashed',\n 'splashing',\n 'splashy',\n 'splatter',\n 'spleen',\n 'splendid',\n 'splendor',\n 'splice',\n 'splicing',\n 'splinter',\n 'splotchy',\n 'splurge',\n 'spoilage',\n 'spoiled',\n 'spoiler',\n 'spoiling',\n 'spoils',\n 'spoken',\n 'spokesman',\n 'sponge',\n 'spongy',\n 'sponsor',\n 'spoof',\n 'spookily',\n 'spooky',\n 'spool',\n 'spoon',\n 'spore',\n 'sporting',\n 'sports',\n 'sporty',\n 'spotless',\n 'spotlight',\n 'spotted',\n 'spotter',\n 'spotting',\n 'spotty',\n 'spousal',\n 'spouse',\n 'spout',\n 'sprain',\n 'sprang',\n 'sprawl',\n 'spray',\n 'spree',\n 'sprig',\n 'spring',\n 'sprinkled',\n 'sprinkler',\n 'sprint',\n 'sprite',\n 'sprout',\n 'spruce',\n 'sprung',\n 'spry',\n 'spud',\n 'spur',\n 'sputter',\n 'spyglass',\n 'squabble',\n 'squad',\n 'squall',\n 'squander',\n 'squash',\n 'squatted',\n 'squatter',\n 'squatting',\n 'squeak',\n 'squealer',\n 'squealing',\n 'squeamish',\n 'squeegee',\n 'squeeze',\n 'squeezing',\n 'squid',\n 'squiggle',\n 'squiggly',\n 'squint',\n 'squire',\n 'squirt',\n 'squishier',\n 'squishy',\n 'stability',\n 'stabilize',\n 'stable',\n 'stack',\n 'stadium',\n 'staff',\n 'stage',\n 'staging',\n 'stagnant',\n 'stagnate',\n 'stainable',\n 'stained',\n 'staining',\n 'stainless',\n 'stalemate',\n 'staleness',\n 'stalling',\n 'stallion',\n 'stamina',\n 'stammer',\n 'stamp',\n 'stand',\n 'stank',\n 'staple',\n 'stapling',\n 'starboard',\n 'starch',\n 'stardom',\n 'stardust',\n 'starfish',\n 'stargazer',\n 'staring',\n 'stark',\n 'starless',\n 'starlet',\n 'starlight',\n 'starlit',\n 'starring',\n 'starry',\n 'starship',\n 'starter',\n 'starting',\n 'startle',\n 'startling',\n 'startup',\n 'starved',\n 'starving',\n 'stash',\n 'state',\n 'static',\n 'statistic',\n 'statue',\n 'stature',\n 'status',\n 'statute',\n 'statutory',\n 'staunch',\n 'stays',\n 'steadfast',\n 'steadier',\n 'steadily',\n 'steadying',\n 'steam',\n 'steed',\n 'steep',\n 'steerable',\n 'steering',\n 'steersman',\n 'stegosaur',\n 'stellar',\n 'stem',\n 'stench',\n 'stencil',\n 'step',\n 'stereo',\n 'sterile',\n 'sterility',\n 'sterilize',\n 'sterling',\n 'sternness',\n 'sternum',\n 'stew',\n 'stick',\n 'stiffen',\n 'stiffly',\n 'stiffness',\n 'stifle',\n 'stifling',\n 'stillness',\n 'stilt',\n 'stimulant',\n 'stimulate',\n 'stimuli',\n 'stimulus',\n 'stinger',\n 'stingily',\n 'stinging',\n 'stingray',\n 'stingy',\n 'stinking',\n 'stinky',\n 'stipend',\n 'stipulate',\n 'stir',\n 'stitch',\n 'stock',\n 'stoic',\n 'stoke',\n 'stole',\n 'stomp',\n 'stonewall',\n 'stoneware',\n 'stonework',\n 'stoning',\n 'stony',\n 'stood',\n 'stooge',\n 'stool',\n 'stoop',\n 'stoplight',\n 'stoppable',\n 'stoppage',\n 'stopped',\n 'stopper',\n 'stopping',\n 'stopwatch',\n 'storable',\n 'storage',\n 'storeroom',\n 'storewide',\n 'storm',\n 'stout',\n 'stove',\n 'stowaway',\n 'stowing',\n 'straddle',\n 'straggler',\n 'strained',\n 'strainer',\n 'straining',\n 'strangely',\n 'stranger',\n 'strangle',\n 'strategic',\n 'strategy',\n 'stratus',\n 'straw',\n 'stray',\n 'streak',\n 'stream',\n 'street',\n 'strength',\n 'strenuous',\n 'strep',\n 'stress',\n 'stretch',\n 'strewn',\n 'stricken',\n 'strict',\n 'stride',\n 'strife',\n 'strike',\n 'striking',\n 'strive',\n 'striving',\n 'strobe',\n 'strode',\n 'stroller',\n 'strongbox',\n 'strongly',\n 'strongman',\n 'struck',\n 'structure',\n 'strudel',\n 'struggle',\n 'strum',\n 'strung',\n 'strut',\n 'stubbed',\n 'stubble',\n 'stubbly',\n 'stubborn',\n 'stucco',\n 'stuck',\n 'student',\n 'studied',\n 'studio',\n 'study',\n 'stuffed',\n 'stuffing',\n 'stuffy',\n 'stumble',\n 'stumbling',\n 'stump',\n 'stung',\n 'stunned',\n 'stunner',\n 'stunning',\n 'stunt',\n 'stupor',\n 'sturdily',\n 'sturdy',\n 'styling',\n 'stylishly',\n 'stylist',\n 'stylized',\n 'stylus',\n 'suave',\n 'subarctic',\n 'subatomic',\n 'subdivide',\n 'subdued',\n 'subduing',\n 'subfloor',\n 'subgroup',\n 'subheader',\n 'subject',\n 'sublease',\n 'sublet',\n 'sublevel',\n 'sublime',\n 'submarine',\n 'submerge',\n 'submersed',\n 'submitter',\n 'subpanel',\n 'subpar',\n 'subplot',\n 'subprime',\n 'subscribe',\n 'subscript',\n 'subsector',\n 'subside',\n 'subsiding',\n 'subsidize',\n 'subsidy',\n 'subsoil',\n 'subsonic',\n 'substance',\n 'subsystem',\n 'subtext',\n 'subtitle',\n 'subtly',\n 'subtotal',\n 'subtract',\n 'subtype',\n 'suburb',\n 'subway',\n 'subwoofer',\n 'subzero',\n 'succulent',\n 'such',\n 'suction',\n 'sudden',\n 'sudoku',\n 'suds',\n 'sufferer',\n 'suffering',\n 'suffice',\n 'suffix',\n 'suffocate',\n 'suffrage',\n 'sugar',\n 'suggest',\n 'suing',\n 'suitable',\n 'suitably',\n 'suitcase',\n 'suitor',\n 'sulfate',\n 'sulfide',\n 'sulfite',\n 'sulfur',\n 'sulk',\n 'sullen',\n 'sulphate',\n 'sulphuric',\n 'sultry',\n 'superbowl',\n 'superglue',\n 'superhero',\n 'superior',\n 'superjet',\n 'superman',\n 'supermom',\n 'supernova',\n 'supervise',\n 'supper',\n 'supplier',\n 'supply',\n 'support',\n 'supremacy',\n 'supreme',\n 'surcharge',\n 'surely',\n 'sureness',\n 'surface',\n 'surfacing',\n 'surfboard',\n 'surfer',\n 'surgery',\n 'surgical',\n 'surging',\n 'surname',\n 'surpass',\n 'surplus',\n 'surprise',\n 'surreal',\n 'surrender',\n 'surrogate',\n 'surround',\n 'survey',\n 'survival',\n 'survive',\n 'surviving',\n 'survivor',\n 'sushi',\n 'suspect',\n 'suspend',\n 'suspense',\n 'sustained',\n 'sustainer',\n 'swab',\n 'swaddling',\n 'swagger',\n 'swampland',\n 'swan',\n 'swapping',\n 'swarm',\n 'sway',\n 'swear',\n 'sweat',\n 'sweep',\n 'swell',\n 'swept',\n 'swerve',\n 'swifter',\n 'swiftly',\n 'swiftness',\n 'swimmable',\n 'swimmer',\n 'swimming',\n 'swimsuit',\n 'swimwear',\n 'swinger',\n 'swinging',\n 'swipe',\n 'swirl',\n 'switch',\n 'swivel',\n 'swizzle',\n 'swooned',\n 'swoop',\n 'swoosh',\n 'swore',\n 'sworn',\n 'swung',\n 'sycamore',\n 'sympathy',\n 'symphonic',\n 'symphony',\n 'symptom',\n 'synapse',\n 'syndrome',\n 'synergy',\n 'synopses',\n 'synopsis',\n 'synthesis',\n 'synthetic',\n 'syrup',\n 'system',\n 't-shirt',\n 'tabasco',\n 'tabby',\n 'tableful',\n 'tables',\n 'tablet',\n 'tableware',\n 'tabloid',\n 'tackiness',\n 'tacking',\n 'tackle',\n 'tackling',\n 'tacky',\n 'taco',\n 'tactful',\n 'tactical',\n 'tactics',\n 'tactile',\n 'tactless',\n 'tadpole',\n 'taekwondo',\n 'tag',\n 'tainted',\n 'take',\n 'taking',\n 'talcum',\n 'talisman',\n 'tall',\n 'talon',\n 'tamale',\n 'tameness',\n 'tamer',\n 'tamper',\n 'tank',\n 'tanned',\n 'tannery',\n 'tanning',\n 'tantrum',\n 'tapeless',\n 'tapered',\n 'tapering',\n 'tapestry',\n 'tapioca',\n 'tapping',\n 'taps',\n 'tarantula',\n 'target',\n 'tarmac',\n 'tarnish',\n 'tarot',\n 'tartar',\n 'tartly',\n 'tartness',\n 'task',\n 'tassel',\n 'taste',\n 'tastiness',\n 'tasting',\n 'tasty',\n 'tattered',\n 'tattle',\n 'tattling',\n 'tattoo',\n 'taunt',\n 'tavern',\n 'thank',\n 'that',\n 'thaw',\n 'theater',\n 'theatrics',\n 'thee',\n 'theft',\n 'theme',\n 'theology',\n 'theorize',\n 'thermal',\n 'thermos',\n 'thesaurus',\n 'these',\n 'thesis',\n 'thespian',\n 'thicken',\n 'thicket',\n 'thickness',\n 'thieving',\n 'thievish',\n 'thigh',\n 'thimble',\n 'thing',\n 'think',\n 'thinly',\n 'thinner',\n 'thinness',\n 'thinning',\n 'thirstily',\n 'thirsting',\n 'thirsty',\n 'thirteen',\n 'thirty',\n 'thong',\n 'thorn',\n 'those',\n 'thousand',\n 'thrash',\n 'thread',\n 'threaten',\n 'threefold',\n 'thrift',\n 'thrill',\n 'thrive',\n 'thriving',\n 'throat',\n 'throbbing',\n 'throng',\n 'throttle',\n 'throwaway',\n 'throwback',\n 'thrower',\n 'throwing',\n 'thud',\n 'thumb',\n 'thumping',\n 'thursday',\n 'thus',\n 'thwarting',\n 'thyself',\n 'tiara',\n 'tibia',\n 'tidal',\n 'tidbit',\n 'tidiness',\n 'tidings',\n 'tidy',\n 'tiger',\n 'tighten',\n 'tightly',\n 'tightness',\n 'tightrope',\n 'tightwad',\n 'tigress',\n 'tile',\n 'tiling',\n 'till',\n 'tilt',\n 'timid',\n 'timing',\n 'timothy',\n 'tinderbox',\n 'tinfoil',\n 'tingle',\n 'tingling',\n 'tingly',\n 'tinker',\n 'tinkling',\n 'tinsel',\n 'tinsmith',\n 'tint',\n 'tinwork',\n 'tiny',\n 'tipoff',\n 'tipped',\n 'tipper',\n 'tipping',\n 'tiptoeing',\n 'tiptop',\n 'tiring',\n 'tissue',\n 'trace',\n 'tracing',\n 'track',\n 'traction',\n 'tractor',\n 'trade',\n 'trading',\n 'tradition',\n 'traffic',\n 'tragedy',\n 'trailing',\n 'trailside',\n 'train',\n 'traitor',\n 'trance',\n 'tranquil',\n 'transfer',\n 'transform',\n 'translate',\n 'transpire',\n 'transport',\n 'transpose',\n 'trapdoor',\n 'trapeze',\n 'trapezoid',\n 'trapped',\n 'trapper',\n 'trapping',\n 'traps',\n 'trash',\n 'travel',\n 'traverse',\n 'travesty',\n 'tray',\n 'treachery',\n 'treading',\n 'treadmill',\n 'treason',\n 'treat',\n 'treble',\n 'tree',\n 'trekker',\n 'tremble',\n 'trembling',\n 'tremor',\n 'trench',\n 'trend',\n 'trespass',\n 'triage',\n 'trial',\n 'triangle',\n 'tribesman',\n 'tribunal',\n 'tribune',\n 'tributary',\n 'tribute',\n 'triceps',\n 'trickery',\n 'trickily',\n 'tricking',\n 'trickle',\n 'trickster',\n 'tricky',\n 'tricolor',\n 'tricycle',\n 'trident',\n 'tried',\n 'trifle',\n 'trifocals',\n 'trillion',\n 'trilogy',\n 'trimester',\n 'trimmer',\n 'trimming',\n 'trimness',\n 'trinity',\n 'trio',\n 'tripod',\n 'tripping',\n 'triumph',\n 'trivial',\n 'trodden',\n 'trolling',\n 'trombone',\n 'trophy',\n 'tropical',\n 'tropics',\n 'trouble',\n 'troubling',\n 'trough',\n 'trousers',\n 'trout',\n 'trowel',\n 'truce',\n 'truck',\n 'truffle',\n 'trump',\n 'trunks',\n 'trustable',\n 'trustee',\n 'trustful',\n 'trusting',\n 'trustless',\n 'truth',\n 'try',\n 'tubby',\n 'tubeless',\n 'tubular',\n 'tucking',\n 'tuesday',\n 'tug',\n 'tuition',\n 'tulip',\n 'tumble',\n 'tumbling',\n 'tummy',\n 'turban',\n 'turbine',\n 'turbofan',\n 'turbojet',\n 'turbulent',\n 'turf',\n 'turkey',\n 'turmoil',\n 'turret',\n 'turtle',\n 'tusk',\n 'tutor',\n 'tutu',\n 'tux',\n 'tweak',\n 'tweed',\n 'tweet',\n 'tweezers',\n 'twelve',\n 'twentieth',\n 'twenty',\n 'twerp',\n 'twice',\n 'twiddle',\n 'twiddling',\n 'twig',\n 'twilight',\n 'twine',\n 'twins',\n 'twirl',\n 'twistable',\n 'twisted',\n 'twister',\n 'twisting',\n 'twisty',\n 'twitch',\n 'twitter',\n 'tycoon',\n 'tying',\n 'tyke',\n 'udder',\n 'ultimate',\n 'ultimatum',\n 'ultra',\n 'umbilical',\n 'umbrella',\n 'umpire',\n 'unabashed',\n 'unable',\n 'unadorned',\n 'unadvised',\n 'unafraid',\n 'unaired',\n 'unaligned',\n 'unaltered',\n 'unarmored',\n 'unashamed',\n 'unaudited',\n 'unawake',\n 'unaware',\n 'unbaked',\n 'unbalance',\n 'unbeaten',\n 'unbend',\n 'unbent',\n 'unbiased',\n 'unbitten',\n 'unblended',\n 'unblessed',\n 'unblock',\n 'unbolted',\n 'unbounded',\n 'unboxed',\n 'unbraided',\n 'unbridle',\n 'unbroken',\n 'unbuckled',\n 'unbundle',\n 'unburned',\n 'unbutton',\n 'uncanny',\n 'uncapped',\n 'uncaring',\n 'uncertain',\n 'unchain',\n 'unchanged',\n 'uncharted',\n 'uncheck',\n 'uncivil',\n 'unclad',\n 'unclaimed',\n 'unclamped',\n 'unclasp',\n 'uncle',\n 'unclip',\n 'uncloak',\n 'unclog',\n 'unclothed',\n 'uncoated',\n 'uncoiled',\n 'uncolored',\n 'uncombed',\n 'uncommon',\n 'uncooked',\n 'uncork',\n 'uncorrupt',\n 'uncounted',\n 'uncouple',\n 'uncouth',\n 'uncover',\n 'uncross',\n 'uncrown',\n 'uncrushed',\n 'uncured',\n 'uncurious',\n 'uncurled',\n 'uncut',\n 'undamaged',\n 'undated',\n 'undaunted',\n 'undead',\n 'undecided',\n 'undefined',\n 'underage',\n 'underarm',\n 'undercoat',\n 'undercook',\n 'undercut',\n 'underdog',\n 'underdone',\n 'underfed',\n 'underfeed',\n 'underfoot',\n 'undergo',\n 'undergrad',\n 'underhand',\n 'underline',\n 'underling',\n 'undermine',\n 'undermost',\n 'underpaid',\n 'underpass',\n 'underpay',\n 'underrate',\n 'undertake',\n 'undertone',\n 'undertook',\n 'undertow',\n 'underuse',\n 'underwear',\n 'underwent',\n 'underwire',\n 'undesired',\n 'undiluted',\n 'undivided',\n 'undocked',\n 'undoing',\n 'undone',\n 'undrafted',\n 'undress',\n 'undrilled',\n 'undusted',\n 'undying',\n 'unearned',\n 'unearth',\n 'unease',\n 'uneasily',\n 'uneasy',\n 'uneatable',\n 'uneaten',\n 'unedited',\n 'unelected',\n 'unending',\n 'unengaged',\n 'unenvied',\n 'unequal',\n 'unethical',\n 'uneven',\n 'unexpired',\n 'unexposed',\n 'unfailing',\n 'unfair',\n 'unfasten',\n 'unfazed',\n 'unfeeling',\n 'unfiled',\n 'unfilled',\n 'unfitted',\n 'unfitting',\n 'unfixable',\n 'unfixed',\n 'unflawed',\n 'unfocused',\n 'unfold',\n 'unfounded',\n 'unframed',\n 'unfreeze',\n 'unfrosted',\n 'unfrozen',\n 'unfunded',\n 'unglazed',\n 'ungloved',\n 'unglue',\n 'ungodly',\n 'ungraded',\n 'ungreased',\n 'unguarded',\n 'unguided',\n 'unhappily',\n 'unhappy',\n 'unharmed',\n 'unhealthy',\n 'unheard',\n 'unhearing',\n 'unheated',\n 'unhelpful',\n 'unhidden',\n 'unhinge',\n 'unhitched',\n 'unholy',\n 'unhook',\n 'unicorn',\n 'unicycle',\n 'unified',\n 'unifier',\n 'uniformed',\n 'uniformly',\n 'unify',\n 'unimpeded',\n 'uninjured',\n 'uninstall',\n 'uninsured',\n 'uninvited',\n 'union',\n 'uniquely',\n 'unisexual',\n 'unison',\n 'unissued',\n 'unit',\n 'universal',\n 'universe',\n 'unjustly',\n 'unkempt',\n 'unkind',\n 'unknotted',\n 'unknowing',\n 'unknown',\n 'unlaced',\n 'unlatch',\n 'unlawful',\n 'unleaded',\n 'unlearned',\n 'unleash',\n 'unless',\n 'unleveled',\n 'unlighted',\n 'unlikable',\n 'unlimited',\n 'unlined',\n 'unlinked',\n 'unlisted',\n 'unlit',\n 'unlivable',\n 'unloaded',\n 'unloader',\n 'unlocked',\n 'unlocking',\n 'unlovable',\n 'unloved',\n 'unlovely',\n 'unloving',\n 'unluckily',\n 'unlucky',\n 'unmade',\n 'unmanaged',\n 'unmanned',\n 'unmapped',\n 'unmarked',\n 'unmasked',\n 'unmasking',\n 'unmatched',\n 'unmindful',\n 'unmixable',\n 'unmixed',\n 'unmolded',\n 'unmoral',\n 'unmovable',\n 'unmoved',\n 'unmoving',\n 'unnamable',\n 'unnamed',\n 'unnatural',\n 'unneeded',\n 'unnerve',\n 'unnerving',\n 'unnoticed',\n 'unopened',\n 'unopposed',\n 'unpack',\n 'unpadded',\n 'unpaid',\n 'unpainted',\n 'unpaired',\n 'unpaved',\n 'unpeeled',\n 'unpicked',\n 'unpiloted',\n 'unpinned',\n 'unplanned',\n 'unplanted',\n 'unpleased',\n 'unpledged',\n 'unplowed',\n 'unplug',\n 'unpopular',\n 'unproven',\n 'unquote',\n 'unranked',\n 'unrated',\n 'unraveled',\n 'unreached',\n 'unread',\n 'unreal',\n 'unreeling',\n 'unrefined',\n 'unrelated',\n 'unrented',\n 'unrest',\n 'unretired',\n 'unrevised',\n 'unrigged',\n 'unripe',\n 'unrivaled',\n 'unroasted',\n 'unrobed',\n 'unroll',\n 'unruffled',\n 'unruly',\n 'unrushed',\n 'unsaddle',\n 'unsafe',\n 'unsaid',\n 'unsalted',\n 'unsaved',\n 'unsavory',\n 'unscathed',\n 'unscented',\n 'unscrew',\n 'unsealed',\n 'unseated',\n 'unsecured',\n 'unseeing',\n 'unseemly',\n 'unseen',\n 'unselect',\n 'unselfish',\n 'unsent',\n 'unsettled',\n 'unshackle',\n 'unshaken',\n 'unshaved',\n 'unshaven',\n 'unsheathe',\n 'unshipped',\n 'unsightly',\n 'unsigned',\n 'unskilled',\n 'unsliced',\n 'unsmooth',\n 'unsnap',\n 'unsocial',\n 'unsoiled',\n 'unsold',\n 'unsolved',\n 'unsorted',\n 'unspoiled',\n 'unspoken',\n 'unstable',\n 'unstaffed',\n 'unstamped',\n 'unsteady',\n 'unsterile',\n 'unstirred',\n 'unstitch',\n 'unstopped',\n 'unstuck',\n 'unstuffed',\n 'unstylish',\n 'unsubtle',\n 'unsubtly',\n 'unsuited',\n 'unsure',\n 'unsworn',\n 'untagged',\n 'untainted',\n 'untaken',\n 'untamed',\n 'untangled',\n 'untapped',\n 'untaxed',\n 'unthawed',\n 'unthread',\n 'untidy',\n 'untie',\n 'until',\n 'untimed',\n 'untimely',\n 'untitled',\n 'untoasted',\n 'untold',\n 'untouched',\n 'untracked',\n 'untrained',\n 'untreated',\n 'untried',\n 'untrimmed',\n 'untrue',\n 'untruth',\n 'unturned',\n 'untwist',\n 'untying',\n 'unusable',\n 'unused',\n 'unusual',\n 'unvalued',\n 'unvaried',\n 'unvarying',\n 'unveiled',\n 'unveiling',\n 'unvented',\n 'unviable',\n 'unvisited',\n 'unvocal',\n 'unwanted',\n 'unwarlike',\n 'unwary',\n 'unwashed',\n 'unwatched',\n 'unweave',\n 'unwed',\n 'unwelcome',\n 'unwell',\n 'unwieldy',\n 'unwilling',\n 'unwind',\n 'unwired',\n 'unwitting',\n 'unwomanly',\n 'unworldly',\n 'unworn',\n 'unworried',\n 'unworthy',\n 'unwound',\n 'unwoven',\n 'unwrapped',\n 'unwritten',\n 'unzip',\n 'upbeat',\n 'upchuck',\n 'upcoming',\n 'upcountry',\n 'update',\n 'upfront',\n 'upgrade',\n 'upheaval',\n 'upheld',\n 'uphill',\n 'uphold',\n 'uplifted',\n 'uplifting',\n 'upload',\n 'upon',\n 'upper',\n 'upright',\n 'uprising',\n 'upriver',\n 'uproar',\n 'uproot',\n 'upscale',\n 'upside',\n 'upstage',\n 'upstairs',\n 'upstart',\n 'upstate',\n 'upstream',\n 'upstroke',\n 'upswing',\n 'uptake',\n 'uptight',\n 'uptown',\n 'upturned',\n 'upward',\n 'upwind',\n 'uranium',\n 'urban',\n 'urchin',\n 'urethane',\n 'urgency',\n 'urgent',\n 'urging',\n 'urologist',\n 'urology',\n 'usable',\n 'usage',\n 'useable',\n 'used',\n 'uselessly',\n 'user',\n 'usher',\n 'usual',\n 'utensil',\n 'utility',\n 'utilize',\n 'utmost',\n 'utopia',\n 'utter',\n 'vacancy',\n 'vacant',\n 'vacate',\n 'vacation',\n 'vagabond',\n 'vagrancy',\n 'vagrantly',\n 'vaguely',\n 'vagueness',\n 'valiant',\n 'valid',\n 'valium',\n 'valley',\n 'valuables',\n 'value',\n 'vanilla',\n 'vanish',\n 'vanity',\n 'vanquish',\n 'vantage',\n 'vaporizer',\n 'variable',\n 'variably',\n 'varied',\n 'variety',\n 'various',\n 'varmint',\n 'varnish',\n 'varsity',\n 'varying',\n 'vascular',\n 'vaseline',\n 'vastly',\n 'vastness',\n 'veal',\n 'vegan',\n 'veggie',\n 'vehicular',\n 'velcro',\n 'velocity',\n 'velvet',\n 'vendetta',\n 'vending',\n 'vendor',\n 'veneering',\n 'vengeful',\n 'venomous',\n 'ventricle',\n 'venture',\n 'venue',\n 'venus',\n 'verbalize',\n 'verbally',\n 'verbose',\n 'verdict',\n 'verify',\n 'verse',\n 'version',\n 'versus',\n 'vertebrae',\n 'vertical',\n 'vertigo',\n 'very',\n 'vessel',\n 'vest',\n 'veteran',\n 'veto',\n 'vexingly',\n 'viability',\n 'viable',\n 'vibes',\n 'vice',\n 'vicinity',\n 'victory',\n 'video',\n 'viewable',\n 'viewer',\n 'viewing',\n 'viewless',\n 'viewpoint',\n 'vigorous',\n 'village',\n 'villain',\n 'vindicate',\n 'vineyard',\n 'vintage',\n 'violate',\n 'violation',\n 'violator',\n 'violet',\n 'violin',\n 'viper',\n 'viral',\n 'virtual',\n 'virtuous',\n 'virus',\n 'visa',\n 'viscosity',\n 'viscous',\n 'viselike',\n 'visible',\n 'visibly',\n 'vision',\n 'visiting',\n 'visitor',\n 'visor',\n 'vista',\n 'vitality',\n 'vitalize',\n 'vitally',\n 'vitamins',\n 'vivacious',\n 'vividly',\n 'vividness',\n 'vixen',\n 'vocalist',\n 'vocalize',\n 'vocally',\n 'vocation',\n 'voice',\n 'voicing',\n 'void',\n 'volatile',\n 'volley',\n 'voltage',\n 'volumes',\n 'voter',\n 'voting',\n 'voucher',\n 'vowed',\n 'vowel',\n 'voyage',\n 'wackiness',\n 'wad',\n 'wafer',\n 'waffle',\n 'waged',\n 'wager',\n 'wages',\n 'waggle',\n 'wagon',\n 'wake',\n 'waking',\n 'walk',\n 'walmart',\n 'walnut',\n 'walrus',\n 'waltz',\n 'wand',\n 'wannabe',\n 'wanted',\n 'wanting',\n 'wasabi',\n 'washable',\n 'washbasin',\n 'washboard',\n 'washbowl',\n 'washcloth',\n 'washday',\n 'washed',\n 'washer',\n 'washhouse',\n 'washing',\n 'washout',\n 'washroom',\n 'washstand',\n 'washtub',\n 'wasp',\n 'wasting',\n 'watch',\n 'water',\n 'waviness',\n 'waving',\n 'wavy',\n 'whacking',\n 'whacky',\n 'wham',\n 'wharf',\n 'wheat',\n 'whenever',\n 'whiff',\n 'whimsical',\n 'whinny',\n 'whiny',\n 'whisking',\n 'whoever',\n 'whole',\n 'whomever',\n 'whoopee',\n 'whooping',\n 'whoops',\n 'why',\n 'wick',\n 'widely',\n 'widen',\n 'widget',\n 'widow',\n 'width',\n 'wieldable',\n 'wielder',\n 'wife',\n 'wifi',\n 'wikipedia',\n 'wildcard',\n 'wildcat',\n 'wilder',\n 'wildfire',\n 'wildfowl',\n 'wildland',\n 'wildlife',\n 'wildly',\n 'wildness',\n 'willed',\n 'willfully',\n 'willing',\n 'willow',\n 'willpower',\n 'wilt',\n 'wimp',\n 'wince',\n 'wincing',\n 'wind',\n 'wing',\n 'winking',\n 'winner',\n 'winnings',\n 'winter',\n 'wipe',\n 'wired',\n 'wireless',\n 'wiring',\n 'wiry',\n 'wisdom',\n 'wise',\n 'wish',\n 'wisplike',\n 'wispy',\n 'wistful',\n 'wizard',\n 'wobble',\n 'wobbling',\n 'wobbly',\n 'wok',\n 'wolf',\n 'wolverine',\n 'womanhood',\n 'womankind',\n 'womanless',\n 'womanlike',\n 'womanly',\n 'womb',\n 'woof',\n 'wooing',\n 'wool',\n 'woozy',\n 'word',\n 'work',\n 'worried',\n 'worrier',\n 'worrisome',\n 'worry',\n 'worsening',\n 'worshiper',\n 'worst',\n 'wound',\n 'woven',\n 'wow',\n 'wrangle',\n 'wrath',\n 'wreath',\n 'wreckage',\n 'wrecker',\n 'wrecking',\n 'wrench',\n 'wriggle',\n 'wriggly',\n 'wrinkle',\n 'wrinkly',\n 'wrist',\n 'writing',\n 'written',\n 'wrongdoer',\n 'wronged',\n 'wrongful',\n 'wrongly',\n 'wrongness',\n 'wrought',\n 'xbox',\n 'xerox',\n 'yahoo',\n 'yam',\n 'yanking',\n 'yapping',\n 'yard',\n 'yarn',\n 'yeah',\n 'yearbook',\n 'yearling',\n 'yearly',\n 'yearning',\n 'yeast',\n 'yelling',\n 'yelp',\n 'yen',\n 'yesterday',\n 'yiddish',\n 'yield',\n 'yin',\n 'yippee',\n 'yo-yo',\n 'yodel',\n 'yoga',\n 'yogurt',\n 'yonder',\n 'yoyo',\n 'yummy',\n 'zap',\n 'zealous',\n 'zebra',\n 'zen',\n 'zeppelin',\n 'zero',\n 'zestfully',\n 'zesty',\n 'zigzagged',\n 'zipfile',\n 'zipping',\n 'zippy',\n 'zips',\n 'zit',\n 'zodiac',\n 'zombie',\n 'zone',\n 'zoning',\n 'zookeeper',\n 'zoologist',\n 'zoology',\n 'zoom',\n]);\n\n/**\n * This is the EFF long wordlist, but with the following entries removed:\n *\n * * drop-down\n * * flet-tip\n * * t-shirt\n * * yo-yo\n *\n * The original list is 7776 entries, and thus the list here is 7772 entries.\n *\n * The reason for this is that a frequent passphrase separator is the \"-\" which can\n * then result in ambiguous word separations. This keeps the resulting passphrase\n * prettier (in the case where it's joined by dashes) with an unambiguous and\n * deterministic number of dashes.\n *\n * More details can be found here:\n *\n * * https://www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases\n * * https://www.eff.org/files/2016/07/18/eff_large_wordlist.txt\n *\n */\nexport const DEFAULT_WORDLIST = Object.freeze(EFF_LONG_WORDLIST.filter((w) => !w.includes('-')));\n","import * as React from \"react\";\nfunction ArrowPathIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ArrowPathIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction EyeIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(EyeIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction EyeSlashIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.522 10.522 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(EyeSlashIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction KeyIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M15.75 5.25a3 3 0 0 1 3 3m3 0a6 6 0 0 1-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1 1 21.75 8.25Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(KeyIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ArrowDownTrayIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ArrowDownTrayIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ClipboardDocumentCheckIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M11.35 3.836c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m8.9-4.414c.376.023.75.05 1.124.08 1.131.094 1.976 1.057 1.976 2.192V16.5A2.25 2.25 0 0 1 18 18.75h-2.25m-7.5-10.5H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125.504 1.125 1.125v9.375m-8.25-3 1.5 1.5 3-3.75\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ClipboardDocumentCheckIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction DocumentDuplicateIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(DocumentDuplicateIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction UserCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M17.982 18.725A7.488 7.488 0 0 0 12 15.75a7.488 7.488 0 0 0-5.982 2.975m11.963 0a9 9 0 1 0-11.963 0m11.963 0A8.966 8.966 0 0 1 12 21a8.966 8.966 0 0 1-5.982-2.275M15 9.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(UserCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction LockClosedIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M12 1.5a5.25 5.25 0 0 0-5.25 5.25v3a3 3 0 0 0-3 3v6.75a3 3 0 0 0 3 3h10.5a3 3 0 0 0 3-3v-6.75a3 3 0 0 0-3-3v-3c0-2.9-2.35-5.25-5.25-5.25Zm3.75 8.25v-3a3.75 3.75 0 1 0-7.5 0v3h7.5Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(LockClosedIcon);\nexport default ForwardRef;","import{formatEther as e,formatUnits as r}from\"viem\";function n(e){return e?`${e.slice(0,5)}…${e.slice(-4)}`:\"\"}function t({wei:r,precision:n=3}){return parseFloat(e(r)).toFixed(n).replace(/0+$/,\"\").replace(/\\.$/,\"\")}function i({amount:e,decimals:n}){return r(BigInt(e),n)}function o({lamports:e}){return r(e,9)}export{o as formatLamportsAmount,i as formatTokenAmount,n as formatWalletAddress,t as formatWeiAmount};\n","const t={id:42161,name:\"Arbitrum One\",network:\"arbitrum\",nativeCurrency:{name:\"Ether\",symbol:\"ETH\",decimals:18},rpcUrls:{privy:{http:[\"https://arbitrum-mainnet.rpc.privy.systems\"]},alchemy:{http:[\"https://arb-mainnet.g.alchemy.com/v2\"],webSocket:[\"wss://arb-mainnet.g.alchemy.com/v2\"]},infura:{http:[\"https://arbitrum-mainnet.infura.io/v3\"],webSocket:[\"wss://arbitrum-mainnet.infura.io/ws/v3\"]},default:{http:[\"https://arb1.arbitrum.io/rpc\"]},public:{http:[\"https://arb1.arbitrum.io/rpc\"]}},blockExplorers:{etherscan:{name:\"Arbiscan\",url:\"https://arbiscan.io\"},default:{name:\"Arbiscan\",url:\"https://arbiscan.io\"}}};export{t as arbitrum};\n","const t={id:8453,network:\"base\",name:\"Base\",nativeCurrency:{name:\"Ether\",symbol:\"ETH\",decimals:18},rpcUrls:{privy:{http:[\"https://base-mainnet.rpc.privy.systems\"]},blast:{http:[\"https://base-mainnet.blastapi.io\"],webSocket:[\"wss://base-mainnet.blastapi.io\"]},default:{http:[\"https://mainnet.base.org\"]},public:{http:[\"https://mainnet.base.org\"]}},blockExplorers:{etherscan:{name:\"Basescan\",url:\"https://basescan.org\"},default:{name:\"Basescan\",url:\"https://basescan.org\"}}};export{t as base};\n","const t={id:1,network:\"homestead\",name:\"Ethereum\",nativeCurrency:{name:\"Ether\",symbol:\"ETH\",decimals:18},rpcUrls:{privy:{http:[\"https://mainnet.rpc.privy.systems\"]},alchemy:{http:[\"https://eth-mainnet.g.alchemy.com/v2\"],webSocket:[\"wss://eth-mainnet.g.alchemy.com/v2\"]},infura:{http:[\"https://mainnet.infura.io/v3\"],webSocket:[\"wss://mainnet.infura.io/ws/v3\"]},default:{http:[\"https://cloudflare-eth.com\"]},public:{http:[\"https://cloudflare-eth.com\"]}},blockExplorers:{etherscan:{name:\"Etherscan\",url:\"https://etherscan.io\"},default:{name:\"Etherscan\",url:\"https://etherscan.io\"}}};export{t as mainnet};\n","const t={id:10,name:\"OP Mainnet\",network:\"optimism\",nativeCurrency:{name:\"Ether\",symbol:\"ETH\",decimals:18},rpcUrls:{privy:{http:[\"https://optimism-mainnet.rpc.privy.systems\"]},alchemy:{http:[\"https://opt-mainnet.g.alchemy.com/v2\"],webSocket:[\"wss://opt-mainnet.g.alchemy.com/v2\"]},infura:{http:[\"https://optimism-mainnet.infura.io/v3\"],webSocket:[\"wss://optimism-mainnet.infura.io/ws/v3\"]},default:{http:[\"https://mainnet.optimism.io\"]},public:{http:[\"https://mainnet.optimism.io\"]}},blockExplorers:{etherscan:{name:\"Etherscan\",url:\"https://optimistic.etherscan.io\"},default:{name:\"Optimism Explorer\",url:\"https://explorer.optimism.io\"}}};export{t as optimism};\n","const o={id:137,name:\"Polygon Mainnet\",network:\"polygon\",nativeCurrency:{name:\"POL\",symbol:\"POL\",decimals:18},rpcUrls:{privy:{http:[\"https://polygon-mainnet.rpc.privy.systems\"]},alchemy:{http:[\"https://polygon-mainnet.g.alchemy.com/v2\"],webSocket:[\"wss://polygon-mainnet.g.alchemy.com/v2\"]},infura:{http:[\"https://polygon-mainnet.infura.io/v3\"],webSocket:[\"wss://polygon-mainnet.infura.io/ws/v3\"]},default:{http:[\"https://polygon-rpc.com\"]},public:{http:[\"https://polygon-rpc.com\"]}},blockExplorers:{etherscan:{name:\"PolygonScan\",url:\"https://polygonscan.com\"},default:{name:\"PolygonScan\",url:\"https://polygonscan.com\"}}};export{o as polygon};\n","import{arbitrum as e}from\"../chains/arbitrum.mjs\";import{base as s}from\"../chains/base.mjs\";import{mainnet as a}from\"../chains/mainnet.mjs\";import{optimism as t}from\"../chains/optimism.mjs\";import{polygon as r}from\"../chains/polygon.mjs\";let n=new Set([a.id,s.id,t.id,r.id,e.id]),i=new Set([a.id,s.id,r.id,t.id]),c={buy:\"CARD\",send:\"CRYPTO_ACCOUNT\"},o={USDC:\"2b92315d-eab7-5bef-84fa-089a131333f5\",ETH:\"d85dce9b-5b73-5c3c-8978-522ce1d1c1b4\",BTC:\"5b71fc48-3dd3-540c-809b-f8c94d0e68b5\",SOL:\"4f039497-3af8-5bb3-951c-6df9afa9be1c\",POL:\"026bcc1e-9163-591c-a709-34dd18b2e7a1\"},d={[a.id]:\"ethereum\",[s.id]:\"base\",[t.id]:\"optimism\",[r.id]:\"polygon\",[e.id]:\"arbitrum\"};function m({input:e,amount:s,blockchain:a,asset:t,experience:r}){let n=new URL(\"https://pay.coinbase.com/buy/select-asset\");return n.searchParams.set(\"appId\",e.app_id),n.searchParams.set(\"sessionToken\",e.session_token),n.searchParams.set(\"defaultExperience\",r),n.searchParams.set(\"presetCryptoAmount\",s.startsWith(\".\")?`0${s}`:s),n.searchParams.set(\"defaultNetwork\",a),n.searchParams.set(\"defaultPaymentMethod\",c[r]),n.searchParams.set(\"defaultAsset\",o[t]),n.searchParams.set(\"partnerUserId\",e.partner_user_id),{url:n}}const p=(e,s)=>{switch(s){case\"native-currency\":return n.has(e);case\"USDC\":return i.has(e);default:return console.warn(\"Unknown asset passed to Coinbase Onramp\"),!1}};function u(e){return d[e]}function b(e,s){return\"USDC\"===s?\"USDC\":e===r.id?\"POL\":\"ETH\"}export{m as getCoinbaseOnRampUrl,p as isSupportedChainIdForCoinbaseOnramp,b as toCoinbaseAssetId,u as toCoinbaseBlockchainFromChainId};\n","const a={id:43114,name:\"Avalanche\",network:\"avalanche\",nativeCurrency:{decimals:18,name:\"Avalanche\",symbol:\"AVAX\"},rpcUrls:{default:{http:[\"https://api.avax.network/ext/bc/C/rpc\"]},public:{http:[\"https://api.avax.network/ext/bc/C/rpc\"]}},blockExplorers:{etherscan:{name:\"SnowTrace\",url:\"https://snowtrace.io\"},default:{name:\"SnowTrace\",url:\"https://snowtrace.io\"}}};export{a as avalanche};\n","const e={id:42220,name:\"Celo Mainnet\",network:\"celo\",nativeCurrency:{decimals:18,name:\"CELO\",symbol:\"CELO\"},rpcUrls:{default:{http:[\"https://forno.celo.org\"]},infura:{http:[\"https://celo-mainnet.infura.io/v3\"]},public:{http:[\"https://forno.celo.org\"]}},blockExplorers:{default:{name:\"Celo Explorer\",url:\"https://explorer.celo.org/mainnet\"},etherscan:{name:\"CeloScan\",url:\"https://celoscan.io\"}},testnet:!1};export{e as celo};\n","import{arbitrum as r}from\"../chains/arbitrum.mjs\";import{avalanche as e}from\"../chains/avalanche.mjs\";import{base as n}from\"../chains/base.mjs\";import{celo as t}from\"../chains/celo.mjs\";import{mainnet as i}from\"../chains/mainnet.mjs\";import{optimism as a}from\"../chains/optimism.mjs\";import{polygon as o}from\"../chains/polygon.mjs\";const c={prod:{url:\"https://api.moonpay.com/v1\",key:\"pk_live_hirbpu0cVcLHrjktC9l7fbc9ctjv0SL\"},sandbox:{url:\"https://api.moonpay.com/v1\",key:\"pk_test_fqWjXZMSFwloh7orvJsRfjiUHXJqFzI\"}};let s=new Set([i.id,r.id,n.id,o.id,e.id,t.id]),m=new Set([i.id,r.id,a.id,n.id,o.id]);function d(r,e){switch(e){case\"native-currency\":return s.has(r);case\"USDC\":return m.has(r);default:return console.warn(\"Unknown asset passed to MoonPay Onramp\"),!1}}function u(a,c){switch(a){case r.id:return\"native-currency\"===c?\"ETH_ARBITRUM\":\"USDC_ARBITRUM\";case e.id:return\"AVAX_CCHAIN\";case n.id:return\"native-currency\"===c?\"ETH_BASE\":\"USDC_BASE\";case t.id:return\"CELO_CELO\";case o.id:return\"native-currency\"===c?\"MATIC_POLYGON\":\"USDC_POLYGON\";case i.id:return\"native-currency\"===c?\"ETH_ETHEREUM\":\"USDC_ETHEREUM\";default:return console.warn(`Chain ${a} not supported by Moonpay, defaulting to Ethereum mainnet`),\"ETH_ETHEREUM\"}}function p(r){switch(r){case\"card\":case\"payment-request\":return\"credit_debit_card\";default:throw Error(`Unsupported Moonpay funding method ${r}`)}}export{c as MoonpayEnvironments,u as chainToMoonpayCurrency,p as fundingMethodToMoonpayPaymentMethod,d as isSupportedChainIdForMoonpay};\n","// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"AC\":\"40123\",\"AD\":\"312345\",\"AE\":\"501234567\",\"AF\":\"701234567\",\"AG\":\"2684641234\",\"AI\":\"2642351234\",\"AL\":\"672123456\",\"AM\":\"77123456\",\"AO\":\"923123456\",\"AR\":\"91123456789\",\"AS\":\"6847331234\",\"AT\":\"664123456\",\"AU\":\"412345678\",\"AW\":\"5601234\",\"AX\":\"412345678\",\"AZ\":\"401234567\",\"BA\":\"61123456\",\"BB\":\"2462501234\",\"BD\":\"1812345678\",\"BE\":\"470123456\",\"BF\":\"70123456\",\"BG\":\"43012345\",\"BH\":\"36001234\",\"BI\":\"79561234\",\"BJ\":\"90011234\",\"BL\":\"690001234\",\"BM\":\"4413701234\",\"BN\":\"7123456\",\"BO\":\"71234567\",\"BQ\":\"3181234\",\"BR\":\"11961234567\",\"BS\":\"2423591234\",\"BT\":\"17123456\",\"BW\":\"71123456\",\"BY\":\"294911911\",\"BZ\":\"6221234\",\"CA\":\"5062345678\",\"CC\":\"412345678\",\"CD\":\"991234567\",\"CF\":\"70012345\",\"CG\":\"061234567\",\"CH\":\"781234567\",\"CI\":\"0123456789\",\"CK\":\"71234\",\"CL\":\"221234567\",\"CM\":\"671234567\",\"CN\":\"13123456789\",\"CO\":\"3211234567\",\"CR\":\"83123456\",\"CU\":\"51234567\",\"CV\":\"9911234\",\"CW\":\"95181234\",\"CX\":\"412345678\",\"CY\":\"96123456\",\"CZ\":\"601123456\",\"DE\":\"15123456789\",\"DJ\":\"77831001\",\"DK\":\"34412345\",\"DM\":\"7672251234\",\"DO\":\"8092345678\",\"DZ\":\"551234567\",\"EC\":\"991234567\",\"EE\":\"51234567\",\"EG\":\"1001234567\",\"EH\":\"650123456\",\"ER\":\"7123456\",\"ES\":\"612345678\",\"ET\":\"911234567\",\"FI\":\"412345678\",\"FJ\":\"7012345\",\"FK\":\"51234\",\"FM\":\"3501234\",\"FO\":\"211234\",\"FR\":\"612345678\",\"GA\":\"06031234\",\"GB\":\"7400123456\",\"GD\":\"4734031234\",\"GE\":\"555123456\",\"GF\":\"694201234\",\"GG\":\"7781123456\",\"GH\":\"231234567\",\"GI\":\"57123456\",\"GL\":\"221234\",\"GM\":\"3012345\",\"GN\":\"601123456\",\"GP\":\"690001234\",\"GQ\":\"222123456\",\"GR\":\"6912345678\",\"GT\":\"51234567\",\"GU\":\"6713001234\",\"GW\":\"955012345\",\"GY\":\"6091234\",\"HK\":\"51234567\",\"HN\":\"91234567\",\"HR\":\"921234567\",\"HT\":\"34101234\",\"HU\":\"201234567\",\"ID\":\"812345678\",\"IE\":\"850123456\",\"IL\":\"502345678\",\"IM\":\"7924123456\",\"IN\":\"8123456789\",\"IO\":\"3801234\",\"IQ\":\"7912345678\",\"IR\":\"9123456789\",\"IS\":\"6111234\",\"IT\":\"3123456789\",\"JE\":\"7797712345\",\"JM\":\"8762101234\",\"JO\":\"790123456\",\"JP\":\"9012345678\",\"KE\":\"712123456\",\"KG\":\"700123456\",\"KH\":\"91234567\",\"KI\":\"72001234\",\"KM\":\"3212345\",\"KN\":\"8697652917\",\"KP\":\"1921234567\",\"KR\":\"1020000000\",\"KW\":\"50012345\",\"KY\":\"3453231234\",\"KZ\":\"7710009998\",\"LA\":\"2023123456\",\"LB\":\"71123456\",\"LC\":\"7582845678\",\"LI\":\"660234567\",\"LK\":\"712345678\",\"LR\":\"770123456\",\"LS\":\"50123456\",\"LT\":\"61234567\",\"LU\":\"628123456\",\"LV\":\"21234567\",\"LY\":\"912345678\",\"MA\":\"650123456\",\"MC\":\"612345678\",\"MD\":\"62112345\",\"ME\":\"67622901\",\"MF\":\"690001234\",\"MG\":\"321234567\",\"MH\":\"2351234\",\"MK\":\"72345678\",\"ML\":\"65012345\",\"MM\":\"92123456\",\"MN\":\"88123456\",\"MO\":\"66123456\",\"MP\":\"6702345678\",\"MQ\":\"696201234\",\"MR\":\"22123456\",\"MS\":\"6644923456\",\"MT\":\"96961234\",\"MU\":\"52512345\",\"MV\":\"7712345\",\"MW\":\"991234567\",\"MX\":\"2221234567\",\"MY\":\"123456789\",\"MZ\":\"821234567\",\"NA\":\"811234567\",\"NC\":\"751234\",\"NE\":\"93123456\",\"NF\":\"381234\",\"NG\":\"8021234567\",\"NI\":\"81234567\",\"NL\":\"612345678\",\"NO\":\"40612345\",\"NP\":\"9841234567\",\"NR\":\"5551234\",\"NU\":\"8884012\",\"NZ\":\"211234567\",\"OM\":\"92123456\",\"PA\":\"61234567\",\"PE\":\"912345678\",\"PF\":\"87123456\",\"PG\":\"70123456\",\"PH\":\"9051234567\",\"PK\":\"3012345678\",\"PL\":\"512345678\",\"PM\":\"551234\",\"PR\":\"7872345678\",\"PS\":\"599123456\",\"PT\":\"912345678\",\"PW\":\"6201234\",\"PY\":\"961456789\",\"QA\":\"33123456\",\"RE\":\"692123456\",\"RO\":\"712034567\",\"RS\":\"601234567\",\"RU\":\"9123456789\",\"RW\":\"720123456\",\"SA\":\"512345678\",\"SB\":\"7421234\",\"SC\":\"2510123\",\"SD\":\"911231234\",\"SE\":\"701234567\",\"SG\":\"81234567\",\"SH\":\"51234\",\"SI\":\"31234567\",\"SJ\":\"41234567\",\"SK\":\"912123456\",\"SL\":\"25123456\",\"SM\":\"66661212\",\"SN\":\"701234567\",\"SO\":\"71123456\",\"SR\":\"7412345\",\"SS\":\"977123456\",\"ST\":\"9812345\",\"SV\":\"70123456\",\"SX\":\"7215205678\",\"SY\":\"944567890\",\"SZ\":\"76123456\",\"TA\":\"8999\",\"TC\":\"6492311234\",\"TD\":\"63012345\",\"TG\":\"90112345\",\"TH\":\"812345678\",\"TJ\":\"917123456\",\"TK\":\"7290\",\"TL\":\"77212345\",\"TM\":\"66123456\",\"TN\":\"20123456\",\"TO\":\"7715123\",\"TR\":\"5012345678\",\"TT\":\"8682911234\",\"TV\":\"901234\",\"TW\":\"912345678\",\"TZ\":\"621234567\",\"UA\":\"501234567\",\"UG\":\"712345678\",\"US\":\"2015550123\",\"UY\":\"94231234\",\"UZ\":\"912345678\",\"VA\":\"3123456789\",\"VC\":\"7844301234\",\"VE\":\"4121234567\",\"VG\":\"2843001234\",\"VI\":\"3406421234\",\"VN\":\"912345678\",\"VU\":\"5912345\",\"WF\":\"821234\",\"WS\":\"7212345\",\"XK\":\"43201234\",\"YE\":\"712345678\",\"YT\":\"639012345\",\"ZA\":\"711234567\",\"ZM\":\"955123456\",\"ZW\":\"712345678\"}","import normalizeArguments from './normalizeArguments.js'\r\nimport parsePhoneNumber from './parsePhoneNumber_.js'\r\n\r\nexport default function isPossiblePhoneNumber() {\r\n\tlet { text, options, metadata } = normalizeArguments(arguments)\r\n\toptions = {\r\n\t\t...options,\r\n\t\textract: false\r\n\t}\r\n\tconst phoneNumber = parsePhoneNumber(text, options, metadata)\r\n\treturn phoneNumber && phoneNumber.isPossible() || false\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getCountryCallingCode as _getCountryCallingCode } from '../../core/index.js'\r\n\r\nexport function getCountryCallingCode() {\r\n\treturn withMetadataArgument(_getCountryCallingCode, arguments)\r\n}","// This \"state\" object simply holds the state of the \"AsYouType\" parser:\r\n//\r\n// * `country?: string`\r\n// * `callingCode?: string`\r\n// * `digits: string`\r\n// * `international: boolean`\r\n// * `missingPlus: boolean`\r\n// * `IDDPrefix?: string`\r\n// * `carrierCode?: string`\r\n// * `nationalPrefix?: string`\r\n// * `nationalSignificantNumber?: string`\r\n// * `nationalSignificantNumberMatchesInput: boolean`\r\n// * `complexPrefixBeforeNationalSignificantNumber?: string`\r\n//\r\n// `state.country` and `state.callingCode` aren't required to be in sync.\r\n// For example, `state.country` could be `\"AR\"` and `state.callingCode` could be `undefined`.\r\n// So `state.country` and `state.callingCode` are totally independent.\r\n//\r\nexport default class AsYouTypeState {\r\n\tconstructor({ onCountryChange, onCallingCodeChange }) {\r\n\t\tthis.onCountryChange = onCountryChange\r\n\t\tthis.onCallingCodeChange = onCallingCodeChange\r\n\t}\r\n\r\n\treset({ country, callingCode }) {\r\n\t\tthis.international = false\r\n\t\tthis.missingPlus = false\r\n\t\tthis.IDDPrefix = undefined\r\n\t\tthis.callingCode = undefined\r\n\t\tthis.digits = ''\r\n\t\tthis.resetNationalSignificantNumber()\r\n\t\tthis.initCountryAndCallingCode(country, callingCode)\r\n\t}\r\n\r\n\tresetNationalSignificantNumber() {\r\n\t\tthis.nationalSignificantNumber = this.getNationalDigits()\r\n\t\tthis.nationalSignificantNumberMatchesInput = true\r\n\t\tthis.nationalPrefix = undefined\r\n\t\tthis.carrierCode = undefined\r\n\t\tthis.complexPrefixBeforeNationalSignificantNumber = undefined\r\n\t}\r\n\r\n\tupdate(properties) {\r\n\t\tfor (const key of Object.keys(properties)) {\r\n\t\t\tthis[key] = properties[key]\r\n\t\t}\r\n\t}\r\n\r\n\tinitCountryAndCallingCode(country, callingCode) {\r\n\t\tthis.setCountry(country)\r\n\t\tthis.setCallingCode(callingCode)\r\n\t}\r\n\r\n\tsetCountry(country) {\r\n\t\tthis.country = country\r\n\t\tthis.onCountryChange(country)\r\n\t}\r\n\r\n\tsetCallingCode(callingCode) {\r\n\t\tthis.callingCode = callingCode\r\n\t\tthis.onCallingCodeChange(callingCode, this.country)\r\n\t}\r\n\r\n\tstartInternationalNumber(country, callingCode) {\r\n\t\t// Prepend the `+` to parsed input.\r\n\t\tthis.international = true\r\n\t\t// If a default country was set then reset it\r\n\t\t// because an explicitly international phone\r\n\t\t// number is being entered.\r\n\t\tthis.initCountryAndCallingCode(country, callingCode)\r\n\t}\r\n\r\n\tappendDigits(nextDigits) {\r\n\t\tthis.digits += nextDigits\r\n\t}\r\n\r\n\tappendNationalSignificantNumberDigits(nextDigits) {\r\n\t\tthis.nationalSignificantNumber += nextDigits\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the part of `this.digits` that corresponds to the national number.\r\n\t * Basically, all digits that have been input by the user, except for the\r\n\t * international prefix and the country calling code part\r\n\t * (if the number is an international one).\r\n\t * @return {string}\r\n\t */\r\n\tgetNationalDigits() {\r\n\t\tif (this.international) {\r\n\t\t\treturn this.digits.slice(\r\n\t\t\t\t(this.IDDPrefix ? this.IDDPrefix.length : 0) +\r\n\t\t\t\t(this.callingCode ? this.callingCode.length : 0)\r\n\t\t\t)\r\n\t\t}\r\n\t\treturn this.digits\r\n\t}\r\n\r\n\tgetDigitsWithoutInternationalPrefix() {\r\n\t\tif (this.international) {\r\n\t\t\tif (this.IDDPrefix) {\r\n\t\t\t\treturn this.digits.slice(this.IDDPrefix.length)\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.digits\r\n\t}\r\n}","// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`.\r\nexport const DIGIT_PLACEHOLDER = 'x' // '\\u2008' (punctuation space)\r\nconst DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER)\r\n\r\n// Counts all occurences of a symbol in a string.\r\n// Unicode-unsafe (because using `.split()`).\r\nexport function countOccurences(symbol, string) {\r\n\tlet count = 0\r\n\t// Using `.split('')` to iterate through a string here\r\n\t// to avoid requiring `Symbol.iterator` polyfill.\r\n\t// `.split('')` is generally not safe for Unicode,\r\n\t// but in this particular case for counting brackets it is safe.\r\n\t// for (const character of string)\r\n\tfor (const character of string.split('')) {\r\n\t\tif (character === symbol) {\r\n\t\t\tcount++\r\n\t\t}\r\n\t}\r\n\treturn count\r\n}\r\n\r\n// Repeats a string (or a symbol) N times.\r\n// http://stackoverflow.com/questions/202605/repeat-string-javascript\r\nexport function repeat(string, times) {\r\n\tif (times < 1) {\r\n\t\treturn ''\r\n\t}\r\n\tlet result = ''\r\n\twhile (times > 1) {\r\n\t\tif (times & 1) {\r\n\t\t\tresult += string\r\n\t\t}\r\n\t\ttimes >>= 1\r\n\t\tstring += string\r\n\t}\r\n\treturn result + string\r\n}\r\n\r\nexport function cutAndStripNonPairedParens(string, cutBeforeIndex) {\r\n\tif (string[cutBeforeIndex] === ')') {\r\n\t\tcutBeforeIndex++\r\n\t}\r\n\treturn stripNonPairedParens(string.slice(0, cutBeforeIndex))\r\n}\r\n\r\nexport function closeNonPairedParens(template, cut_before) {\r\n\tconst retained_template = template.slice(0, cut_before)\r\n\tconst opening_braces = countOccurences('(', retained_template)\r\n\tconst closing_braces = countOccurences(')', retained_template)\r\n\tlet dangling_braces = opening_braces - closing_braces\r\n\twhile (dangling_braces > 0 && cut_before < template.length) {\r\n\t\tif (template[cut_before] === ')') {\r\n\t\t\tdangling_braces--\r\n\t\t}\r\n\t\tcut_before++\r\n\t}\r\n\treturn template.slice(0, cut_before)\r\n}\r\n\r\nexport function stripNonPairedParens(string) {\r\n\tconst dangling_braces =[]\r\n\tlet i = 0\r\n\twhile (i < string.length) {\r\n\t\tif (string[i] === '(') {\r\n\t\t\tdangling_braces.push(i)\r\n\t\t}\r\n\t\telse if (string[i] === ')') {\r\n\t\t\tdangling_braces.pop()\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\tlet start = 0\r\n\tlet cleared_string = ''\r\n\tdangling_braces.push(string.length)\r\n\tfor (const index of dangling_braces) {\r\n\t\tcleared_string += string.slice(start, index)\r\n\t\tstart = index + 1\r\n\t}\r\n\treturn cleared_string\r\n}\r\n\r\nexport function populateTemplateWithDigits(template, position, digits) {\r\n\t// Using `.split('')` to iterate through a string here\r\n\t// to avoid requiring `Symbol.iterator` polyfill.\r\n\t// `.split('')` is generally not safe for Unicode,\r\n\t// but in this particular case for `digits` it is safe.\r\n\t// for (const digit of digits)\r\n\tfor (const digit of digits.split('')) {\r\n\t\t// If there is room for more digits in current `template`,\r\n\t\t// then set the next digit in the `template`,\r\n\t\t// and return the formatted digits so far.\r\n\t\t// If more digits are entered than the current format could handle.\r\n\t\tif (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tposition = template.search(DIGIT_PLACEHOLDER_MATCHER)\r\n\t\ttemplate = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit)\r\n\t}\r\n\treturn [template, position]\r\n}","import checkNumberLength from './helpers/checkNumberLength.js'\r\nimport parseDigits from './helpers/parseDigits.js'\r\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'\r\n\r\nexport default function formatCompleteNumber(state, format, {\r\n\tmetadata,\r\n\tshouldTryNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\tconst matcher = new RegExp(`^(?:${format.pattern()})$`)\r\n\tif (matcher.test(state.nationalSignificantNumber)) {\r\n\t\treturn formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(\r\n\t\t\tstate,\r\n\t\t\tformat,\r\n\t\t\t{\r\n\t\t\t\tmetadata,\r\n\t\t\t\tshouldTryNationalPrefixFormattingRule,\r\n\t\t\t\tgetSeparatorAfterNationalPrefix\r\n\t\t\t}\r\n\t\t)\r\n\t}\r\n}\r\n\r\nexport function canFormatCompleteNumber(nationalSignificantNumber, metadata) {\r\n\treturn checkNumberLength(nationalSignificantNumber, metadata) === 'IS_POSSIBLE'\r\n}\r\n\r\nfunction formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, {\r\n\tmetadata,\r\n\tshouldTryNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\t// `format` has already been checked for `nationalPrefix` requirement.\r\n\r\n\tconst {\r\n\t\tnationalSignificantNumber,\r\n\t\tinternational,\r\n\t\tnationalPrefix,\r\n\t\tcarrierCode\r\n\t} = state\r\n\r\n\t// Format the number with using `national_prefix_formatting_rule`.\r\n\t// If the resulting formatted number is a valid formatted number, then return it.\r\n\t//\r\n\t// Google's AsYouType formatter is different in a way that it doesn't try\r\n\t// to format using the \"national prefix formatting rule\", and instead it\r\n\t// simply prepends a national prefix followed by a \" \" character.\r\n\t// This code does that too, but as a fallback.\r\n\t// The reason is that \"national prefix formatting rule\" may use parentheses,\r\n\t// which wouldn't be included has it used the simpler Google's way.\r\n\t//\r\n\tif (shouldTryNationalPrefixFormattingRule(format)) {\r\n\t\tconst formattedNumber = formatNationalNumber(state, format, {\r\n\t\t\tuseNationalPrefixFormattingRule: true,\r\n\t\t\tgetSeparatorAfterNationalPrefix,\r\n\t\t\tmetadata\r\n\t\t})\r\n\t\tif (formattedNumber) {\r\n\t\t\treturn formattedNumber\r\n\t\t}\r\n\t}\r\n\r\n\t// Format the number without using `national_prefix_formatting_rule`.\r\n\treturn formatNationalNumber(state, format, {\r\n\t\tuseNationalPrefixFormattingRule: false,\r\n\t\tgetSeparatorAfterNationalPrefix,\r\n\t\tmetadata\r\n\t})\r\n}\r\n\r\nfunction formatNationalNumber(state, format, {\r\n\tmetadata,\r\n\tuseNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\tlet formattedNationalNumber = formatNationalNumberUsingFormat(\r\n\t\tstate.nationalSignificantNumber,\r\n\t\tformat,\r\n\t\t{\r\n\t\t\tcarrierCode: state.carrierCode,\r\n\t\t\tuseInternationalFormat: state.international,\r\n\t\t\twithNationalPrefix: useNationalPrefixFormattingRule,\r\n\t\t\tmetadata\r\n\t\t}\r\n\t)\r\n\tif (!useNationalPrefixFormattingRule) {\r\n\t\tif (state.nationalPrefix) {\r\n\t\t\t// If a national prefix was extracted, then just prepend it,\r\n\t\t\t// followed by a \" \" character.\r\n\t\t\tformattedNationalNumber = state.nationalPrefix +\r\n\t\t\t\tgetSeparatorAfterNationalPrefix(format) +\r\n\t\t\t\tformattedNationalNumber\r\n\t\t} else if (state.complexPrefixBeforeNationalSignificantNumber) {\r\n\t\t\tformattedNationalNumber = state.complexPrefixBeforeNationalSignificantNumber +\r\n\t\t\t\t' ' +\r\n\t\t\t\tformattedNationalNumber\r\n\t\t}\r\n\t}\r\n\tif (isValidFormattedNationalNumber(formattedNationalNumber, state)) {\r\n\t\treturn formattedNationalNumber\r\n\t}\r\n}\r\n\r\n// Check that the formatted phone number contains exactly\r\n// the same digits that have been input by the user.\r\n// For example, when \"0111523456789\" is input for `AR` country,\r\n// the extracted `this.nationalSignificantNumber` is \"91123456789\",\r\n// which means that the national part of `this.digits` isn't simply equal to\r\n// `this.nationalPrefix` + `this.nationalSignificantNumber`.\r\n//\r\n// Also, a `format` can add extra digits to the `this.nationalSignificantNumber`\r\n// being formatted via `metadata[country].national_prefix_transform_rule`.\r\n// For example, for `VI` country, it prepends `340` to the national number,\r\n// and if this check hasn't been implemented, then there would be a bug\r\n// when `340` \"area coude\" is \"duplicated\" during input for `VI` country:\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/318\r\n//\r\n// So, all these \"gotchas\" are filtered out.\r\n//\r\n// In the original Google's code, the comments say:\r\n// \"Check that we didn't remove nor add any extra digits when we matched\r\n// this formatting pattern. This usually happens after we entered the last\r\n// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when\r\n// formatted but AYTF should retain all the number entered and not change\r\n// in order to match a format (of same leading digits and length) display\r\n// in that way.\"\r\n// \"If it's the same (i.e entered number and format is same), then it's\r\n// safe to return this in formatted number as nothing is lost / added.\"\r\n// Otherwise, don't use this format.\r\n// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5\r\n// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b\r\n//\r\nfunction isValidFormattedNationalNumber(formattedNationalNumber, state) {\r\n\treturn parseDigits(formattedNationalNumber) === state.getNationalDigits()\r\n}","export default class PatternParser {\r\n\tparse(pattern) {\r\n\t\tthis.context = [{\r\n\t\t\tor: true,\r\n\t\t\tinstructions: []\r\n\t\t}]\r\n\r\n\t\tthis.parsePattern(pattern)\r\n\r\n\t\tif (this.context.length !== 1) {\r\n\t\t\tthrow new Error('Non-finalized contexts left when pattern parse ended')\r\n\t\t}\r\n\r\n\t\tconst { branches, instructions } = this.context[0]\r\n\r\n\t\tif (branches) {\r\n\t\t\treturn {\r\n\t\t\t\top: '|',\r\n\t\t\t\targs: branches.concat([\r\n\t\t\t\t\texpandSingleElementArray(instructions)\r\n\t\t\t\t])\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* istanbul ignore if */\r\n\t\tif (instructions.length === 0) {\r\n\t\t\tthrow new Error('Pattern is required')\r\n\t\t}\r\n\r\n\t\tif (instructions.length === 1) {\r\n\t\t\treturn instructions[0]\r\n\t\t}\r\n\r\n\t\treturn instructions\r\n\t}\r\n\r\n\tstartContext(context) {\r\n\t\tthis.context.push(context)\r\n\t}\r\n\r\n\tendContext() {\r\n\t\tthis.context.pop()\r\n\t}\r\n\r\n\tgetContext() {\r\n\t\treturn this.context[this.context.length - 1]\r\n\t}\r\n\r\n\tparsePattern(pattern) {\r\n\t\tif (!pattern) {\r\n\t\t\tthrow new Error('Pattern is required')\r\n\t\t}\r\n\r\n\t\tconst match = pattern.match(OPERATOR)\r\n\t\tif (!match) {\r\n\t\t\tif (ILLEGAL_CHARACTER_REGEXP.test(pattern)) {\r\n\t\t\t\tthrow new Error(`Illegal characters found in a pattern: ${pattern}`)\r\n\t\t\t}\r\n\t\t\tthis.getContext().instructions = this.getContext().instructions.concat(\r\n\t\t\t\tpattern.split('')\r\n\t\t\t)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst operator = match[1]\r\n\t\tconst before = pattern.slice(0, match.index)\r\n\t\tconst rightPart = pattern.slice(match.index + operator.length)\r\n\r\n\t\tswitch (operator) {\r\n\t\t\tcase '(?:':\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tthis.startContext({\r\n\t\t\t\t\tor: true,\r\n\t\t\t\t\tinstructions: [],\r\n\t\t\t\t\tbranches: []\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase ')':\r\n\t\t\t\tif (!this.getContext().or) {\r\n\t\t\t\t\tthrow new Error('\")\" operator must be preceded by \"(?:\" operator')\r\n\t\t\t\t}\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tif (this.getContext().instructions.length === 0) {\r\n\t\t\t\t\tthrow new Error('No instructions found after \"|\" operator in an \"or\" group')\r\n\t\t\t\t}\r\n\t\t\t\tconst { branches } = this.getContext()\r\n\t\t\t\tbranches.push(\r\n\t\t\t\t\texpandSingleElementArray(\r\n\t\t\t\t\t\tthis.getContext().instructions\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\tthis.endContext()\r\n\t\t\t\tthis.getContext().instructions.push({\r\n\t\t\t\t\top: '|',\r\n\t\t\t\t\targs: branches\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase '|':\r\n\t\t\t\tif (!this.getContext().or) {\r\n\t\t\t\t\tthrow new Error('\"|\" operator can only be used inside \"or\" groups')\r\n\t\t\t\t}\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\t// The top-level is an implicit \"or\" group, if required.\r\n\t\t\t\tif (!this.getContext().branches) {\r\n\t\t\t\t\t// `branches` are not defined only for the root implicit \"or\" operator.\r\n\t\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\t\tif (this.context.length === 1) {\r\n\t\t\t\t\t\tthis.getContext().branches = []\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow new Error('\"branches\" not found in an \"or\" group context')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.getContext().branches.push(\r\n\t\t\t\t\texpandSingleElementArray(\r\n\t\t\t\t\t\tthis.getContext().instructions\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\tthis.getContext().instructions = []\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase '[':\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tthis.startContext({\r\n\t\t\t\t\toneOfSet: true\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase ']':\r\n\t\t\t\tif (!this.getContext().oneOfSet) {\r\n\t\t\t\t\tthrow new Error('\"]\" operator must be preceded by \"[\" operator')\r\n\t\t\t\t}\r\n\t\t\t\tthis.endContext()\r\n\t\t\t\tthis.getContext().instructions.push({\r\n\t\t\t\t\top: '[]',\r\n\t\t\t\t\targs: parseOneOfSet(before)\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\t/* istanbul ignore next */\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(`Unknown operator: ${operator}`)\r\n\t\t}\r\n\r\n\t\tif (rightPart) {\r\n\t\t\tthis.parsePattern(rightPart)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction parseOneOfSet(pattern) {\r\n\tconst values = []\r\n\tlet i = 0\r\n\twhile (i < pattern.length) {\r\n\t\tif (pattern[i] === '-') {\r\n\t\t\tif (i === 0 || i === pattern.length - 1) {\r\n\t\t\t\tthrow new Error(`Couldn't parse a one-of set pattern: ${pattern}`)\r\n\t\t\t}\r\n\t\t\tconst prevValue = pattern[i - 1].charCodeAt(0) + 1\r\n\t\t\tconst nextValue = pattern[i + 1].charCodeAt(0) - 1\r\n\t\t\tlet value = prevValue\r\n\t\t\twhile (value <= nextValue) {\r\n\t\t\t\tvalues.push(String.fromCharCode(value))\r\n\t\t\t\tvalue++\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvalues.push(pattern[i])\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\treturn values\r\n}\r\n\r\nconst ILLEGAL_CHARACTER_REGEXP = /[\\(\\)\\[\\]\\?\\:\\|]/\r\n\r\nconst OPERATOR = new RegExp(\r\n\t// any of:\r\n\t'(' +\r\n\t\t// or operator\r\n\t\t'\\\\|' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// or group start\r\n\t\t'\\\\(\\\\?\\\\:' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// or group end\r\n\t\t'\\\\)' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// one-of set start\r\n\t\t'\\\\[' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// one-of set end\r\n\t\t'\\\\]' +\r\n\t')'\r\n)\r\n\r\nfunction expandSingleElementArray(array) {\r\n\tif (array.length === 1) {\r\n\t\treturn array[0]\r\n\t}\r\n\treturn array\r\n}","import PatternParser from './AsYouTypeFormatter.PatternParser.js'\r\n\r\nexport default class PatternMatcher {\r\n\tconstructor(pattern) {\r\n\t\tthis.matchTree = new PatternParser().parse(pattern)\r\n\t}\r\n\r\n\tmatch(string, { allowOverflow } = {}) {\r\n\t\tif (!string) {\r\n\t\t\tthrow new Error('String is required')\r\n\t\t}\r\n\t\tconst result = match(string.split(''), this.matchTree, true)\r\n\t\tif (result && result.match) {\r\n\t\t\tdelete result.matchedChars\r\n\t\t}\r\n\t\tif (result && result.overflow) {\r\n\t\t\tif (!allowOverflow) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result\r\n\t}\r\n}\r\n\r\n/**\r\n * Matches `characters` against a pattern compiled into a `tree`.\r\n * @param {string[]} characters\r\n * @param {Tree} tree — A pattern compiled into a `tree`. See the `*.d.ts` file for the description of the `tree` structure.\r\n * @param {boolean} last — Whether it's the last (rightmost) subtree on its level of the match tree.\r\n * @return {object} See the `*.d.ts` file for the description of the result object.\r\n */\r\nfunction match(characters, tree, last) {\r\n\t// If `tree` is a string, then `tree` is a single character.\r\n\t// That's because when a pattern is parsed, multi-character-string parts\r\n\t// of a pattern are compiled into arrays of single characters.\r\n\t// I still wrote this piece of code for a \"general\" hypothetical case\r\n\t// when `tree` could be a string of several characters, even though\r\n\t// such case is not possible with the current implementation.\r\n\tif (typeof tree === 'string') {\r\n\t\tconst characterString = characters.join('')\r\n\t\tif (tree.indexOf(characterString) === 0) {\r\n\t\t\t// `tree` is always a single character.\r\n\t\t\t// If `tree.indexOf(characterString) === 0`\r\n\t\t\t// then `characters.length === tree.length`.\r\n\t\t\t/* istanbul ignore else */\r\n\t\t\tif (characters.length === tree.length) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tmatch: true,\r\n\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// `tree` is always a single character.\r\n\t\t\t// If `tree.indexOf(characterString) === 0`\r\n\t\t\t// then `characters.length === tree.length`.\r\n\t\t\t/* istanbul ignore next */\r\n\t\t\treturn {\r\n\t\t\t\tpartialMatch: true,\r\n\t\t\t\t// matchedChars: characters\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (characterString.indexOf(tree) === 0) {\r\n\t\t\tif (last) {\r\n\t\t\t\t// The `else` path is not possible because `tree` is always a single character.\r\n\t\t\t\t// The `else` case for `characters.length > tree.length` would be\r\n\t\t\t\t// `characters.length <= tree.length` which means `characters.length <= 1`.\r\n\t\t\t\t// `characters` array can't be empty, so that means `characters === [tree]`,\r\n\t\t\t\t// which would also mean `tree.indexOf(characterString) === 0` and that'd mean\r\n\t\t\t\t// that the `if (tree.indexOf(characterString) === 0)` condition before this\r\n\t\t\t\t// `if` condition would be entered, and returned from there, not reaching this code.\r\n\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\tif (characters.length > tree.length) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\toverflow: true\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tmatch: true,\r\n\t\t\t\tmatchedChars: characters.slice(0, tree.length)\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn\r\n\t}\r\n\r\n\tif (Array.isArray(tree)) {\r\n\t\tlet restCharacters = characters.slice()\r\n\t\tlet i = 0\r\n\t\twhile (i < tree.length) {\r\n\t\t\tconst subtree = tree[i]\r\n\t\t\tconst result = match(restCharacters, subtree, last && (i === tree.length - 1))\r\n\t\t\tif (!result) {\r\n\t\t\t\treturn\r\n\t\t\t} else if (result.overflow) {\r\n\t\t\t\treturn result\r\n\t\t\t} else if (result.match) {\r\n\t\t\t\t// Continue with the next subtree with the rest of the characters.\r\n\t\t\t\trestCharacters = restCharacters.slice(result.matchedChars.length)\r\n\t\t\t\tif (restCharacters.length === 0) {\r\n\t\t\t\t\tif (i === tree.length - 1) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t\t\t// matchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\tif (result.partialMatch) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t\t// matchedChars: characters\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow new Error(`Unsupported match result:\\n${JSON.stringify(result, null, 2)}`)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ti++\r\n\t\t}\r\n\t\t// If `last` then overflow has already been checked\r\n\t\t// by the last element of the `tree` array.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (last) {\r\n\t\t\treturn {\r\n\t\t\t\toverflow: true\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tmatch: true,\r\n\t\t\tmatchedChars: characters.slice(0, characters.length - restCharacters.length)\r\n\t\t}\r\n\t}\r\n\r\n\tswitch (tree.op) {\r\n\t\tcase '|':\r\n\t\t\tlet partialMatch\r\n\t\t\tfor (const branch of tree.args) {\r\n\t\t\t\tconst result = match(characters, branch, last)\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\tif (result.overflow) {\r\n\t\t\t\t\t\treturn result\r\n\t\t\t\t\t} else if (result.match) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: result.matchedChars\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\t\t\tif (result.partialMatch) {\r\n\t\t\t\t\t\t\tpartialMatch = true\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthrow new Error(`Unsupported match result:\\n${JSON.stringify(result, null, 2)}`)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (partialMatch) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t// matchedChars: ...\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Not even a partial match.\r\n\t\t\treturn\r\n\r\n\t\tcase '[]':\r\n\t\t\tfor (const char of tree.args) {\r\n\t\t\t\tif (characters[0] === char) {\r\n\t\t\t\t\tif (characters.length === 1) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (last) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\toverflow: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\tmatchedChars: [char]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// No character matches.\r\n\t\t\treturn\r\n\r\n\t\t/* istanbul ignore next */\r\n\t\tdefault:\r\n\t\t\tthrow new Error(`Unsupported instruction tree: ${tree}`)\r\n\t}\r\n}","import {\r\n\tDIGIT_PLACEHOLDER,\r\n\tcountOccurences,\r\n\trepeat,\r\n\tcutAndStripNonPairedParens,\r\n\tcloseNonPairedParens,\r\n\tstripNonPairedParens,\r\n\tpopulateTemplateWithDigits\r\n} from './AsYouTypeFormatter.util.js'\r\n\r\nimport formatCompleteNumber, {\r\n\tcanFormatCompleteNumber\r\n} from './AsYouTypeFormatter.complete.js'\r\n\r\nimport PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js'\r\n\r\nimport parseDigits from './helpers/parseDigits.js'\r\nexport { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.util.js'\r\nimport { FIRST_GROUP_PATTERN } from './helpers/formatNationalNumberUsingFormat.js'\r\nimport { VALID_PUNCTUATION } from './constants.js'\r\nimport applyInternationalSeparatorStyle from './helpers/applyInternationalSeparatorStyle.js'\r\n\r\n// Used in phone number format template creation.\r\n// Could be any digit, I guess.\r\nconst DUMMY_DIGIT = '9'\r\n// I don't know why is it exactly `15`\r\nconst LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15\r\n// Create a phone number consisting only of the digit 9 that matches the\r\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\r\nconst LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH)\r\n\r\n// A set of characters that, if found in a national prefix formatting rules, are an indicator to\r\n// us that we should separate the national prefix from the number when formatting.\r\nconst NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/\r\n\r\n// Deprecated: Google has removed some formatting pattern related code from their repo.\r\n// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c\r\n// \"We no longer have numbers in formatting matching patterns, only \\d.\"\r\n// Because this library supports generating custom metadata\r\n// some users may still be using old metadata so the relevant\r\n// code seems to stay until some next major version update.\r\nconst SUPPORT_LEGACY_FORMATTING_PATTERNS = true\r\n\r\n// A pattern that is used to match character classes in regular expressions.\r\n// An example of a character class is \"[1-4]\".\r\nconst CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\\[([^\\[\\]])*\\]/g)\r\n\r\n// Any digit in a regular expression that actually denotes a digit. For\r\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\r\n// (8 and 0) are standalone digits, but the rest are not.\r\n// Two look-aheads are needed because the number following \\\\d could be a\r\n// two-digit number, since the phone number can be as long as 15 digits.\r\nconst CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\\d(?=[^,}][^,}])/g)\r\n\r\n// A regular expression that is used to determine if a `format` is\r\n// suitable to be used in the \"as you type formatter\".\r\n// A `format` is suitable when the resulting formatted number has\r\n// the same digits as the user has entered.\r\n//\r\n// In the simplest case, that would mean that the format\r\n// doesn't add any additional digits when formatting a number.\r\n// Google says that it also shouldn't add \"star\" (`*`) characters,\r\n// like it does in some Israeli formats.\r\n// Such basic format would only contain \"valid punctuation\"\r\n// and \"captured group\" identifiers ($1, $2, etc).\r\n//\r\n// An example of a format that adds additional digits:\r\n//\r\n// Country: `AR` (Argentina).\r\n// Format:\r\n// {\r\n// \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n// \"leading_digits_patterns\": [\"91\"],\r\n// \"national_prefix_formatting_rule\": \"0$1\",\r\n// \"format\": \"$2 15-$3-$4\",\r\n// \"international_format\": \"$1 $2 $3-$4\"\r\n// }\r\n//\r\n// In the format above, the `format` adds `15` to the digits when formatting a number.\r\n// A sidenote: this format actually is suitable because `national_prefix_for_parsing`\r\n// has previously removed `15` from a national number, so re-adding `15` in `format`\r\n// doesn't actually result in any extra digits added to user's input.\r\n// But verifying that would be a complex procedure, so the code chooses a simpler path:\r\n// it simply filters out all `format`s that contain anything but \"captured group\" ids.\r\n//\r\n// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's\r\n// `libphonenumber` code.\r\n//\r\nconst NON_ALTERING_FORMAT_REG_EXP = new RegExp(\r\n\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t// Google developers say:\r\n\t// \"We require that the first matching group is present in the\r\n\t// output pattern to ensure no data is lost while formatting.\"\r\n\t'\\\\$1' +\r\n\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t'(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)*' +\r\n\t'$'\r\n)\r\n\r\n// This is the minimum length of the leading digits of a phone number\r\n// to guarantee the first \"leading digits pattern\" for a phone number format\r\n// to be preemptive.\r\nconst MIN_LEADING_DIGITS_LENGTH = 3\r\n\r\nexport default class AsYouTypeFormatter {\r\n\tconstructor({\r\n\t\tstate,\r\n\t\tmetadata\r\n\t}) {\r\n\t\tthis.metadata = metadata\r\n\t\tthis.resetFormat()\r\n\t}\r\n\r\n\tresetFormat() {\r\n\t\tthis.chosenFormat = undefined\r\n\t\tthis.template = undefined\r\n\t\tthis.nationalNumberTemplate = undefined\r\n\t\tthis.populatedNationalNumberTemplate = undefined\r\n\t\tthis.populatedNationalNumberTemplatePosition = -1\r\n\t}\r\n\r\n\treset(numberingPlan, state) {\r\n\t\tthis.resetFormat()\r\n\t\tif (numberingPlan) {\r\n\t\t\tthis.isNANP = numberingPlan.callingCode() === '1'\r\n\t\t\tthis.matchingFormats = numberingPlan.formats()\r\n\t\t\tif (state.nationalSignificantNumber) {\r\n\t\t\t\tthis.narrowDownMatchingFormats(state)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.isNANP = undefined\r\n\t\t\tthis.matchingFormats = []\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Formats an updated phone number.\r\n\t * @param {string} nextDigits — Additional phone number digits.\r\n\t * @param {object} state — `AsYouType` state.\r\n\t * @return {[string]} Returns undefined if the updated phone number can't be formatted using any of the available formats.\r\n\t */\r\n\tformat(nextDigits, state) {\r\n\t\t// See if the phone number digits can be formatted as a complete phone number.\r\n\t\t// If not, use the results from `formatNationalNumberWithNextDigits()`,\r\n\t\t// which formats based on the chosen formatting pattern.\r\n\t\t//\r\n\t\t// Attempting to format complete phone number first is how it's done\r\n\t\t// in Google's `libphonenumber`, so this library just follows it.\r\n\t\t// Google's `libphonenumber` code doesn't explain in detail why does it\r\n\t\t// attempt to format digits as a complete phone number\r\n\t\t// instead of just going with a previoulsy (or newly) chosen `format`:\r\n\t\t//\r\n\t\t// \"Checks to see if there is an exact pattern match for these digits.\r\n\t\t// If so, we should use this instead of any other formatting template\r\n\t\t// whose leadingDigitsPattern also matches the input.\"\r\n\t\t//\r\n\t\tif (canFormatCompleteNumber(state.nationalSignificantNumber, this.metadata)) {\r\n\t\t\tfor (const format of this.matchingFormats) {\r\n\t\t\t\tconst formattedCompleteNumber = formatCompleteNumber(\r\n\t\t\t\t\tstate,\r\n\t\t\t\t\tformat,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmetadata: this.metadata,\r\n\t\t\t\t\t\tshouldTryNationalPrefixFormattingRule: (format) => this.shouldTryNationalPrefixFormattingRule(format, {\r\n\t\t\t\t\t\t\tinternational: state.international,\r\n\t\t\t\t\t\t\tnationalPrefix: state.nationalPrefix\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tgetSeparatorAfterNationalPrefix: (format) => this.getSeparatorAfterNationalPrefix(format)\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t\tif (formattedCompleteNumber) {\r\n\t\t\t\t\tthis.resetFormat()\r\n\t\t\t\t\tthis.chosenFormat = format\r\n\t\t\t\t\tthis.setNationalNumberTemplate(formattedCompleteNumber.replace(/\\d/g, DIGIT_PLACEHOLDER), state)\r\n\t\t\t\t\tthis.populatedNationalNumberTemplate = formattedCompleteNumber\r\n\t\t\t\t\t// With a new formatting template, the matched position\r\n\t\t\t\t\t// using the old template needs to be reset.\r\n\t\t\t\t\tthis.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(DIGIT_PLACEHOLDER)\r\n\t\t\t\t\treturn formattedCompleteNumber\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Format the digits as a partial (incomplete) phone number\r\n\t\t// using the previously chosen formatting pattern (or a newly chosen one).\r\n\t\treturn this.formatNationalNumberWithNextDigits(nextDigits, state)\r\n\t}\r\n\r\n\t// Formats the next phone number digits.\r\n\tformatNationalNumberWithNextDigits(nextDigits, state) {\r\n\t\tconst previouslyChosenFormat = this.chosenFormat\r\n\r\n\t\t// Choose a format from the list of matching ones.\r\n\t\tconst newlyChosenFormat = this.chooseFormat(state)\r\n\r\n\t\tif (newlyChosenFormat) {\r\n\t\t\tif (newlyChosenFormat === previouslyChosenFormat) {\r\n\t\t\t\t// If it can format the next (current) digits\r\n\t\t\t\t// using the previously chosen phone number format\r\n\t\t\t\t// then return the updated formatted number.\r\n\t\t\t\treturn this.formatNextNationalNumberDigits(nextDigits)\r\n\t\t\t} else {\r\n\t\t\t\t// If a more appropriate phone number format\r\n\t\t\t\t// has been chosen for these \"leading digits\",\r\n\t\t\t\t// then re-format the national phone number part\r\n\t\t\t\t// using the newly selected format.\r\n\t\t\t\treturn this.formatNextNationalNumberDigits(state.getNationalDigits())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tnarrowDownMatchingFormats({\r\n\t\tnationalSignificantNumber,\r\n\t\tnationalPrefix,\r\n\t\tinternational\r\n\t}) {\r\n\t\tconst leadingDigits = nationalSignificantNumber\r\n\r\n\t\t// \"leading digits\" pattern list starts with a\r\n\t\t// \"leading digits\" pattern fitting a maximum of 3 leading digits.\r\n\t\t// So, after a user inputs 3 digits of a national (significant) phone number\r\n\t\t// this national (significant) number can already be formatted.\r\n\t\t// The next \"leading digits\" pattern is for 4 leading digits max,\r\n\t\t// and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\r\n\r\n\t\t// This implementation is different from Google's\r\n\t\t// in that it searches for a fitting format\r\n\t\t// even if the user has entered less than\r\n\t\t// `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\r\n\t\t// Because some leading digit patterns already match for a single first digit.\r\n\t\tlet leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH\r\n\t\tif (leadingDigitsPatternIndex < 0) {\r\n\t\t\tleadingDigitsPatternIndex = 0\r\n\t\t}\r\n\r\n\t\tthis.matchingFormats = this.matchingFormats.filter(\r\n\t\t\tformat => this.formatSuits(format, international, nationalPrefix)\r\n\t\t\t\t&& this.formatMatches(format, leadingDigits, leadingDigitsPatternIndex)\r\n\t\t)\r\n\r\n\t\t// If there was a phone number format chosen\r\n\t\t// and it no longer holds given the new leading digits then reset it.\r\n\t\t// The test for this `if` condition is marked as:\r\n\t\t// \"Reset a chosen format when it no longer holds given the new leading digits\".\r\n\t\t// To construct a valid test case for this one can find a country\r\n\t\t// in `PhoneNumberMetadata.xml` yielding one format for 3 `<leadingDigits>`\r\n\t\t// and yielding another format for 4 `<leadingDigits>` (Australia in this case).\r\n\t\tif (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) {\r\n\t\t\tthis.resetFormat()\r\n\t\t}\r\n\t}\r\n\r\n\tformatSuits(format, international, nationalPrefix) {\r\n\t\t// When a prefix before a national (significant) number is\r\n\t\t// simply a national prefix, then it's parsed as `this.nationalPrefix`.\r\n\t\t// In more complex cases, a prefix before national (significant) number\r\n\t\t// could include a national prefix as well as some \"capturing groups\",\r\n\t\t// and in that case there's no info whether a national prefix has been parsed.\r\n\t\t// If national prefix is not used when formatting a phone number\r\n\t\t// using this format, but a national prefix has been entered by the user,\r\n\t\t// and was extracted, then discard such phone number format.\r\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\r\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184\r\n\t\tif (nationalPrefix &&\r\n\t\t\t!format.usesNationalPrefix() &&\r\n\t\t\t// !format.domesticCarrierCodeFormattingRule() &&\r\n\t\t\t!format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// If national prefix is mandatory for this phone number format\r\n\t\t// and there're no guarantees that a national prefix is present in user input\r\n\t\t// then discard this phone number format as not suitable.\r\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\r\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193\r\n\t\tif (!international &&\r\n\t\t\t!nationalPrefix &&\r\n\t\t\tformat.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn true\r\n\t}\r\n\r\n\tformatMatches(format, leadingDigits, leadingDigitsPatternIndex) {\r\n\t\tconst leadingDigitsPatternsCount = format.leadingDigitsPatterns().length\r\n\r\n\t\t// If this format is not restricted to a certain\r\n\t\t// leading digits pattern then it fits.\r\n\t\t// The test case could be found by searching for \"leadingDigitsPatternsCount === 0\".\r\n\t\tif (leadingDigitsPatternsCount === 0) {\r\n\t\t\treturn true\r\n\t\t}\r\n\r\n\t\t// Start narrowing down the list of possible formats based on the leading digits.\r\n\t\t// (only previously matched formats take part in the narrowing down process)\r\n\r\n\t\t// `leading_digits_patterns` start with 3 digits min\r\n\t\t// and then go up from there one digit at a time.\r\n\t\tleadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1)\r\n\t\tconst leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]\r\n\r\n\t\t// Google imposes a requirement on the leading digits\r\n\t\t// to be minimum 3 digits long in order to be eligible\r\n\t\t// for checking those with a leading digits pattern.\r\n\t\t//\r\n\t\t// Since `leading_digits_patterns` start with 3 digits min,\r\n\t\t// Google's original `libphonenumber` library only starts\r\n\t\t// excluding any non-matching formats only when the\r\n\t\t// national number entered so far is at least 3 digits long,\r\n\t\t// otherwise format matching would give false negatives.\r\n\t\t//\r\n\t\t// For example, when the digits entered so far are `2`\r\n\t\t// and the leading digits pattern is `21` –\r\n\t\t// it's quite obvious in this case that the format could be the one\r\n\t\t// but due to the absence of further digits it would give false negative.\r\n\t\t//\r\n\t\t// Also, `leading_digits_patterns` doesn't always correspond to a single\r\n\t\t// digits count. For example, `60|8` pattern would already match `8`\r\n\t\t// but the `60` part would require having at least two leading digits,\r\n\t\t// so the whole pattern would require inputting two digits first in order to\r\n\t\t// decide on whether it matches the input, even when the input is \"80\".\r\n\t\t//\r\n\t\t// This library — `libphonenumber-js` — allows filtering by `leading_digits_patterns`\r\n\t\t// even when there's only 1 or 2 digits of the national (significant) number.\r\n\t\t// To do that, it uses a non-strict pattern matcher written specifically for that.\r\n\t\t//\r\n\t\tif (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) {\r\n\t\t\t// Before leading digits < 3 matching was implemented:\r\n\t\t\t// return true\r\n\t\t\t//\r\n\t\t\t// After leading digits < 3 matching was implemented:\r\n\t\t\ttry {\r\n\t\t\t\treturn new PatternMatcher(leadingDigitsPattern).match(leadingDigits, { allowOverflow: true }) !== undefined\r\n\t\t\t} catch (error) /* istanbul ignore next */ {\r\n\t\t\t\t// There's a slight possibility that there could be some undiscovered bug\r\n\t\t\t\t// in the pattern matcher code. Since the \"leading digits < 3 matching\"\r\n\t\t\t\t// feature is not \"essential\" for operation, it can fall back to the old way\r\n\t\t\t\t// in case of any issues rather than halting the application's execution.\r\n\t\t\t\tconsole.error(error)\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are\r\n\t\t// available then use the usual regular expression matching.\r\n\t\t//\r\n\t\t// The whole pattern is wrapped in round brackets (`()`) because\r\n\t\t// the pattern can use \"or\" operator (`|`) at the top level of the pattern.\r\n\t\t//\r\n\t\treturn new RegExp(`^(${leadingDigitsPattern})`).test(leadingDigits)\r\n\t}\r\n\r\n\tgetFormatFormat(format, international) {\r\n\t\treturn international ? format.internationalFormat() : format.format()\r\n\t}\r\n\r\n\tchooseFormat(state) {\r\n\t\t// When there are multiple available formats, the formatter uses the first\r\n\t\t// format where a formatting template could be created.\r\n\t\t//\r\n\t\t// For some weird reason, `istanbul` says \"else path not taken\"\r\n\t\t// for the `for of` line below. Supposedly that means that\r\n\t\t// the loop doesn't ever go over the last element in the list.\r\n\t\t// That's true because there always is `this.chosenFormat`\r\n\t\t// when `this.matchingFormats` is non-empty.\r\n\t\t// And, for some weird reason, it doesn't think that the case\r\n\t\t// with empty `this.matchingFormats` qualifies for a valid \"else\" path.\r\n\t\t// So simply muting this `istanbul` warning.\r\n\t\t// It doesn't skip the contents of the `for of` loop,\r\n\t\t// it just skips the `for of` line.\r\n\t\t//\r\n\t\t/* istanbul ignore next */\r\n\t\tfor (const format of this.matchingFormats.slice()) {\r\n\t\t\t// If this format is currently being used\r\n\t\t\t// and is still suitable, then stick to it.\r\n\t\t\tif (this.chosenFormat === format) {\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\t// Sometimes, a formatting rule inserts additional digits in a phone number,\r\n\t\t\t// and \"as you type\" formatter can't do that: it should only use the digits\r\n\t\t\t// that the user has input.\r\n\t\t\t//\r\n\t\t\t// For example, in Argentina, there's a format for mobile phone numbers:\r\n\t\t\t//\r\n\t\t\t// {\r\n\t\t\t// \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n\t\t\t// \"leading_digits_patterns\": [\"91\"],\r\n\t\t\t// \"national_prefix_formatting_rule\": \"0$1\",\r\n\t\t\t// \"format\": \"$2 15-$3-$4\",\r\n\t\t\t// \"international_format\": \"$1 $2 $3-$4\"\r\n\t\t\t// }\r\n\t\t\t//\r\n\t\t\t// In that format, `international_format` is used instead of `format`\r\n\t\t\t// because `format` inserts `15` in the formatted number,\r\n\t\t\t// and `AsYouType` formatter should only use the digits\r\n\t\t\t// the user has actually input, without adding any extra digits.\r\n\t\t\t// In this case, it wouldn't make a difference, because the `15`\r\n\t\t\t// is first stripped when applying `national_prefix_for_parsing`\r\n\t\t\t// and then re-added when using `format`, so in reality it doesn't\r\n\t\t\t// add any new digits to the number, but to detect that, the code\r\n\t\t\t// would have to be more complex: it would have to try formatting\r\n\t\t\t// the digits using the format and then see if any digits have\r\n\t\t\t// actually been added or removed, and then, every time a new digit\r\n\t\t\t// is input, it should re-check whether the chosen format doesn't\r\n\t\t\t// alter the digits.\r\n\t\t\t//\r\n\t\t\t// Google's code doesn't go that far, and so does this library:\r\n\t\t\t// it simply requires that a `format` doesn't add any additonal\r\n\t\t\t// digits to user's input.\r\n\t\t\t//\r\n\t\t\t// Also, people in general should move from inputting phone numbers\r\n\t\t\t// in national format (possibly with national prefixes)\r\n\t\t\t// and use international phone number format instead:\r\n\t\t\t// it's a logical thing in the modern age of mobile phones,\r\n\t\t\t// globalization and the internet.\r\n\t\t\t//\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (!NON_ALTERING_FORMAT_REG_EXP.test(this.getFormatFormat(format, state.international))) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tif (!this.createTemplateForFormat(format, state)) {\r\n\t\t\t\t// Remove the format if it can't generate a template.\r\n\t\t\t\tthis.matchingFormats = this.matchingFormats.filter(_ => _ !== format)\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tthis.chosenFormat = format\r\n\t\t\tbreak\r\n\t\t}\r\n\t\tif (!this.chosenFormat) {\r\n\t\t\t// No format matches the national (significant) phone number.\r\n\t\t\tthis.resetFormat()\r\n\t\t}\r\n\t\treturn this.chosenFormat\r\n\t}\r\n\r\n\tcreateTemplateForFormat(format, state) {\r\n\t\t// The formatter doesn't format numbers when numberPattern contains '|', e.g.\r\n\t\t// (20|3)\\d{4}. In those cases we quickly return.\r\n\t\t// (Though there's no such format in current metadata)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Get formatting template for this phone number format\r\n\t\tconst template = this.getTemplateForFormat(format, state)\r\n\t\t// If the national number entered is too long\r\n\t\t// for any phone number format, then abort.\r\n\t\tif (template) {\r\n\t\t\tthis.setNationalNumberTemplate(template, state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\tgetSeparatorAfterNationalPrefix(format) {\r\n\t\t// `US` metadata doesn't have a `national_prefix_formatting_rule`,\r\n\t\t// so the `if` condition below doesn't apply to `US`,\r\n\t\t// but in reality there shoudl be a separator\r\n\t\t// between a national prefix and a national (significant) number.\r\n\t\t// So `US` national prefix separator is a \"special\" \"hardcoded\" case.\r\n\t\tif (this.isNANP) {\r\n\t\t\treturn ' '\r\n\t\t}\r\n\t\t// If a `format` has a `national_prefix_formatting_rule`\r\n\t\t// and that rule has a separator after a national prefix,\r\n\t\t// then it means that there should be a separator\r\n\t\t// between a national prefix and a national (significant) number.\r\n\t\tif (format &&\r\n\t\t\tformat.nationalPrefixFormattingRule() &&\r\n\t\t\tNATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) {\r\n\t\t\treturn ' '\r\n\t\t}\r\n\t\t// At this point, there seems to be no clear evidence that\r\n\t\t// there should be a separator between a national prefix\r\n\t\t// and a national (significant) number. So don't insert one.\r\n\t\treturn ''\r\n\t}\r\n\r\n\tgetInternationalPrefixBeforeCountryCallingCode({ IDDPrefix, missingPlus }, options) {\r\n\t\tif (IDDPrefix) {\r\n\t\t\treturn options && options.spacing === false ? IDDPrefix : IDDPrefix + ' '\r\n\t\t}\r\n\t\tif (missingPlus) {\r\n\t\t\treturn ''\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\r\n\tgetTemplate(state) {\r\n\t\tif (!this.template) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// `this.template` holds the template for a \"complete\" phone number.\r\n\t\t// The currently entered phone number is most likely not \"complete\",\r\n\t\t// so trim all non-populated digits.\r\n\t\tlet index = -1\r\n\t\tlet i = 0\r\n\t\tconst internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, { spacing: false }) : ''\r\n\t\twhile (i < internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) {\r\n\t\t\tindex = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1)\r\n\t\t\ti++\r\n\t\t}\r\n\t\treturn cutAndStripNonPairedParens(this.template, index + 1)\r\n\t}\r\n\r\n\tsetNationalNumberTemplate(template, state) {\r\n\t\tthis.nationalNumberTemplate = template\r\n\t\tthis.populatedNationalNumberTemplate = template\r\n\t\t// With a new formatting template, the matched position\r\n\t\t// using the old template needs to be reset.\r\n\t\tthis.populatedNationalNumberTemplatePosition = -1\r\n\t\t// For convenience, the public `.template` property\r\n\t\t// contains the whole international number\r\n\t\t// if the phone number being input is international:\r\n\t\t// 'x' for the '+' sign, 'x'es for the country phone code,\r\n\t\t// a spacebar and then the template for the formatted national number.\r\n\t\tif (state.international) {\r\n\t\t\tthis.template =\r\n\t\t\t\tthis.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER) +\r\n\t\t\t\trepeat(DIGIT_PLACEHOLDER, state.callingCode.length) +\r\n\t\t\t\t' ' +\r\n\t\t\t\ttemplate\r\n\t\t} else {\r\n\t\t\tthis.template = template\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Generates formatting template for a national phone number,\r\n\t * optionally containing a national prefix, for a format.\r\n\t * @param {Format} format\r\n\t * @param {string} nationalPrefix\r\n\t * @return {string}\r\n\t */\r\n\tgetTemplateForFormat(format, {\r\n\t\tnationalSignificantNumber,\r\n\t\tinternational,\r\n\t\tnationalPrefix,\r\n\t\tcomplexPrefixBeforeNationalSignificantNumber\r\n\t}) {\r\n\t\tlet pattern = format.pattern()\r\n\r\n\t\t/* istanbul ignore else */\r\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS) {\r\n\t\t\tpattern = pattern\r\n\t\t\t\t// Replace anything in the form of [..] with \\d\r\n\t\t\t\t.replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\\\d')\r\n\t\t\t\t// Replace any standalone digit (not the one in `{}`) with \\d\r\n\t\t\t\t.replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\\\d')\r\n\t\t}\r\n\r\n\t\t// Generate a dummy national number (consisting of `9`s)\r\n\t\t// that fits this format's `pattern`.\r\n\t\t//\r\n\t\t// This match will always succeed,\r\n\t\t// because the \"longest dummy phone number\"\r\n\t\t// has enough length to accomodate any possible\r\n\t\t// national phone number format pattern.\r\n\t\t//\r\n\t\tlet digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]\r\n\r\n\t\t// If the national number entered is too long\r\n\t\t// for any phone number format, then abort.\r\n\t\tif (nationalSignificantNumber.length > digits.length) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Get a formatting template which can be used to efficiently format\r\n\t\t// a partial number where digits are added one by one.\r\n\r\n\t\t// Below `strictPattern` is used for the\r\n\t\t// regular expression (with `^` and `$`).\r\n\t\t// This wasn't originally in Google's `libphonenumber`\r\n\t\t// and I guess they don't really need it\r\n\t\t// because they're not using \"templates\" to format phone numbers\r\n\t\t// but I added `strictPattern` after encountering\r\n\t\t// South Korean phone number formatting bug.\r\n\t\t//\r\n\t\t// Non-strict regular expression bug demonstration:\r\n\t\t//\r\n\t\t// this.nationalSignificantNumber : `111111111` (9 digits)\r\n\t\t//\r\n\t\t// pattern : (\\d{2})(\\d{3,4})(\\d{4})\r\n\t\t// format : `$1 $2 $3`\r\n\t\t// digits : `9999999999` (10 digits)\r\n\t\t//\r\n\t\t// '9999999999'.replace(new RegExp(/(\\d{2})(\\d{3,4})(\\d{4})/g), '$1 $2 $3') = \"99 9999 9999\"\r\n\t\t//\r\n\t\t// template : xx xxxx xxxx\r\n\t\t//\r\n\t\t// But the correct template in this case is `xx xxx xxxx`.\r\n\t\t// The template was generated incorrectly because of the\r\n\t\t// `{3,4}` variability in the `pattern`.\r\n\t\t//\r\n\t\t// The fix is, if `this.nationalSignificantNumber` has already sufficient length\r\n\t\t// to satisfy the `pattern` completely then `this.nationalSignificantNumber`\r\n\t\t// is used instead of `digits`.\r\n\r\n\t\tconst strictPattern = new RegExp('^' + pattern + '$')\r\n\t\tconst nationalNumberDummyDigits = nationalSignificantNumber.replace(/\\d/g, DUMMY_DIGIT)\r\n\r\n\t\t// If `this.nationalSignificantNumber` has already sufficient length\r\n\t\t// to satisfy the `pattern` completely then use it\r\n\t\t// instead of `digits`.\r\n\t\tif (strictPattern.test(nationalNumberDummyDigits)) {\r\n\t\t\tdigits = nationalNumberDummyDigits\r\n\t\t}\r\n\r\n\t\tlet numberFormat = this.getFormatFormat(format, international)\r\n\t\tlet nationalPrefixIncludedInTemplate\r\n\r\n\t\t// If a user did input a national prefix (and that's guaranteed),\r\n\t\t// and if a `format` does have a national prefix formatting rule,\r\n\t\t// then see if that national prefix formatting rule\r\n\t\t// prepends exactly the same national prefix the user has input.\r\n\t\t// If that's the case, then use the `format` with the national prefix formatting rule.\r\n\t\t// Otherwise, use the `format` without the national prefix formatting rule,\r\n\t\t// and prepend a national prefix manually to it.\r\n\t\tif (this.shouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix })) {\r\n\t\t\tconst numberFormatWithNationalPrefix = numberFormat.replace(\r\n\t\t\t\tFIRST_GROUP_PATTERN,\r\n\t\t\t\tformat.nationalPrefixFormattingRule()\r\n\t\t\t)\r\n\t\t\t// If `national_prefix_formatting_rule` of a `format` simply prepends\r\n\t\t\t// national prefix at the start of a national (significant) number,\r\n\t\t\t// then such formatting can be used with `AsYouType` formatter.\r\n\t\t\t// There seems to be no `else` case: everywhere in metadata,\r\n\t\t\t// national prefix formatting rule is national prefix + $1,\r\n\t\t\t// or `($1)`, in which case such format isn't even considered\r\n\t\t\t// when the user has input a national prefix.\r\n\t\t\t/* istanbul ignore else */\r\n\t\t\tif (parseDigits(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + parseDigits('$1')) {\r\n\t\t\t\tnumberFormat = numberFormatWithNationalPrefix\r\n\t\t\t\tnationalPrefixIncludedInTemplate = true\r\n\t\t\t\t// Replace all digits of the national prefix in the formatting template\r\n\t\t\t\t// with `DIGIT_PLACEHOLDER`s.\r\n\t\t\t\tif (nationalPrefix) {\r\n\t\t\t\t\tlet i = nationalPrefix.length\r\n\t\t\t\t\twhile (i > 0) {\r\n\t\t\t\t\t\tnumberFormat = numberFormat.replace(/\\d/, DIGIT_PLACEHOLDER)\r\n\t\t\t\t\t\ti--\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Generate formatting template for this phone number format.\r\n\t\tlet template = digits\r\n\t\t\t// Format the dummy phone number according to the format.\r\n\t\t\t.replace(new RegExp(pattern), numberFormat)\r\n\t\t\t// Replace each dummy digit with a DIGIT_PLACEHOLDER.\r\n\t\t\t.replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER)\r\n\r\n\t\t// If a prefix of a national (significant) number is not as simple\r\n\t\t// as just a basic national prefix, then just prepend such prefix\r\n\t\t// before the national (significant) number, optionally spacing\r\n\t\t// the two with a whitespace.\r\n\t\tif (!nationalPrefixIncludedInTemplate) {\r\n\t\t\tif (complexPrefixBeforeNationalSignificantNumber) {\r\n\t\t\t\t// Prepend the prefix to the template manually.\r\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, complexPrefixBeforeNationalSignificantNumber.length) +\r\n\t\t\t\t\t' ' +\r\n\t\t\t\t\ttemplate\r\n\t\t\t} else if (nationalPrefix) {\r\n\t\t\t\t// Prepend national prefix to the template manually.\r\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) +\r\n\t\t\t\t\tthis.getSeparatorAfterNationalPrefix(format) +\r\n\t\t\t\t\ttemplate\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (international) {\r\n\t\t\ttemplate = applyInternationalSeparatorStyle(template)\r\n\t\t}\r\n\r\n\t\treturn template\r\n\t}\r\n\r\n\tformatNextNationalNumberDigits(digits) {\r\n\t\tconst result = populateTemplateWithDigits(\r\n\t\t\tthis.populatedNationalNumberTemplate,\r\n\t\t\tthis.populatedNationalNumberTemplatePosition,\r\n\t\t\tdigits\r\n\t\t)\r\n\r\n\t\tif (!result) {\r\n\t\t\t// Reset the format.\r\n\t\t\tthis.resetFormat()\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis.populatedNationalNumberTemplate = result[0]\r\n\t\tthis.populatedNationalNumberTemplatePosition = result[1]\r\n\r\n\t\t// Return the formatted phone number so far.\r\n\t\treturn cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\r\n\r\n\t\t// The old way which was good for `input-format` but is not so good\r\n\t\t// for `react-phone-number-input`'s default input (`InputBasic`).\r\n\t\t// return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\r\n\t\t// \t.replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ')\r\n\t}\r\n\r\n\tshouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix }) {\r\n\t\tif (format.nationalPrefixFormattingRule()) {\r\n\t\t\t// In some countries, `national_prefix_formatting_rule` is `($1)`,\r\n\t\t\t// so it applies even if the user hasn't input a national prefix.\r\n\t\t\t// `format.usesNationalPrefix()` detects such cases.\r\n\t\t\tconst usesNationalPrefix = format.usesNationalPrefix()\r\n\t\t\tif ((usesNationalPrefix && nationalPrefix) ||\r\n\t\t\t\t(!usesNationalPrefix && !international)) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport extractNationalNumberFromPossiblyIncompleteNumber from './helpers/extractNationalNumberFromPossiblyIncompleteNumber.js'\r\nimport stripIddPrefix from './helpers/stripIddPrefix.js'\r\nimport parseDigits from './helpers/parseDigits.js'\r\n\r\nimport {\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from './constants.js'\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART =\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']+'\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i')\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_PART =\r\n\t'(?:' +\r\n\t\t'[' + PLUS_CHARS + ']' +\r\n\t\t'[' +\r\n\t\t\tVALID_PUNCTUATION +\r\n\t\t\tVALID_DIGITS +\r\n\t\t']*' +\r\n\t\t'|' +\r\n\t\t'[' +\r\n\t\t\tVALID_PUNCTUATION +\r\n\t\t\tVALID_DIGITS +\r\n\t\t']+' +\r\n\t')'\r\n\r\nconst AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp(\r\n\t'[^' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']+' +\r\n\t'.*' +\r\n\t'$'\r\n)\r\n\r\n// Tests whether `national_prefix_for_parsing` could match\r\n// different national prefixes.\r\n// Matches anything that's not a digit or a square bracket.\r\nconst COMPLEX_NATIONAL_PREFIX = /[^\\d\\[\\]]/\r\n\r\nexport default class AsYouTypeParser {\r\n\tconstructor({\r\n\t\tdefaultCountry,\r\n\t\tdefaultCallingCode,\r\n\t\tmetadata,\r\n\t\tonNationalSignificantNumberChange\r\n\t}) {\r\n\t\tthis.defaultCountry = defaultCountry\r\n\t\tthis.defaultCallingCode = defaultCallingCode\r\n\t\tthis.metadata = metadata\r\n\t\tthis.onNationalSignificantNumberChange = onNationalSignificantNumberChange\r\n\t}\r\n\r\n\tinput(text, state) {\r\n\t\tconst [formattedDigits, hasPlus] = extractFormattedDigitsAndPlus(text)\r\n\t\tconst digits = parseDigits(formattedDigits)\r\n\t\t// Checks for a special case: just a leading `+` has been entered.\r\n\t\tlet justLeadingPlus\r\n\t\tif (hasPlus) {\r\n\t\t\tif (!state.digits) {\r\n\t\t\t\tstate.startInternationalNumber()\r\n\t\t\t\tif (!digits) {\r\n\t\t\t\t\tjustLeadingPlus = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (digits) {\r\n\t\t\tthis.inputDigits(digits, state)\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tdigits,\r\n\t\t\tjustLeadingPlus\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Inputs \"next\" phone number digits.\r\n\t * @param {string} digits\r\n\t * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means \"don't format the national phone number at this stage\".\r\n\t */\r\n\tinputDigits(nextDigits, state) {\r\n\t\tconst { digits } = state\r\n\t\tconst hasReceivedThreeLeadingDigits = digits.length < 3 && digits.length + nextDigits.length >= 3\r\n\r\n\t\t// Append phone number digits.\r\n\t\tstate.appendDigits(nextDigits)\r\n\r\n\t\t// Attempt to extract IDD prefix:\r\n\t\t// Some users input their phone number in international format,\r\n\t\t// but in an \"out-of-country\" dialing format instead of using the leading `+`.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\r\n\t\t// Detect such numbers as soon as there're at least 3 digits.\r\n\t\t// Google's library attempts to extract IDD prefix at 3 digits,\r\n\t\t// so this library just copies that behavior.\r\n\t\t// I guess that's because the most commot IDD prefixes are\r\n\t\t// `00` (Europe) and `011` (US).\r\n\t\t// There exist really long IDD prefixes too:\r\n\t\t// for example, in Australia the default IDD prefix is `0011`,\r\n\t\t// and it could even be as long as `14880011`.\r\n\t\t// An IDD prefix is extracted here, and then every time when\r\n\t\t// there's a new digit and the number couldn't be formatted.\r\n\t\tif (hasReceivedThreeLeadingDigits) {\r\n\t\t\tthis.extractIddPrefix(state)\r\n\t\t}\r\n\r\n\t\tif (this.isWaitingForCountryCallingCode(state)) {\r\n\t\t\tif (!this.extractCountryCallingCode(state)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tstate.appendNationalSignificantNumberDigits(nextDigits)\r\n\t\t}\r\n\r\n\t\t// If a phone number is being input in international format,\r\n\t\t// then it's not valid for it to have a national prefix.\r\n\t\t// Still, some people incorrectly input such numbers with a national prefix.\r\n\t\t// In such cases, only attempt to strip a national prefix if the number becomes too long.\r\n\t\t// (but that is done later, not here)\r\n\t\tif (!state.international) {\r\n\t\t\tif (!this.hasExtractedNationalSignificantNumber) {\r\n\t\t\t\tthis.extractNationalSignificantNumber(\r\n\t\t\t\t\tstate.getNationalDigits(),\r\n\t\t\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisWaitingForCountryCallingCode({ international, callingCode }) {\r\n\t\treturn international && !callingCode\r\n\t}\r\n\r\n\t// Extracts a country calling code from a number\r\n\t// being entered in internatonal format.\r\n\textractCountryCallingCode(state) {\r\n\t\tconst { countryCallingCode, number } = extractCountryCallingCode(\r\n\t\t\t'+' + state.getDigitsWithoutInternationalPrefix(),\r\n\t\t\tthis.defaultCountry,\r\n\t\t\tthis.defaultCallingCode,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (countryCallingCode) {\r\n\t\t\tstate.setCallingCode(countryCallingCode)\r\n\t\t\tstate.update({\r\n\t\t\t\tnationalSignificantNumber: number\r\n\t\t\t})\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\treset(numberingPlan) {\r\n\t\tif (numberingPlan) {\r\n\t\t\tthis.hasSelectedNumberingPlan = true\r\n\t\t\tconst nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing()\r\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing && COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing)\r\n\t\t} else {\r\n\t\t\tthis.hasSelectedNumberingPlan = undefined\r\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = undefined\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Extracts a national (significant) number from user input.\r\n\t * Google's library is different in that it only applies `national_prefix_for_parsing`\r\n\t * and doesn't apply `national_prefix_transform_rule` after that.\r\n\t * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539\r\n\t * @return {boolean} [extracted]\r\n\t */\r\n\textractNationalSignificantNumber(nationalDigits, setState) {\r\n\t\tif (!this.hasSelectedNumberingPlan) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst {\r\n\t\t\tnationalPrefix,\r\n\t\t\tnationalNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\t\tnationalDigits,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t\tif (nationalNumber === nationalDigits) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.onExtractedNationalNumber(\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tnationalDigits,\r\n\t\t\tsetState\r\n\t\t)\r\n\t\treturn true\r\n\t}\r\n\r\n\t/**\r\n\t * In Google's code this function is called \"attempt to extract longer NDD\".\r\n\t * \"Some national prefixes are a substring of others\", they say.\r\n\t * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were.\r\n\t */\r\n\textractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) {\r\n\t\tif (!this.hasExtractedNationalSignificantNumber) {\r\n\t\t\treturn this.extractNationalSignificantNumber(nationalDigits, setState)\r\n\t\t}\r\n\t\tif (!this.couldPossiblyExtractAnotherNationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst {\r\n\t\t\tnationalPrefix,\r\n\t\t\tnationalNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\t\tnationalDigits,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t\t// If a national prefix has been extracted previously,\r\n\t\t// then it's always extracted as additional digits are added.\r\n\t\t// That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()`\r\n\t\t// doesn't do anything different from what it currently does.\r\n\t\t// So, just in case, here's this check, though it doesn't occur.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (nationalNumber === prevNationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.onExtractedNationalNumber(\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tnationalDigits,\r\n\t\t\tsetState\r\n\t\t)\r\n\t\treturn true\r\n\t}\r\n\r\n\tonExtractedNationalNumber(\r\n\t\tnationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tnationalSignificantNumber,\r\n\t\tnationalDigits,\r\n\t\tsetState\r\n\t) {\r\n\t\tlet complexPrefixBeforeNationalSignificantNumber\r\n\t\tlet nationalSignificantNumberMatchesInput\r\n\t\t// This check also works with empty `this.nationalSignificantNumber`.\r\n\t\tconst nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber)\r\n\t\t// If the extracted national (significant) number is the\r\n\t\t// last substring of the `digits`, then it means that it hasn't been altered:\r\n\t\t// no digits have been removed from the national (significant) number\r\n\t\t// while applying `national_prefix_transform_rule`.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\tif (nationalSignificantNumberIndex >= 0 &&\r\n\t\t\tnationalSignificantNumberIndex === nationalDigits.length - nationalSignificantNumber.length) {\r\n\t\t\tnationalSignificantNumberMatchesInput = true\r\n\t\t\t// If a prefix of a national (significant) number is not as simple\r\n\t\t\t// as just a basic national prefix, then such prefix is stored in\r\n\t\t\t// `this.complexPrefixBeforeNationalSignificantNumber` property and will be\r\n\t\t\t// prepended \"as is\" to the national (significant) number to produce\r\n\t\t\t// a formatted result.\r\n\t\t\tconst prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex)\r\n\t\t\t// `prefixBeforeNationalNumber` is always non-empty,\r\n\t\t\t// because `onExtractedNationalNumber()` isn't called\r\n\t\t\t// when a national (significant) number hasn't been actually \"extracted\":\r\n\t\t\t// when a national (significant) number is equal to the national part of `digits`,\r\n\t\t\t// then `onExtractedNationalNumber()` doesn't get called.\r\n\t\t\tif (prefixBeforeNationalNumber !== nationalPrefix) {\r\n\t\t\t\tcomplexPrefixBeforeNationalSignificantNumber = prefixBeforeNationalNumber\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetState({\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tnationalSignificantNumberMatchesInput,\r\n\t\t\tcomplexPrefixBeforeNationalSignificantNumber\r\n\t\t})\r\n\t\t// `onExtractedNationalNumber()` is only called when\r\n\t\t// the national (significant) number actually did change.\r\n\t\tthis.hasExtractedNationalSignificantNumber = true\r\n\t\tthis.onNationalSignificantNumberChange()\r\n\t}\r\n\r\n\treExtractNationalSignificantNumber(state) {\r\n\t\t// Attempt to extract a national prefix.\r\n\t\t//\r\n\t\t// Some people incorrectly input national prefix\r\n\t\t// in an international phone number.\r\n\t\t// For example, some people write British phone numbers as `+44(0)...`.\r\n\t\t//\r\n\t\t// Also, in some rare cases, it is valid for a national prefix\r\n\t\t// to be a part of an international phone number.\r\n\t\t// For example, mobile phone numbers in Mexico are supposed to be\r\n\t\t// dialled internationally using a `1` national prefix,\r\n\t\t// so the national prefix will be part of an international number.\r\n\t\t//\r\n\t\t// Quote from:\r\n\t\t// https://www.mexperience.com/dialing-cell-phones-in-mexico/\r\n\t\t//\r\n\t\t// \"Dialing a Mexican cell phone from abroad\r\n\t\t// When you are calling a cell phone number in Mexico from outside Mexico,\r\n\t\t// it’s necessary to dial an additional “1†after Mexico’s country code\r\n\t\t// (which is “52â€) and before the area code.\r\n\t\t// You also ignore the 045, and simply dial the area code and the\r\n\t\t// cell phone’s number.\r\n\t\t//\r\n\t\t// If you don’t add the “1â€, you’ll receive a recorded announcement\r\n\t\t// asking you to redial using it.\r\n\t\t//\r\n\t\t// For example, if you are calling from the USA to a cell phone\r\n\t\t// in Mexico City, you would dial +52 – 1 – 55 – 1234 5678.\r\n\t\t// (Note that this is different to calling a land line in Mexico City\r\n\t\t// from abroad, where the number dialed would be +52 – 55 – 1234 5678)\".\r\n\t\t//\r\n\t\t// Google's demo output:\r\n\t\t// https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678&country=MX\r\n\t\t//\r\n\t\tif (this.extractAnotherNationalSignificantNumber(\r\n\t\t\tstate.getNationalDigits(),\r\n\t\t\tstate.nationalSignificantNumber,\r\n\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// If no format matches the phone number, then it could be\r\n\t\t// \"a really long IDD\" (quote from a comment in Google's library).\r\n\t\t// An IDD prefix is first extracted when the user has entered at least 3 digits,\r\n\t\t// and then here — every time when there's a new digit and the number\r\n\t\t// couldn't be formatted.\r\n\t\t// For example, in Australia the default IDD prefix is `0011`,\r\n\t\t// and it could even be as long as `14880011`.\r\n\t\t//\r\n\t\t// Could also check `!hasReceivedThreeLeadingDigits` here\r\n\t\t// to filter out the case when this check duplicates the one\r\n\t\t// already performed when there're 3 leading digits,\r\n\t\t// but it's not a big deal, and in most cases there\r\n\t\t// will be a suitable `format` when there're 3 leading digits.\r\n\t\t//\r\n\t\tif (this.extractIddPrefix(state)) {\r\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// Google's AsYouType formatter supports sort of an \"autocorrection\" feature\r\n\t\t// when it \"autocorrects\" numbers that have been input for a country\r\n\t\t// with that country's calling code.\r\n\t\t// Such \"autocorrection\" feature looks weird, but different people have been requesting it:\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/375\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/316\r\n\t\tif (this.fixMissingPlus(state)) {\r\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\textractIddPrefix(state) {\r\n\t\t// An IDD prefix can't be present in a number written with a `+`.\r\n\t\t// Also, don't re-extract an IDD prefix if has already been extracted.\r\n\t\tconst {\r\n\t\t\tinternational,\r\n\t\t\tIDDPrefix,\r\n\t\t\tdigits,\r\n\t\t\tnationalSignificantNumber\r\n\t\t} = state\r\n\t\tif (international || IDDPrefix) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Some users input their phone number in \"out-of-country\"\r\n\t\t// dialing format instead of using the leading `+`.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\r\n\t\t// Detect such numbers.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(\r\n\t\t\tdigits,\r\n\t\t\tthis.defaultCountry,\r\n\t\t\tthis.defaultCallingCode,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (numberWithoutIDD !== undefined && numberWithoutIDD !== digits) {\r\n\t\t\t// If an IDD prefix was stripped then convert the IDD-prefixed number\r\n\t\t\t// to international number for subsequent parsing.\r\n\t\t\tstate.update({\r\n\t\t\t\tIDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length)\r\n\t\t\t})\r\n\t\t\tthis.startInternationalNumber(state, {\r\n\t\t\t\tcountry: undefined,\r\n\t\t\t\tcallingCode: undefined\r\n\t\t\t})\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\tfixMissingPlus(state) {\r\n\t\tif (!state.international) {\r\n\t\t\tconst {\r\n\t\t\t\tcountryCallingCode: newCallingCode,\r\n\t\t\t\tnumber\r\n\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\tstate.digits,\r\n\t\t\t\tthis.defaultCountry,\r\n\t\t\t\tthis.defaultCallingCode,\r\n\t\t\t\tthis.metadata.metadata\r\n\t\t\t)\r\n\t\t\tif (newCallingCode) {\r\n\t\t\t\tstate.update({\r\n\t\t\t\t\tmissingPlus: true\r\n\t\t\t\t})\r\n\t\t\t\tthis.startInternationalNumber(state, {\r\n\t\t\t\t\tcountry: state.country,\r\n\t\t\t\t\tcallingCode: newCallingCode\r\n\t\t\t\t})\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstartInternationalNumber(state, { country, callingCode }) {\r\n\t\tstate.startInternationalNumber(country, callingCode)\r\n\t\t// If a national (significant) number has been extracted before, reset it.\r\n\t\tif (state.nationalSignificantNumber) {\r\n\t\t\tstate.resetNationalSignificantNumber()\r\n\t\t\tthis.onNationalSignificantNumberChange()\r\n\t\t\tthis.hasExtractedNationalSignificantNumber = undefined\r\n\t\t}\r\n\t}\r\n\r\n\textractCallingCodeAndNationalSignificantNumber(state) {\r\n\t\tif (this.extractCountryCallingCode(state)) {\r\n\t\t\t// `this.extractCallingCode()` is currently called when the number\r\n\t\t\t// couldn't be formatted during the standard procedure.\r\n\t\t\t// Normally, the national prefix would be re-extracted\r\n\t\t\t// for an international number if such number couldn't be formatted,\r\n\t\t\t// but since it's already not able to be formatted,\r\n\t\t\t// there won't be yet another retry, so also extract national prefix here.\r\n\t\t\tthis.extractNationalSignificantNumber(\r\n\t\t\t\tstate.getNationalDigits(),\r\n\t\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t\t)\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number from text (if there's any).\r\n * @param {string} text\r\n * @return {string} [formattedPhoneNumber]\r\n */\r\nfunction extractFormattedPhoneNumber(text) {\r\n\t// Attempt to extract a possible number from the string passed in.\r\n\tconst startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART)\r\n\tif (startsAt < 0) {\r\n\t\treturn\r\n\t}\r\n\t// Trim everything to the left of the phone number.\r\n\ttext = text.slice(startsAt)\r\n\t// Trim the `+`.\r\n\tlet hasPlus\r\n\tif (text[0] === '+') {\r\n\t\thasPlus = true\r\n\t\ttext = text.slice('+'.length)\r\n\t}\r\n\t// Trim everything to the right of the phone number.\r\n\ttext = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, '')\r\n\t// Re-add the previously trimmed `+`.\r\n\tif (hasPlus) {\r\n\t\ttext = '+' + text\r\n\t}\r\n\treturn text\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\r\nfunction _extractFormattedDigitsAndPlus(text) {\r\n\t// Extract a formatted phone number part from text.\r\n\tconst extractedNumber = extractFormattedPhoneNumber(text) || ''\r\n\t// Trim a `+`.\r\n\tif (extractedNumber[0] === '+') {\r\n\t\treturn [extractedNumber.slice('+'.length), true]\r\n\t}\r\n\treturn [extractedNumber]\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\r\nexport function extractFormattedDigitsAndPlus(text) {\r\n\tlet [formattedDigits, hasPlus] = _extractFormattedDigitsAndPlus(text)\r\n\t// If the extracted phone number part\r\n\t// can possibly be a part of some valid phone number\r\n\t// then parse phone number characters from a formatted phone number.\r\n\tif (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) {\r\n\t\tformattedDigits = ''\r\n\t}\r\n\treturn [formattedDigits, hasPlus]\r\n}","import Metadata from './metadata.js'\r\nimport PhoneNumber from './PhoneNumber.js'\r\nimport AsYouTypeState from './AsYouTypeState.js'\r\nimport AsYouTypeFormatter, { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.js'\r\nimport AsYouTypeParser, { extractFormattedDigitsAndPlus } from './AsYouTypeParser.js'\r\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'\r\nimport getCountryByNationalNumber from './helpers/getCountryByNationalNumber.js'\r\nimport isObject from './helpers/isObject.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default class AsYouType {\r\n\t/**\r\n\t * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object.\r\n\t * @param {Object} metadata\r\n\t */\r\n\tconstructor(optionsOrDefaultCountry, metadata) {\r\n\t\tthis.metadata = new Metadata(metadata)\r\n\t\tconst [defaultCountry, defaultCallingCode] = this.getCountryAndCallingCode(optionsOrDefaultCountry)\r\n\t\t// `this.defaultCountry` and `this.defaultCallingCode` aren't required to be in sync.\r\n\t\t// For example, `this.defaultCountry` could be `\"AR\"` and `this.defaultCallingCode` could be `undefined`.\r\n\t\t// So `this.defaultCountry` and `this.defaultCallingCode` are totally independent.\r\n\t\tthis.defaultCountry = defaultCountry\r\n\t\tthis.defaultCallingCode = defaultCallingCode\r\n\t\tthis.reset()\r\n\t}\r\n\r\n\tgetCountryAndCallingCode(optionsOrDefaultCountry) {\r\n\t\t// Set `defaultCountry` and `defaultCallingCode` options.\r\n\t\tlet defaultCountry\r\n\t\tlet defaultCallingCode\r\n\t\t// Turns out `null` also has type \"object\". Weird.\r\n\t\tif (optionsOrDefaultCountry) {\r\n\t\t\tif (isObject(optionsOrDefaultCountry)) {\r\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry.defaultCountry\r\n\t\t\t\tdefaultCallingCode = optionsOrDefaultCountry.defaultCallingCode\r\n\t\t\t} else {\r\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (defaultCountry && !this.metadata.hasCountry(defaultCountry)) {\r\n\t\t\tdefaultCountry = undefined\r\n\t\t}\r\n\t\tif (defaultCallingCode) {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) {\r\n\t\t\t\t\tdefaultCountry = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn [defaultCountry, defaultCallingCode]\r\n\t}\r\n\r\n\t/**\r\n\t * Inputs \"next\" phone number characters.\r\n\t * @param {string} text\r\n\t * @return {string} Formatted phone number characters that have been input so far.\r\n\t */\r\n\tinput(text) {\r\n\t\tconst {\r\n\t\t\tdigits,\r\n\t\t\tjustLeadingPlus\r\n\t\t} = this.parser.input(text, this.state)\r\n\t\tif (justLeadingPlus) {\r\n\t\t\tthis.formattedOutput = '+'\r\n\t\t} else if (digits) {\r\n\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t// Match the available formats by the currently available leading digits.\r\n\t\t\tif (this.state.nationalSignificantNumber) {\r\n\t\t\t\tthis.formatter.narrowDownMatchingFormats(this.state)\r\n\t\t\t}\r\n\t\t\tlet formattedNationalNumber\r\n\t\t\tif (this.metadata.hasSelectedNumberingPlan()) {\r\n\t\t\t\tformattedNationalNumber = this.formatter.format(digits, this.state)\r\n\t\t\t}\r\n\t\t\tif (formattedNationalNumber === undefined) {\r\n\t\t\t\t// See if another national (significant) number could be re-extracted.\r\n\t\t\t\tif (this.parser.reExtractNationalSignificantNumber(this.state)) {\r\n\t\t\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t\t\t// If it could, then re-try formatting the new national (significant) number.\r\n\t\t\t\t\tconst nationalDigits = this.state.getNationalDigits()\r\n\t\t\t\t\tif (nationalDigits) {\r\n\t\t\t\t\t\tformattedNationalNumber = this.formatter.format(nationalDigits, this.state)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.formattedOutput = formattedNationalNumber\r\n\t\t\t\t? this.getFullNumber(formattedNationalNumber)\r\n\t\t\t\t: this.getNonFormattedNumber()\r\n\t\t}\r\n\t\treturn this.formattedOutput\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.state = new AsYouTypeState({\r\n\t\t\tonCountryChange: (country) => {\r\n\t\t\t\t// Before version `1.6.0`, the official `AsYouType` formatter API\r\n\t\t\t\t// included the `.country` property of an `AsYouType` instance.\r\n\t\t\t\t// Since that property (along with the others) have been moved to\r\n\t\t\t\t// `this.state`, `this.country` property is emulated for compatibility\r\n\t\t\t\t// with the old versions.\r\n\t\t\t\tthis.country = country\r\n\t\t\t},\r\n\t\t\tonCallingCodeChange: (callingCode, country) => {\r\n\t\t\t\tthis.metadata.selectNumberingPlan(country, callingCode)\r\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\r\n\t\t\t\tthis.parser.reset(this.metadata.numberingPlan)\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.formatter = new AsYouTypeFormatter({\r\n\t\t\tstate: this.state,\r\n\t\t\tmetadata: this.metadata\r\n\t\t})\r\n\t\tthis.parser = new AsYouTypeParser({\r\n\t\t\tdefaultCountry: this.defaultCountry,\r\n\t\t\tdefaultCallingCode: this.defaultCallingCode,\r\n\t\t\tmetadata: this.metadata,\r\n\t\t\tstate: this.state,\r\n\t\t\tonNationalSignificantNumberChange: () => {\r\n\t\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.state.reset({\r\n\t\t\tcountry: this.defaultCountry,\r\n\t\t\tcallingCode: this.defaultCallingCode\r\n\t\t})\r\n\t\tthis.formattedOutput = ''\r\n\t\treturn this\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is being input in international format.\r\n\t * In other words, returns `true` if and only if the parsed phone number starts with a `\"+\"`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisInternational() {\r\n\t\treturn this.state.international\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the \"calling code\" part of the phone number when it's being input\r\n\t * in an international format.\r\n\t * If no valid calling code has been entered so far, returns `undefined`.\r\n\t * @return {string} [callingCode]\r\n\t */\r\n\tgetCallingCode() {\r\n\t\t // If the number is being input in national format and some \"default calling code\"\r\n\t\t // has been passed to `AsYouType` constructor, then `this.state.callingCode`\r\n\t\t // is equal to that \"default calling code\".\r\n\t\t //\r\n\t\t // If the number is being input in national format and no \"default calling code\"\r\n\t\t // has been passed to `AsYouType` constructor, then returns `undefined`,\r\n\t\t // even if a \"default country\" has been passed to `AsYouType` constructor.\r\n\t\t //\r\n\t\tif (this.isInternational()) {\r\n\t\t\treturn this.state.callingCode\r\n\t\t}\r\n\t}\r\n\r\n\t// A legacy alias.\r\n\tgetCountryCallingCode() {\r\n\t\treturn this.getCallingCode()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a two-letter country code of the phone number.\r\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n\t * Returns `undefined` if no phone number has been input yet.\r\n\t * @return {string} [country]\r\n\t */\r\n\tgetCountry() {\r\n\t\tconst { digits } = this.state\r\n\t\t// Return `undefined` if no digits have been input yet.\r\n\t\tif (digits) {\r\n\t\t\treturn this._getCountry()\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a two-letter country code of the phone number.\r\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n\t * @return {string} [country]\r\n\t */\r\n\t_getCountry() {\r\n\t\tconst { country } = this.state\r\n\t\t/* istanbul ignore if */\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t// `AsYouType.getCountry()` returns `undefined`\r\n\t\t\t// for \"non-geographic\" phone numbering plans.\r\n\t\t\tif (country === '001') {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn country\r\n\t}\r\n\r\n\tdetermineTheCountryIfNeeded() {\r\n\t\t// Suppose a user enters a phone number in international format,\r\n\t\t// and there're several countries corresponding to that country calling code,\r\n\t\t// and a country has been derived from the number, and then\r\n\t\t// a user enters one more digit and the number is no longer\r\n\t\t// valid for the derived country, so the country should be re-derived\r\n\t\t// on every new digit in those cases.\r\n\t\t//\r\n\t\t// If the phone number is being input in national format,\r\n\t\t// then it could be a case when `defaultCountry` wasn't specified\r\n\t\t// when creating `AsYouType` instance, and just `defaultCallingCode` was specified,\r\n\t\t// and that \"calling code\" could correspond to a \"non-geographic entity\",\r\n\t\t// or there could be several countries corresponding to that country calling code.\r\n\t\t// In those cases, `this.country` is `undefined` and should be derived\r\n\t\t// from the number. Again, if country calling code is ambiguous, then\r\n\t\t// `this.country` should be re-derived with each new digit.\r\n\t\t//\r\n\t\tif (!this.state.country || this.isCountryCallingCodeAmbiguous()) {\r\n\t\t\tthis.determineTheCountry()\r\n\t\t}\r\n\t}\r\n\r\n\t// Prepends `+CountryCode ` in case of an international phone number\r\n\tgetFullNumber(formattedNationalNumber) {\r\n\t\tif (this.isInternational()) {\r\n\t\t\tconst prefix = (text) => this.formatter.getInternationalPrefixBeforeCountryCallingCode(this.state, {\r\n\t\t\t\tspacing: text ? true : false\r\n\t\t\t}) + text\r\n\t\t\tconst { callingCode } = this.state\r\n\t\t\tif (!callingCode) {\r\n\t\t\t\treturn prefix(`${this.state.getDigitsWithoutInternationalPrefix()}`)\r\n\t\t\t}\r\n\t\t\tif (!formattedNationalNumber) {\r\n\t\t\t\treturn prefix(callingCode)\r\n\t\t\t}\r\n\t\t\treturn prefix(`${callingCode} ${formattedNationalNumber}`)\r\n\t\t}\r\n\t\treturn formattedNationalNumber\r\n\t}\r\n\r\n\tgetNonFormattedNationalNumberWithPrefix() {\r\n\t\tconst {\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tcomplexPrefixBeforeNationalSignificantNumber,\r\n\t\t\tnationalPrefix\r\n\t\t} = this.state\r\n\t\tlet number = nationalSignificantNumber\r\n\t\tconst prefix = complexPrefixBeforeNationalSignificantNumber || nationalPrefix\r\n\t\tif (prefix) {\r\n\t\t\tnumber = prefix + number\r\n\t\t}\r\n\t\treturn number\r\n\t}\r\n\r\n\tgetNonFormattedNumber() {\r\n\t\tconst { nationalSignificantNumberMatchesInput } = this.state\r\n\t\treturn this.getFullNumber(\r\n\t\t\tnationalSignificantNumberMatchesInput\r\n\t\t\t\t? this.getNonFormattedNationalNumberWithPrefix()\r\n\t\t\t\t: this.state.getNationalDigits()\r\n\t\t)\r\n\t}\r\n\r\n\tgetNonFormattedTemplate() {\r\n\t\tconst number = this.getNonFormattedNumber()\r\n\t\tif (number) {\r\n\t\t\treturn number.replace(/[\\+\\d]/g, DIGIT_PLACEHOLDER)\r\n\t\t}\r\n\t}\r\n\r\n\tisCountryCallingCodeAmbiguous() {\r\n\t\tconst { callingCode } = this.state\r\n\t\tconst countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode)\r\n\t\treturn countryCodes && countryCodes.length > 1\r\n\t}\r\n\r\n\t// Determines the country of the phone number\r\n\t// entered so far based on the country phone code\r\n\t// and the national phone number.\r\n\tdetermineTheCountry() {\r\n\t\tthis.state.setCountry(getCountryByCallingCode(\r\n\t\t\tthis.isInternational() ? this.state.callingCode : this.defaultCallingCode,\r\n\t\t\t{\r\n\t\t\t\tnationalNumber: this.state.nationalSignificantNumber,\r\n\t\t\t\tdefaultCountry: this.defaultCountry,\r\n\t\t\t\tmetadata: this.metadata\r\n\t\t\t}\r\n\t\t))\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a E.164 phone number value for the user's input.\r\n\t *\r\n\t * For example, for country `\"US\"` and input `\"(222) 333-4444\"`\r\n\t * it will return `\"+12223334444\"`.\r\n\t *\r\n\t * For international phone number input, it will also auto-correct\r\n\t * some minor errors such as using a national prefix when writing\r\n\t * an international phone number. For example, if the user inputs\r\n\t * `\"+44 0 7400 000000\"` then it will return an auto-corrected\r\n\t * `\"+447400000000\"` phone number value.\r\n\t *\r\n\t * Will return `undefined` if no digits have been input,\r\n\t * or when inputting a phone number in national format and no\r\n\t * default country or default \"country calling code\" have been set.\r\n\t *\r\n\t * @return {string} [value]\r\n\t */\r\n\tgetNumberValue() {\r\n\t\tconst {\r\n\t\t\tdigits,\r\n\t\t\tcallingCode,\r\n\t\t\tcountry,\r\n\t\t\tnationalSignificantNumber\r\n\t\t} = this.state\r\n\r\n\t \t// Will return `undefined` if no digits have been input.\r\n\t\tif (!digits) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (this.isInternational()) {\r\n\t\t\tif (callingCode) {\r\n\t\t\t\treturn '+' + callingCode + nationalSignificantNumber\r\n\t\t\t} else {\r\n\t\t\t\treturn '+' + digits\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (country || callingCode) {\r\n\t\t\t\tconst callingCode_ = country ? this.metadata.countryCallingCode() : callingCode\r\n\t\t\t\treturn '+' + callingCode_ + nationalSignificantNumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an instance of `PhoneNumber` class.\r\n\t * Will return `undefined` if no national (significant) number\r\n\t * digits have been entered so far, or if no `defaultCountry` has been\r\n\t * set and the user enters a phone number not in international format.\r\n\t */\r\n\tgetNumber() {\r\n\t\tconst {\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tcarrierCode,\r\n\t\t\tcallingCode\r\n\t\t} = this.state\r\n\r\n\t\t// `this._getCountry()` is basically same as `this.state.country`\r\n\t\t// with the only change that it return `undefined` in case of a\r\n\t\t// \"non-geographic\" numbering plan instead of `\"001\"` \"internal use\" value.\r\n\t\tlet country = this._getCountry()\r\n\r\n\t\tif (!nationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// `state.country` and `state.callingCode` aren't required to be in sync.\r\n\t\t// For example, `country` could be `\"AR\"` and `callingCode` could be `undefined`.\r\n\t\t// So `country` and `callingCode` are totally independent.\r\n\r\n\t\tif (!country && !callingCode) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// By default, if `defaultCountry` parameter was passed when\r\n\t\t// creating `AsYouType` instance, `state.country` is gonna be\r\n\t\t// that `defaultCountry`, which doesn't entirely conform with\r\n\t\t// `parsePhoneNumber()`'s behavior where it attempts to determine\r\n\t\t// the country more precisely in cases when multiple countries\r\n\t\t// could correspond to the same `countryCallingCode`.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/103#note_1417192969\r\n\t\t//\r\n\t\t// Because `AsYouType.getNumber()` method is supposed to be a 1:1\r\n\t\t// equivalent for `parsePhoneNumber(AsYouType.getNumberValue())`,\r\n\t\t// then it should also behave accordingly in cases of `country` ambiguity.\r\n\t\t// That's how users of this library would expect it to behave anyway.\r\n\t\t//\r\n\t\tif (country) {\r\n\t\t\tif (country === this.defaultCountry) {\r\n\t\t\t\t// `state.country` and `state.callingCode` aren't required to be in sync.\r\n\t\t\t\t// For example, `state.country` could be `\"AR\"` and `state.callingCode` could be `undefined`.\r\n\t\t\t\t// So `state.country` and `state.callingCode` are totally independent.\r\n\t\t\t\tconst metadata = new Metadata(this.metadata.metadata)\r\n\t\t\t\tmetadata.selectNumberingPlan(country)\r\n\t\t\t\tconst callingCode = metadata.numberingPlan.callingCode()\r\n\t\t\t\tconst ambiguousCountries = this.metadata.getCountryCodesForCallingCode(callingCode)\r\n\t\t\t\tif (ambiguousCountries.length > 1) {\r\n\t\t\t\t\tconst exactCountry = getCountryByNationalNumber(nationalSignificantNumber, {\r\n\t\t\t\t\t\tcountries: ambiguousCountries,\r\n\t\t\t\t\t\tdefaultCountry: this.defaultCountry,\r\n\t\t\t\t\t\tmetadata: this.metadata.metadata\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (exactCountry) {\r\n\t\t\t\t\t\tcountry = exactCountry\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst phoneNumber = new PhoneNumber(\r\n\t\t\tcountry || callingCode,\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (carrierCode) {\r\n\t\t\tphoneNumber.carrierCode = carrierCode\r\n\t\t}\r\n\t\t// Phone number extensions are not supported by \"As You Type\" formatter.\r\n\t\treturn phoneNumber\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is \"possible\".\r\n\t * Is just a shortcut for `PhoneNumber.isPossible()`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisPossible() {\r\n\t\tconst phoneNumber = this.getNumber()\r\n\t\tif (!phoneNumber) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn phoneNumber.isPossible()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is \"valid\".\r\n\t * Is just a shortcut for `PhoneNumber.isValid()`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisValid() {\r\n\t\tconst phoneNumber = this.getNumber()\r\n\t\tif (!phoneNumber) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn phoneNumber.isValid()\r\n\t}\r\n\r\n\t/**\r\n\t * @deprecated\r\n\t * This method is used in `react-phone-number-input/source/input-control.js`\r\n\t * in versions before `3.0.16`.\r\n\t */\r\n\tgetNationalNumber() {\r\n\t\treturn this.state.nationalSignificantNumber\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the phone number characters entered by the user.\r\n\t * @return {string}\r\n\t */\r\n\tgetChars() {\r\n\t\treturn (this.state.international ? '+' : '') + this.state.digits\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the template for the formatted phone number.\r\n\t * @return {string}\r\n\t */\r\n\tgetTemplate() {\r\n\t\treturn this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || ''\r\n\t}\r\n}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.min.json.js'\r\n\r\nimport { AsYouType as _AsYouType } from '../../core/index.js'\r\n\r\nexport function AsYouType(country) {\r\n\treturn _AsYouType.call(this, country, metadata)\r\n}\r\n\r\nAsYouType.prototype = Object.create(_AsYouType.prototype, {})\r\nAsYouType.prototype.constructor = AsYouType","import Metadata from './metadata.js'\r\n\r\nexport default function getCountries(metadata) {\r\n\treturn new Metadata(metadata).getCountries()\r\n}","import PhoneNumber from './PhoneNumber.js'\r\n\r\nexport default function getExampleNumber(country, examples, metadata) {\r\n\tif (examples[country]) {\r\n\t\treturn new PhoneNumber(country, examples[country], metadata)\r\n\t}\r\n}","import e from\"libphonenumber-js/examples.mobile.json\";import{getCountries as n,getCountryCallingCode as o,isPossiblePhoneNumber as r,AsYouType as t,getExampleNumber as l}from\"libphonenumber-js/min\";export{getCountryCallingCode}from\"libphonenumber-js/min\";const i=(e,n)=>r(String(e),n),m=(e,n)=>`+${o(n)} ${e}`,p=e=>`*${e.replaceAll(\"-\",\"\").slice(-4)}`,a=e=>new t(e),u=n().map((e=>({code:e,callCode:o(e)}))),s=n=>{let o=l(n,e)?.formatInternational();return o?.substring(o.indexOf(\" \")+1)},b=e=>{let n=new t;n.input(e);let o=n.getCountry()||\"US\",r=n.getCallingCode()||\"1\";return{countryCode:o,phone:e.replace(\"+\"+r,\"\")}};export{u as countryCodesAndNumbers,m as formatPhoneNumber,b as getPhoneCountryCodeAndNumber,s as getPlaceholderPhoneNumber,p as lastFourDigits,a as phoneNumberTypingFormatter,i as validatePhoneNumber};\n","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { isPossiblePhoneNumber as _isPossiblePhoneNumber } from '../../core/index.js'\r\n\r\nexport function isPossiblePhoneNumber() {\r\n\treturn withMetadataArgument(_isPossiblePhoneNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getCountries as _getCountries } from '../../core/index.js'\r\n\r\nexport function getCountries() {\r\n\treturn withMetadataArgument(_getCountries, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getExampleNumber as _getExampleNumber } from '../../core/index.js'\r\n\r\nexport function getExampleNumber() {\r\n\treturn withMetadataArgument(_getExampleNumber, arguments)\r\n}","import{v4 as t}from\"uuid\";class e{async invokeRpc({method:e,params:n}){let r=await fetch(this.cluster.rpcUrl,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({jsonrpc:\"2.0\",id:t(),method:e,params:n})});return await r.json()}async getBalance(t){try{let e=await this.invokeRpc({method:\"getBalance\",params:[t]});return e.error?null:BigInt(e.result.value)}catch(t){return null}}async getTokenAccountsByOwner(t,e){try{let n=await this.invokeRpc({method:\"getTokenAccountsByOwner\",params:[t,{mint:e},{encoding:\"jsonParsed\"}]});if(n.error)return null;let r=n.result.value.at(0)?.account?.data?.parsed?.info?.tokenAmount;return r?{amount:BigInt(r.amount),decimals:r.decimals}:null}catch(t){return null}}async getAccountInfo(t){try{let e=await this.invokeRpc({method:\"getAccountInfo\",params:[t,{encoding:\"jsonParsed\"}]});if(e.error)return null;let n=e.result.value?.data?.parsed?.info;return n?{decimals:n.decimals}:null}catch(t){return null}}constructor(t){this.cluster=t}}export{e as SolanaClient};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nfunction testUserAgent(re: RegExp) {\n if (typeof window === 'undefined' || window.navigator == null) {\n return false;\n }\n return (\n window.navigator['userAgentData']?.brands.some((brand: {brand: string, version: string}) => re.test(brand.brand))\n ) ||\n re.test(window.navigator.userAgent);\n}\n\nfunction testPlatform(re: RegExp) {\n return typeof window !== 'undefined' && window.navigator != null\n ? re.test(window.navigator['userAgentData']?.platform || window.navigator.platform)\n : false;\n}\n\nfunction cached(fn: () => boolean) {\n if (process.env.NODE_ENV === 'test') {\n return fn;\n }\n \n let res: boolean | null = null;\n return () => {\n if (res == null) {\n res = fn();\n }\n return res;\n };\n}\n\nexport const isMac = cached(function () {\n return testPlatform(/^Mac/i);\n});\n\nexport const isIPhone = cached(function () {\n return testPlatform(/^iPhone/i);\n});\n\nexport const isIPad = cached(function () {\n return testPlatform(/^iPad/i) ||\n // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n (isMac() && navigator.maxTouchPoints > 1);\n});\n\nexport const isIOS = cached(function () {\n return isIPhone() || isIPad();\n});\n\nexport const isAppleDevice = cached(function () {\n return isMac() || isIOS();\n});\n\nexport const isWebKit = cached(function () {\n return testUserAgent(/AppleWebKit/i) && !isChrome();\n});\n\nexport const isChrome = cached(function () {\n return testUserAgent(/Chrome/i);\n});\n\nexport const isAndroid = cached(function () {\n return testUserAgent(/Android/i);\n});\n\nexport const isFirefox = cached(function () {\n return testUserAgent(/Firefox/i);\n});\n","/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {isAndroid} from './platform';\n\n// Original licensing for the following method can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/blob/3c713d513195a53788b3f8bb4b70279d68b15bcc/packages/react-interactions/events/src/dom/shared/index.js#L74-L87\n\n// Keyboards, Assistive Technologies, and element.click() all produce a \"virtual\"\n// click event. This is a method of inferring such clicks. Every browser except\n// IE 11 only sets a zero value of \"detail\" for click events that are \"virtual\".\n// However, IE 11 uses a zero value for all click events. For IE 11 we rely on\n// the quirk that it produces click events that are of type PointerEvent, and\n// where only the \"virtual\" click lacks a pointerType field.\n\nexport function isVirtualClick(event: MouseEvent | PointerEvent): boolean {\n // JAWS/NVDA with Firefox.\n if ((event as any).mozInputSource === 0 && event.isTrusted) {\n return true;\n }\n\n // Android TalkBack's detail value varies depending on the event listener providing the event so we have specific logic here instead\n // If pointerType is defined, event is from a click listener. For events from mousedown listener, detail === 0 is a sufficient check\n // to detect TalkBack virtual clicks.\n if (isAndroid() && (event as PointerEvent).pointerType) {\n return event.type === 'click' && event.buttons === 1;\n }\n\n return event.detail === 0 && !(event as PointerEvent).pointerType;\n}\n\nexport function isVirtualPointerEvent(event: PointerEvent) {\n // If the pointer size is zero, then we assume it's from a screen reader.\n // Android TalkBack double tap will sometimes return a event with width and height of 1\n // and pointerType === 'mouse' so we need to check for a specific combination of event attributes.\n // Cannot use \"event.pressure === 0\" as the sole check due to Safari pointer events always returning pressure === 0\n // instead of .5, see https://bugs.webkit.org/show_bug.cgi?id=206216. event.pointerType === 'mouse' is to distingush\n // Talkback double tap from Windows Firefox touch screen press\n return (\n (!isAndroid() && event.width === 0 && event.height === 0) ||\n (event.width === 1 &&\n event.height === 1 &&\n event.pressure === 0 &&\n event.detail === 0 &&\n event.pointerType === 'mouse'\n )\n );\n}\n","export const getOwnerDocument = (el: Element | null | undefined): Document => {\n return el?.ownerDocument ?? document;\n};\n\nexport const getOwnerWindow = (\n el: (Window & typeof global) | Element | null | undefined\n): Window & typeof global => {\n if (el && 'window' in el && el.window === el) {\n return el;\n }\n\n const doc = getOwnerDocument(el as Element | null | undefined);\n return doc.defaultView || window;\n};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {getOwnerDocument, getOwnerWindow, isMac, isVirtualClick} from '@react-aria/utils';\nimport {useEffect, useState} from 'react';\nimport {useIsSSR} from '@react-aria/ssr';\n\nexport type Modality = 'keyboard' | 'pointer' | 'virtual';\ntype HandlerEvent = PointerEvent | MouseEvent | KeyboardEvent | FocusEvent | null;\ntype Handler = (modality: Modality, e: HandlerEvent) => void;\nexport type FocusVisibleHandler = (isFocusVisible: boolean) => void;\nexport interface FocusVisibleProps {\n /** Whether the element is a text input. */\n isTextInput?: boolean,\n /** Whether the element will be auto focused. */\n autoFocus?: boolean\n}\n\nexport interface FocusVisibleResult {\n /** Whether keyboard focus is visible globally. */\n isFocusVisible: boolean\n}\n\nlet currentModality: null | Modality = null;\nlet changeHandlers = new Set<Handler>();\ninterface GlobalListenerData {\n focus: () => void\n}\nexport let hasSetupGlobalListeners = new Map<Window, GlobalListenerData>(); // We use a map here to support setting event listeners across multiple document objects.\nlet hasEventBeforeFocus = false;\nlet hasBlurredWindowRecently = false;\n\n// Only Tab or Esc keys will make focus visible on text input elements\nconst FOCUS_VISIBLE_INPUT_KEYS = {\n Tab: true,\n Escape: true\n};\n\nfunction triggerChangeHandlers(modality: Modality, e: HandlerEvent) {\n for (let handler of changeHandlers) {\n handler(modality, e);\n }\n}\n\n/**\n * Helper function to determine if a KeyboardEvent is unmodified and could make keyboard focus styles visible.\n */\nfunction isValidKey(e: KeyboardEvent) {\n // Control and Shift keys trigger when navigating back to the tab with keyboard.\n return !(e.metaKey || (!isMac() && e.altKey) || e.ctrlKey || e.key === 'Control' || e.key === 'Shift' || e.key === 'Meta');\n}\n\n\nfunction handleKeyboardEvent(e: KeyboardEvent) {\n hasEventBeforeFocus = true;\n if (isValidKey(e)) {\n currentModality = 'keyboard';\n triggerChangeHandlers('keyboard', e);\n }\n}\n\nfunction handlePointerEvent(e: PointerEvent | MouseEvent) {\n currentModality = 'pointer';\n if (e.type === 'mousedown' || e.type === 'pointerdown') {\n hasEventBeforeFocus = true;\n triggerChangeHandlers('pointer', e);\n }\n}\n\nfunction handleClickEvent(e: MouseEvent) {\n if (isVirtualClick(e)) {\n hasEventBeforeFocus = true;\n currentModality = 'virtual';\n }\n}\n\nfunction handleFocusEvent(e: FocusEvent) {\n // Firefox fires two extra focus events when the user first clicks into an iframe:\n // first on the window, then on the document. We ignore these events so they don't\n // cause keyboard focus rings to appear.\n if (e.target === window || e.target === document) {\n return;\n }\n\n // If a focus event occurs without a preceding keyboard or pointer event, switch to virtual modality.\n // This occurs, for example, when navigating a form with the next/previous buttons on iOS.\n if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {\n currentModality = 'virtual';\n triggerChangeHandlers('virtual', e);\n }\n\n hasEventBeforeFocus = false;\n hasBlurredWindowRecently = false;\n}\n\nfunction handleWindowBlur() {\n // When the window is blurred, reset state. This is necessary when tabbing out of the window,\n // for example, since a subsequent focus event won't be fired.\n hasEventBeforeFocus = false;\n hasBlurredWindowRecently = true;\n}\n\n/**\n * Setup global event listeners to control when keyboard focus style should be visible.\n */\nfunction setupGlobalFocusEvents(element?: HTMLElement | null) {\n if (typeof window === 'undefined' || hasSetupGlobalListeners.get(getOwnerWindow(element))) {\n return;\n }\n\n const windowObject = getOwnerWindow(element);\n const documentObject = getOwnerDocument(element);\n\n // Programmatic focus() calls shouldn't affect the current input modality.\n // However, we need to detect other cases when a focus event occurs without\n // a preceding user event (e.g. screen reader focus). Overriding the focus\n // method on HTMLElement.prototype is a bit hacky, but works.\n let focus = windowObject.HTMLElement.prototype.focus;\n windowObject.HTMLElement.prototype.focus = function () {\n hasEventBeforeFocus = true;\n focus.apply(this, arguments as unknown as [options?: FocusOptions | undefined]);\n };\n\n documentObject.addEventListener('keydown', handleKeyboardEvent, true);\n documentObject.addEventListener('keyup', handleKeyboardEvent, true);\n documentObject.addEventListener('click', handleClickEvent, true);\n\n // Register focus events on the window so they are sure to happen\n // before React's event listeners (registered on the document).\n windowObject.addEventListener('focus', handleFocusEvent, true);\n windowObject.addEventListener('blur', handleWindowBlur, false);\n\n if (typeof PointerEvent !== 'undefined') {\n documentObject.addEventListener('pointerdown', handlePointerEvent, true);\n documentObject.addEventListener('pointermove', handlePointerEvent, true);\n documentObject.addEventListener('pointerup', handlePointerEvent, true);\n } else {\n documentObject.addEventListener('mousedown', handlePointerEvent, true);\n documentObject.addEventListener('mousemove', handlePointerEvent, true);\n documentObject.addEventListener('mouseup', handlePointerEvent, true);\n }\n\n // Add unmount handler\n windowObject.addEventListener('beforeunload', () => {\n tearDownWindowFocusTracking(element);\n }, {once: true});\n\n hasSetupGlobalListeners.set(windowObject, {focus});\n}\n\nconst tearDownWindowFocusTracking = (element, loadListener?: () => void) => {\n const windowObject = getOwnerWindow(element);\n const documentObject = getOwnerDocument(element);\n if (loadListener) {\n documentObject.removeEventListener('DOMContentLoaded', loadListener);\n }\n if (!hasSetupGlobalListeners.has(windowObject)) {\n return;\n }\n windowObject.HTMLElement.prototype.focus = hasSetupGlobalListeners.get(windowObject)!.focus;\n\n documentObject.removeEventListener('keydown', handleKeyboardEvent, true);\n documentObject.removeEventListener('keyup', handleKeyboardEvent, true);\n documentObject.removeEventListener('click', handleClickEvent, true);\n windowObject.removeEventListener('focus', handleFocusEvent, true);\n windowObject.removeEventListener('blur', handleWindowBlur, false);\n\n if (typeof PointerEvent !== 'undefined') {\n documentObject.removeEventListener('pointerdown', handlePointerEvent, true);\n documentObject.removeEventListener('pointermove', handlePointerEvent, true);\n documentObject.removeEventListener('pointerup', handlePointerEvent, true);\n } else {\n documentObject.removeEventListener('mousedown', handlePointerEvent, true);\n documentObject.removeEventListener('mousemove', handlePointerEvent, true);\n documentObject.removeEventListener('mouseup', handlePointerEvent, true);\n }\n\n hasSetupGlobalListeners.delete(windowObject);\n};\n\n/**\n * EXPERIMENTAL\n * Adds a window (i.e. iframe) to the list of windows that are being tracked for focus visible.\n *\n * Sometimes apps render portions of their tree into an iframe. In this case, we cannot accurately track if the focus\n * is visible because we cannot see interactions inside the iframe. If you have this in your application's architecture,\n * then this function will attach event listeners inside the iframe. You should call `addWindowFocusTracking` with an\n * element from inside the window you wish to add. We'll retrieve the relevant elements based on that.\n * Note, you do not need to call this for the default window, as we call it for you.\n *\n * When you are ready to stop listening, but you do not wish to unmount the iframe, you may call the cleanup function\n * returned by `addWindowFocusTracking`. Otherwise, when you unmount the iframe, all listeners and state will be cleaned\n * up automatically for you.\n *\n * @param element @default document.body - The element provided will be used to get the window to add.\n * @returns A function to remove the event listeners and cleanup the state.\n */\nexport function addWindowFocusTracking(element?: HTMLElement | null): () => void {\n const documentObject = getOwnerDocument(element);\n let loadListener;\n if (documentObject.readyState !== 'loading') {\n setupGlobalFocusEvents(element);\n } else {\n loadListener = () => {\n setupGlobalFocusEvents(element);\n };\n documentObject.addEventListener('DOMContentLoaded', loadListener);\n }\n\n return () => tearDownWindowFocusTracking(element, loadListener);\n}\n\n// Server-side rendering does not have the document object defined\n// eslint-disable-next-line no-restricted-globals\nif (typeof document !== 'undefined') {\n addWindowFocusTracking();\n}\n\n/**\n * If true, keyboard focus is visible.\n */\nexport function isFocusVisible(): boolean {\n return currentModality !== 'pointer';\n}\n\nexport function getInteractionModality(): Modality | null {\n return currentModality;\n}\n\nexport function setInteractionModality(modality: Modality) {\n currentModality = modality;\n triggerChangeHandlers(modality, null);\n}\n\n/**\n * Keeps state of the current modality.\n */\nexport function useInteractionModality(): Modality | null {\n setupGlobalFocusEvents();\n\n let [modality, setModality] = useState(currentModality);\n useEffect(() => {\n let handler = () => {\n setModality(currentModality);\n };\n\n changeHandlers.add(handler);\n return () => {\n changeHandlers.delete(handler);\n };\n }, []);\n\n return useIsSSR() ? null : modality;\n}\n\nconst nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset'\n]);\n\n/**\n * If this is attached to text input component, return if the event is a focus event (Tab/Escape keys pressed) so that\n * focus visible style can be properly set.\n */\nfunction isKeyboardFocusEvent(isTextInput: boolean, modality: Modality, e: HandlerEvent) {\n const IHTMLInputElement = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).HTMLInputElement : HTMLInputElement;\n const IHTMLTextAreaElement = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).HTMLTextAreaElement : HTMLTextAreaElement;\n const IHTMLElement = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).HTMLElement : HTMLElement;\n const IKeyboardEvent = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).KeyboardEvent : KeyboardEvent;\n\n isTextInput = isTextInput ||\n (e?.target instanceof IHTMLInputElement && !nonTextInputTypes.has(e?.target?.type)) ||\n e?.target instanceof IHTMLTextAreaElement ||\n (e?.target instanceof IHTMLElement && e?.target.isContentEditable);\n return !(isTextInput && modality === 'keyboard' && e instanceof IKeyboardEvent && !FOCUS_VISIBLE_INPUT_KEYS[e.key]);\n}\n\n/**\n * Manages focus visible state for the page, and subscribes individual components for updates.\n */\nexport function useFocusVisible(props: FocusVisibleProps = {}): FocusVisibleResult {\n let {isTextInput, autoFocus} = props;\n let [isFocusVisibleState, setFocusVisible] = useState(autoFocus || isFocusVisible());\n useFocusVisibleListener((isFocusVisible) => {\n setFocusVisible(isFocusVisible);\n }, [isTextInput], {isTextInput});\n\n return {isFocusVisible: isFocusVisibleState};\n}\n\n/**\n * Listens for trigger change and reports if focus is visible (i.e., modality is not pointer).\n */\nexport function useFocusVisibleListener(fn: FocusVisibleHandler, deps: ReadonlyArray<any>, opts?: {isTextInput?: boolean}): void {\n setupGlobalFocusEvents();\n\n useEffect(() => {\n let handler = (modality: Modality, e: HandlerEvent) => {\n if (!isKeyboardFocusEvent(!!(opts?.isTextInput), modality, e)) {\n return;\n }\n fn(isFocusVisible());\n };\n changeHandlers.add(handler);\n return () => {\n changeHandlers.delete(handler);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport React from 'react';\n\n// During SSR, React emits a warning when calling useLayoutEffect.\n// Since neither useLayoutEffect nor useEffect run on the server,\n// we can suppress this by replace it with a noop on the server.\nexport const useLayoutEffect = typeof document !== 'undefined'\n ? React.useLayoutEffect\n : () => {};\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {useCallback, useRef} from 'react';\nimport {useLayoutEffect} from './useLayoutEffect';\n\nexport function useEffectEvent<T extends Function>(fn?: T): T {\n const ref = useRef<T | null | undefined>(null);\n useLayoutEffect(() => {\n ref.current = fn;\n }, [fn]);\n // @ts-ignore\n return useCallback<T>((...args) => {\n const f = ref.current!;\n return f?.(...args);\n }, []);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusEvent as ReactFocusEvent, useCallback, useRef} from 'react';\nimport {useEffectEvent, useLayoutEffect} from '@react-aria/utils';\n\nexport class SyntheticFocusEvent<Target = Element> implements ReactFocusEvent<Target> {\n nativeEvent: FocusEvent;\n target: EventTarget & Target;\n currentTarget: EventTarget & Target;\n relatedTarget: Element;\n bubbles: boolean;\n cancelable: boolean;\n defaultPrevented: boolean;\n eventPhase: number;\n isTrusted: boolean;\n timeStamp: number;\n type: string;\n\n constructor(type: string, nativeEvent: FocusEvent) {\n this.nativeEvent = nativeEvent;\n this.target = nativeEvent.target as EventTarget & Target;\n this.currentTarget = nativeEvent.currentTarget as EventTarget & Target;\n this.relatedTarget = nativeEvent.relatedTarget as Element;\n this.bubbles = nativeEvent.bubbles;\n this.cancelable = nativeEvent.cancelable;\n this.defaultPrevented = nativeEvent.defaultPrevented;\n this.eventPhase = nativeEvent.eventPhase;\n this.isTrusted = nativeEvent.isTrusted;\n this.timeStamp = nativeEvent.timeStamp;\n this.type = type;\n }\n\n isDefaultPrevented(): boolean {\n return this.nativeEvent.defaultPrevented;\n }\n\n preventDefault(): void {\n this.defaultPrevented = true;\n this.nativeEvent.preventDefault();\n }\n\n stopPropagation(): void {\n this.nativeEvent.stopPropagation();\n this.isPropagationStopped = () => true;\n }\n\n isPropagationStopped(): boolean {\n return false;\n }\n\n persist() {}\n}\n\nexport function useSyntheticBlurEvent<Target = Element>(onBlur: (e: ReactFocusEvent<Target>) => void) {\n let stateRef = useRef({\n isFocused: false,\n observer: null as MutationObserver | null\n });\n\n // Clean up MutationObserver on unmount. See below.\n \n useLayoutEffect(() => {\n const state = stateRef.current;\n return () => {\n if (state.observer) {\n state.observer.disconnect();\n state.observer = null;\n }\n };\n }, []);\n\n let dispatchBlur = useEffectEvent((e: SyntheticFocusEvent<Target>) => {\n onBlur?.(e);\n });\n\n // This function is called during a React onFocus event.\n return useCallback((e: ReactFocusEvent<Target>) => {\n // React does not fire onBlur when an element is disabled. https://github.com/facebook/react/issues/9142\n // Most browsers fire a native focusout event in this case, except for Firefox. In that case, we use a\n // MutationObserver to watch for the disabled attribute, and dispatch these events ourselves.\n // For browsers that do, focusout fires before the MutationObserver, so onBlur should not fire twice.\n if (\n e.target instanceof HTMLButtonElement ||\n e.target instanceof HTMLInputElement ||\n e.target instanceof HTMLTextAreaElement ||\n e.target instanceof HTMLSelectElement\n ) {\n stateRef.current.isFocused = true;\n\n let target = e.target;\n let onBlurHandler: EventListenerOrEventListenerObject | null = (e) => {\n stateRef.current.isFocused = false;\n\n if (target.disabled) {\n // For backward compatibility, dispatch a (fake) React synthetic event.\n dispatchBlur(new SyntheticFocusEvent('blur', e as FocusEvent));\n }\n\n // We no longer need the MutationObserver once the target is blurred.\n if (stateRef.current.observer) {\n stateRef.current.observer.disconnect();\n stateRef.current.observer = null;\n }\n };\n\n target.addEventListener('focusout', onBlurHandler, {once: true});\n\n stateRef.current.observer = new MutationObserver(() => {\n if (stateRef.current.isFocused && target.disabled) {\n stateRef.current.observer?.disconnect();\n let relatedTargetEl = target === document.activeElement ? null : document.activeElement;\n target.dispatchEvent(new FocusEvent('blur', {relatedTarget: relatedTargetEl}));\n target.dispatchEvent(new FocusEvent('focusout', {bubbles: true, relatedTarget: relatedTargetEl}));\n }\n });\n\n stateRef.current.observer.observe(target, {attributes: true, attributeFilter: ['disabled']});\n }\n }, [dispatchBlur]);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {DOMAttributes, FocusableElement, FocusEvents} from '@react-types/shared';\nimport {FocusEvent, useCallback} from 'react';\nimport {getOwnerDocument} from '@react-aria/utils';\nimport {useSyntheticBlurEvent} from './utils';\n\nexport interface FocusProps<Target = FocusableElement> extends FocusEvents<Target> {\n /** Whether the focus events should be disabled. */\n isDisabled?: boolean\n}\n\nexport interface FocusResult<Target = FocusableElement> {\n /** Props to spread onto the target element. */\n focusProps: DOMAttributes<Target>\n}\n\n/**\n * Handles focus events for the immediate target.\n * Focus events on child elements will be ignored.\n */\nexport function useFocus<Target extends FocusableElement = FocusableElement>(props: FocusProps<Target>): FocusResult<Target> {\n let {\n isDisabled,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n onFocusChange\n } = props;\n\n const onBlur: FocusProps<Target>['onBlur'] = useCallback((e: FocusEvent<Target>) => {\n if (e.target === e.currentTarget) {\n if (onBlurProp) {\n onBlurProp(e);\n }\n\n if (onFocusChange) {\n onFocusChange(false);\n }\n\n return true;\n }\n }, [onBlurProp, onFocusChange]);\n\n\n const onSyntheticFocus = useSyntheticBlurEvent<Target>(onBlur);\n\n const onFocus: FocusProps<Target>['onFocus'] = useCallback((e: FocusEvent<Target>) => {\n // Double check that document.activeElement actually matches e.target in case a previously chained\n // focus handler already moved focus somewhere else.\n\n const ownerDocument = getOwnerDocument(e.target);\n\n if (e.target === e.currentTarget && ownerDocument.activeElement === e.target) {\n if (onFocusProp) {\n onFocusProp(e);\n }\n\n if (onFocusChange) {\n onFocusChange(true);\n }\n\n onSyntheticFocus(e);\n }\n }, [onFocusChange, onFocusProp, onSyntheticFocus]);\n\n return {\n focusProps: {\n onFocus: (!isDisabled && (onFocusProp || onFocusChange || onBlurProp)) ? onFocus : undefined,\n onBlur: (!isDisabled && (onBlurProp || onFocusChange)) ? onBlur : undefined\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {DOMAttributes} from '@react-types/shared';\nimport {FocusEvent, useCallback, useRef} from 'react';\nimport {useSyntheticBlurEvent} from './utils';\n\nexport interface FocusWithinProps {\n /** Whether the focus within events should be disabled. */\n isDisabled?: boolean,\n /** Handler that is called when the target element or a descendant receives focus. */\n onFocusWithin?: (e: FocusEvent) => void,\n /** Handler that is called when the target element and all descendants lose focus. */\n onBlurWithin?: (e: FocusEvent) => void,\n /** Handler that is called when the the focus within state changes. */\n onFocusWithinChange?: (isFocusWithin: boolean) => void\n}\n\nexport interface FocusWithinResult {\n /** Props to spread onto the target element. */\n focusWithinProps: DOMAttributes\n}\n\n/**\n * Handles focus events for the target and its descendants.\n */\nexport function useFocusWithin(props: FocusWithinProps): FocusWithinResult {\n let {\n isDisabled,\n onBlurWithin,\n onFocusWithin,\n onFocusWithinChange\n } = props;\n let state = useRef({\n isFocusWithin: false\n });\n\n let onBlur = useCallback((e: FocusEvent) => {\n // We don't want to trigger onBlurWithin and then immediately onFocusWithin again\n // when moving focus inside the element. Only trigger if the currentTarget doesn't\n // include the relatedTarget (where focus is moving).\n if (state.current.isFocusWithin && !(e.currentTarget as Element).contains(e.relatedTarget as Element)) {\n state.current.isFocusWithin = false;\n\n if (onBlurWithin) {\n onBlurWithin(e);\n }\n\n if (onFocusWithinChange) {\n onFocusWithinChange(false);\n }\n }\n }, [onBlurWithin, onFocusWithinChange, state]);\n\n let onSyntheticFocus = useSyntheticBlurEvent(onBlur);\n let onFocus = useCallback((e: FocusEvent) => {\n // Double check that document.activeElement actually matches e.target in case a previously chained\n // focus handler already moved focus somewhere else.\n if (!state.current.isFocusWithin && document.activeElement === e.target) {\n if (onFocusWithin) {\n onFocusWithin(e);\n }\n\n if (onFocusWithinChange) {\n onFocusWithinChange(true);\n }\n\n state.current.isFocusWithin = true;\n onSyntheticFocus(e);\n }\n }, [onFocusWithin, onFocusWithinChange, onSyntheticFocus]);\n\n if (isDisabled) {\n return {\n focusWithinProps: {\n // These should not have been null, that would conflict in mergeProps\n onFocus: undefined,\n onBlur: undefined\n }\n };\n }\n\n return {\n focusWithinProps: {\n onFocus,\n onBlur\n }\n };\n}\n","import {DOMAttributes} from '@react-types/shared';\nimport {isFocusVisible, useFocus, useFocusVisibleListener, useFocusWithin} from '@react-aria/interactions';\nimport {useCallback, useRef, useState} from 'react';\n\nexport interface AriaFocusRingProps {\n /**\n * Whether to show the focus ring when something\n * inside the container element has focus (true), or\n * only if the container itself has focus (false).\n * @default 'false'\n */\n within?: boolean,\n\n /** Whether the element is a text input. */\n isTextInput?: boolean,\n\n /** Whether the element will be auto focused. */\n autoFocus?: boolean\n}\n\nexport interface FocusRingAria {\n /** Whether the element is currently focused. */\n isFocused: boolean,\n\n /** Whether keyboard focus should be visible. */\n isFocusVisible: boolean,\n\n /** Props to apply to the container element with the focus ring. */\n focusProps: DOMAttributes\n}\n\n/**\n * Determines whether a focus ring should be shown to indicate keyboard focus.\n * Focus rings are visible only when the user is interacting with a keyboard,\n * not with a mouse, touch, or other input methods.\n */\nexport function useFocusRing(props: AriaFocusRingProps = {}): FocusRingAria {\n let {\n autoFocus = false,\n isTextInput,\n within\n } = props;\n let state = useRef({\n isFocused: false,\n isFocusVisible: autoFocus || isFocusVisible()\n });\n let [isFocused, setFocused] = useState(false);\n let [isFocusVisibleState, setFocusVisible] = useState(() => state.current.isFocused && state.current.isFocusVisible);\n\n let updateState = useCallback(() => setFocusVisible(state.current.isFocused && state.current.isFocusVisible), []);\n\n let onFocusChange = useCallback(isFocused => {\n state.current.isFocused = isFocused;\n setFocused(isFocused);\n updateState();\n }, [updateState]);\n\n useFocusVisibleListener((isFocusVisible) => {\n state.current.isFocusVisible = isFocusVisible;\n updateState();\n }, [], {isTextInput});\n\n let {focusProps} = useFocus({\n isDisabled: within,\n onFocusChange\n });\n\n let {focusWithinProps} = useFocusWithin({\n isDisabled: !within,\n onFocusWithinChange: onFocusChange\n });\n\n return {\n isFocused,\n isFocusVisible: isFocusVisibleState,\n focusProps: within ? focusWithinProps : focusProps\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {DOMAttributes, HoverEvents} from '@react-types/shared';\nimport {useEffect, useMemo, useRef, useState} from 'react';\n\nexport interface HoverProps extends HoverEvents {\n /** Whether the hover events should be disabled. */\n isDisabled?: boolean\n}\n\nexport interface HoverResult {\n /** Props to spread on the target element. */\n hoverProps: DOMAttributes,\n isHovered: boolean\n}\n\n// iOS fires onPointerEnter twice: once with pointerType=\"touch\" and again with pointerType=\"mouse\".\n// We want to ignore these emulated events so they do not trigger hover behavior.\n// See https://bugs.webkit.org/show_bug.cgi?id=214609.\nlet globalIgnoreEmulatedMouseEvents = false;\nlet hoverCount = 0;\n\nfunction setGlobalIgnoreEmulatedMouseEvents() {\n globalIgnoreEmulatedMouseEvents = true;\n\n // Clear globalIgnoreEmulatedMouseEvents after a short timeout. iOS fires onPointerEnter\n // with pointerType=\"mouse\" immediately after onPointerUp and before onFocus. On other\n // devices that don't have this quirk, we don't want to ignore a mouse hover sometime in\n // the distant future because a user previously touched the element.\n setTimeout(() => {\n globalIgnoreEmulatedMouseEvents = false;\n }, 50);\n}\n\nfunction handleGlobalPointerEvent(e) {\n if (e.pointerType === 'touch') {\n setGlobalIgnoreEmulatedMouseEvents();\n }\n}\n\nfunction setupGlobalTouchEvents() {\n if (typeof document === 'undefined') {\n return;\n }\n\n if (typeof PointerEvent !== 'undefined') {\n document.addEventListener('pointerup', handleGlobalPointerEvent);\n } else {\n document.addEventListener('touchend', setGlobalIgnoreEmulatedMouseEvents);\n }\n\n hoverCount++;\n return () => {\n hoverCount--;\n if (hoverCount > 0) {\n return;\n }\n\n if (typeof PointerEvent !== 'undefined') {\n document.removeEventListener('pointerup', handleGlobalPointerEvent);\n } else {\n document.removeEventListener('touchend', setGlobalIgnoreEmulatedMouseEvents);\n }\n };\n}\n\n/**\n * Handles pointer hover interactions for an element. Normalizes behavior\n * across browsers and platforms, and ignores emulated mouse events on touch devices.\n */\nexport function useHover(props: HoverProps): HoverResult {\n let {\n onHoverStart,\n onHoverChange,\n onHoverEnd,\n isDisabled\n } = props;\n\n let [isHovered, setHovered] = useState(false);\n let state = useRef({\n isHovered: false,\n ignoreEmulatedMouseEvents: false,\n pointerType: '',\n target: null\n }).current;\n\n useEffect(setupGlobalTouchEvents, []);\n\n let {hoverProps, triggerHoverEnd} = useMemo(() => {\n let triggerHoverStart = (event, pointerType) => {\n state.pointerType = pointerType;\n if (isDisabled || pointerType === 'touch' || state.isHovered || !event.currentTarget.contains(event.target)) {\n return;\n }\n\n state.isHovered = true;\n let target = event.currentTarget;\n state.target = target;\n\n if (onHoverStart) {\n onHoverStart({\n type: 'hoverstart',\n target,\n pointerType\n });\n }\n\n if (onHoverChange) {\n onHoverChange(true);\n }\n\n setHovered(true);\n };\n\n let triggerHoverEnd = (event, pointerType) => {\n state.pointerType = '';\n state.target = null;\n\n if (pointerType === 'touch' || !state.isHovered) {\n return;\n }\n\n state.isHovered = false;\n let target = event.currentTarget;\n if (onHoverEnd) {\n onHoverEnd({\n type: 'hoverend',\n target,\n pointerType\n });\n }\n\n if (onHoverChange) {\n onHoverChange(false);\n }\n\n setHovered(false);\n };\n\n let hoverProps: DOMAttributes = {};\n\n if (typeof PointerEvent !== 'undefined') {\n hoverProps.onPointerEnter = (e) => {\n if (globalIgnoreEmulatedMouseEvents && e.pointerType === 'mouse') {\n return;\n }\n\n triggerHoverStart(e, e.pointerType);\n };\n\n hoverProps.onPointerLeave = (e) => {\n if (!isDisabled && e.currentTarget.contains(e.target as Element)) {\n triggerHoverEnd(e, e.pointerType);\n }\n };\n } else {\n hoverProps.onTouchStart = () => {\n state.ignoreEmulatedMouseEvents = true;\n };\n\n hoverProps.onMouseEnter = (e) => {\n if (!state.ignoreEmulatedMouseEvents && !globalIgnoreEmulatedMouseEvents) {\n triggerHoverStart(e, 'mouse');\n }\n\n state.ignoreEmulatedMouseEvents = false;\n };\n\n hoverProps.onMouseLeave = (e) => {\n if (!isDisabled && e.currentTarget.contains(e.target as Element)) {\n triggerHoverEnd(e, 'mouse');\n }\n };\n }\n return {hoverProps, triggerHoverEnd};\n }, [onHoverStart, onHoverChange, onHoverEnd, isDisabled, state]);\n\n useEffect(() => {\n // Call the triggerHoverEnd as soon as isDisabled changes to true\n // Safe to call triggerHoverEnd, it will early return if we aren't currently hovering\n if (isDisabled) {\n triggerHoverEnd({currentTarget: state.target}, state.pointerType);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDisabled]);\n\n return {\n hoverProps,\n isHovered\n };\n}\n","var i=Object.defineProperty;var d=(t,e,n)=>e in t?i(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var r=(t,e,n)=>(d(t,typeof e!=\"symbol\"?e+\"\":e,n),n);class o{constructor(){r(this,\"current\",this.detect());r(this,\"handoffState\",\"pending\");r(this,\"currentId\",0)}set(e){this.current!==e&&(this.handoffState=\"pending\",this.currentId=0,this.current=e)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current===\"server\"}get isClient(){return this.current===\"client\"}detect(){return typeof window==\"undefined\"||typeof document==\"undefined\"?\"server\":\"client\"}handoff(){this.handoffState===\"pending\"&&(this.handoffState=\"complete\")}get isHandoffComplete(){return this.handoffState===\"complete\"}}let s=new o;export{s as env};\n","import{env as n}from'./env.js';function u(r){return n.isServer?null:r instanceof Node?r.ownerDocument:r!=null&&r.hasOwnProperty(\"current\")&&r.current instanceof Node?r.current.ownerDocument:document}export{u as getOwnerDocument};\n","function t(e){typeof queueMicrotask==\"function\"?queueMicrotask(e):Promise.resolve().then(e).catch(o=>setTimeout(()=>{throw o}))}export{t as microTask};\n","import{microTask as i}from'./micro-task.js';function o(){let n=[],r={addEventListener(e,t,s,a){return e.addEventListener(t,s,a),r.add(()=>e.removeEventListener(t,s,a))},requestAnimationFrame(...e){let t=requestAnimationFrame(...e);return r.add(()=>cancelAnimationFrame(t))},nextFrame(...e){return r.requestAnimationFrame(()=>r.requestAnimationFrame(...e))},setTimeout(...e){let t=setTimeout(...e);return r.add(()=>clearTimeout(t))},microTask(...e){let t={current:!0};return i(()=>{t.current&&e[0]()}),r.add(()=>{t.current=!1})},style(e,t,s){let a=e.style.getPropertyValue(t);return Object.assign(e.style,{[t]:s}),this.add(()=>{Object.assign(e.style,{[t]:a})})},group(e){let t=o();return e(t),this.add(()=>t.dispose())},add(e){return n.includes(e)||n.push(e),()=>{let t=n.indexOf(e);if(t>=0)for(let s of n.splice(t,1))s()}},dispose(){for(let e of n.splice(0))e()}};return r}export{o as disposables};\n","import{useEffect as s,useState as o}from\"react\";import{disposables as t}from'../utils/disposables.js';function p(){let[e]=o(t);return s(()=>()=>e.dispose(),[e]),e}export{p as useDisposables};\n","import{useEffect as f,useLayoutEffect as c}from\"react\";import{env as i}from'../utils/env.js';let n=(e,t)=>{i.isServer?f(e,t):c(e,t)};export{n as useIsoMorphicEffect};\n","import{useRef as t}from\"react\";import{useIsoMorphicEffect as o}from'./use-iso-morphic-effect.js';function s(e){let r=t(e);return o(()=>{r.current=e},[e]),r}export{s as useLatestValue};\n","import a from\"react\";import{useLatestValue as n}from'./use-latest-value.js';let o=function(t){let e=n(t);return a.useCallback((...r)=>e.current(...r),[e])};export{o as useEvent};\n","import{useMemo as o,useReducer as h}from\"react\";import{useIsoMorphicEffect as s}from'./use-iso-morphic-effect.js';function f(e){if(e===null)return{width:0,height:0};let{width:t,height:r}=e.getBoundingClientRect();return{width:t,height:r}}function d(e,t=!1){let[r,u]=h(()=>({}),{}),i=o(()=>f(e),[e,r]);return s(()=>{if(!e)return;let n=new ResizeObserver(u);return n.observe(e),()=>{n.disconnect()}},[e]),t?{width:`${i.width}px`,height:`${i.height}px`}:i}export{d as useElementSize};\n","class a extends Map{constructor(t){super();this.factory=t}get(t){let e=super.get(t);return e===void 0&&(e=this.factory(t),this.set(t,e)),e}}export{a as DefaultMap};\n","function a(o,r){let t=o(),n=new Set;return{getSnapshot(){return t},subscribe(e){return n.add(e),()=>n.delete(e)},dispatch(e,...s){let i=r[e].call(t,...s);i&&(t=i,n.forEach(c=>c()))}}}export{a as createStore};\n","import{useSyncExternalStore as e}from\"react\";function o(t){return e(t.subscribe,t.getSnapshot,t.getSnapshot)}export{o as useStore};\n","import{useId as n}from\"react\";import{DefaultMap as f}from'../utils/default-map.js';import{createStore as u}from'../utils/store.js';import{useIsoMorphicEffect as c}from'./use-iso-morphic-effect.js';import{useStore as l}from'./use-store.js';let p=new f(()=>u(()=>[],{ADD(r){return this.includes(r)?this:[...this,r]},REMOVE(r){let e=this.indexOf(r);if(e===-1)return this;let t=this.slice();return t.splice(e,1),t}}));function x(r,e){let t=p.get(e),i=n(),h=l(t);if(c(()=>{if(r)return t.dispatch(\"ADD\",i),()=>t.dispatch(\"REMOVE\",i)},[t,r]),!r)return!1;let s=h.indexOf(i),o=h.length;return s===-1&&(s=o,o+=1),s===o-1}export{x as useIsTopLayer};\n","import{disposables as M}from'../utils/disposables.js';import{getOwnerDocument as b}from'../utils/owner.js';import{useIsTopLayer as L}from'./use-is-top-layer.js';import{useIsoMorphicEffect as T}from'./use-iso-morphic-effect.js';let f=new Map,u=new Map;function h(t){var e;let r=(e=u.get(t))!=null?e:0;return u.set(t,r+1),r!==0?()=>m(t):(f.set(t,{\"aria-hidden\":t.getAttribute(\"aria-hidden\"),inert:t.inert}),t.setAttribute(\"aria-hidden\",\"true\"),t.inert=!0,()=>m(t))}function m(t){var i;let r=(i=u.get(t))!=null?i:1;if(r===1?u.delete(t):u.set(t,r-1),r!==1)return;let e=f.get(t);e&&(e[\"aria-hidden\"]===null?t.removeAttribute(\"aria-hidden\"):t.setAttribute(\"aria-hidden\",e[\"aria-hidden\"]),t.inert=e.inert,f.delete(t))}function y(t,{allowed:r,disallowed:e}={}){let i=L(t,\"inert-others\");T(()=>{var d,c;if(!i)return;let a=M();for(let n of(d=e==null?void 0:e())!=null?d:[])n&&a.add(h(n));let s=(c=r==null?void 0:r())!=null?c:[];for(let n of s){if(!n)continue;let l=b(n);if(!l)continue;let o=n.parentElement;for(;o&&o!==l.body;){for(let p of o.children)s.some(E=>p.contains(E))||a.add(h(p));o=o.parentElement}}return a.dispose},[i,r,e])}export{y as useInertOthers};\n","import{useEffect as o}from\"react\";import{disposables as u}from'../utils/disposables.js';import{useLatestValue as c}from'./use-latest-value.js';function m(s,n,l){let i=c(t=>{let e=t.getBoundingClientRect();e.x===0&&e.y===0&&e.width===0&&e.height===0&&l()});o(()=>{if(!s)return;let t=n===null?null:n instanceof HTMLElement?n:n.current;if(!t)return;let e=u();if(typeof ResizeObserver!=\"undefined\"){let r=new ResizeObserver(()=>i.current(t));r.observe(t),e.add(()=>r.disconnect())}if(typeof IntersectionObserver!=\"undefined\"){let r=new IntersectionObserver(()=>i.current(t));r.observe(t),e.add(()=>r.disconnect())}return()=>e.dispose()},[n,i,s])}export{m as useOnDisappear};\n","function u(r,n,...a){if(r in n){let e=n[r];return typeof e==\"function\"?e(...a):e}let t=new Error(`Tried to handle \"${r}\" but there is no handler defined. Only defined handlers are: ${Object.keys(n).map(e=>`\"${e}\"`).join(\", \")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,u),t}export{u as match};\n","import{disposables as N}from'./disposables.js';import{match as L}from'./match.js';import{getOwnerDocument as E}from'./owner.js';let f=[\"[contentEditable=true]\",\"[tabindex]\",\"a[href]\",\"area[href]\",\"button:not([disabled])\",\"iframe\",\"input:not([disabled])\",\"select:not([disabled])\",\"textarea:not([disabled])\"].map(e=>`${e}:not([tabindex='-1'])`).join(\",\"),p=[\"[data-autofocus]\"].map(e=>`${e}:not([tabindex='-1'])`).join(\",\");var F=(n=>(n[n.First=1]=\"First\",n[n.Previous=2]=\"Previous\",n[n.Next=4]=\"Next\",n[n.Last=8]=\"Last\",n[n.WrapAround=16]=\"WrapAround\",n[n.NoScroll=32]=\"NoScroll\",n[n.AutoFocus=64]=\"AutoFocus\",n))(F||{}),T=(o=>(o[o.Error=0]=\"Error\",o[o.Overflow=1]=\"Overflow\",o[o.Success=2]=\"Success\",o[o.Underflow=3]=\"Underflow\",o))(T||{}),y=(t=>(t[t.Previous=-1]=\"Previous\",t[t.Next=1]=\"Next\",t))(y||{});function b(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(f)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}function S(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(p)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}var h=(t=>(t[t.Strict=0]=\"Strict\",t[t.Loose=1]=\"Loose\",t))(h||{});function A(e,r=0){var t;return e===((t=E(e))==null?void 0:t.body)?!1:L(r,{[0](){return e.matches(f)},[1](){let u=e;for(;u!==null;){if(u.matches(f))return!0;u=u.parentElement}return!1}})}function G(e){let r=E(e);N().nextFrame(()=>{r&&!A(r.activeElement,0)&&I(e)})}var H=(t=>(t[t.Keyboard=0]=\"Keyboard\",t[t.Mouse=1]=\"Mouse\",t))(H||{});typeof window!=\"undefined\"&&typeof document!=\"undefined\"&&(document.addEventListener(\"keydown\",e=>{e.metaKey||e.altKey||e.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible=\"\")},!0),document.addEventListener(\"click\",e=>{e.detail===1?delete document.documentElement.dataset.headlessuiFocusVisible:e.detail===0&&(document.documentElement.dataset.headlessuiFocusVisible=\"\")},!0));function I(e){e==null||e.focus({preventScroll:!0})}let w=[\"textarea\",\"input\"].join(\",\");function O(e){var r,t;return(t=(r=e==null?void 0:e.matches)==null?void 0:r.call(e,w))!=null?t:!1}function _(e,r=t=>t){return e.slice().sort((t,u)=>{let o=r(t),c=r(u);if(o===null||c===null)return 0;let l=o.compareDocumentPosition(c);return l&Node.DOCUMENT_POSITION_FOLLOWING?-1:l&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function j(e,r){return P(b(),r,{relativeTo:e})}function P(e,r,{sorted:t=!0,relativeTo:u=null,skipElements:o=[]}={}){let c=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:e.ownerDocument,l=Array.isArray(e)?t?_(e):e:r&64?S(e):b(e);o.length>0&&l.length>1&&(l=l.filter(s=>!o.some(a=>a!=null&&\"current\"in a?(a==null?void 0:a.current)===s:a===s))),u=u!=null?u:c.activeElement;let n=(()=>{if(r&5)return 1;if(r&10)return-1;throw new Error(\"Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last\")})(),x=(()=>{if(r&1)return 0;if(r&2)return Math.max(0,l.indexOf(u))-1;if(r&4)return Math.max(0,l.indexOf(u))+1;if(r&8)return l.length-1;throw new Error(\"Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last\")})(),M=r&32?{preventScroll:!0}:{},m=0,d=l.length,i;do{if(m>=d||m+d<=0)return 0;let s=x+m;if(r&16)s=(s+d)%d;else{if(s<0)return 3;if(s>=d)return 1}i=l[s],i==null||i.focus(M),m+=n}while(i!==c.activeElement);return r&6&&O(i)&&i.select(),2}export{F as Focus,T as FocusResult,h as FocusableMode,I as focusElement,j as focusFrom,P as focusIn,f as focusableSelector,S as getAutoFocusableElements,b as getFocusableElements,A as isFocusableElement,G as restoreFocusIfNecessary,_ as sortByDomNode};\n","function t(){return/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0}function i(){return/Android/gi.test(window.navigator.userAgent)}function n(){return t()||i()}export{i as isAndroid,t as isIOS,n as isMobile};\n","import{useEffect as c}from\"react\";import{useLatestValue as a}from'./use-latest-value.js';function i(t,e,o,n){let u=a(o);c(()=>{if(!t)return;function r(m){u.current(m)}return document.addEventListener(e,r,n),()=>document.removeEventListener(e,r,n)},[t,e,n])}export{i as useDocumentEvent};\n","import{useEffect as a}from\"react\";import{useLatestValue as f}from'./use-latest-value.js';function s(t,e,o,n){let i=f(o);a(()=>{if(!t)return;function r(d){i.current(d)}return window.addEventListener(e,r,n),()=>window.removeEventListener(e,r,n)},[t,e,n])}export{s as useWindowEvent};\n","import{useCallback as T,useRef as d}from\"react\";import{FocusableMode as y,isFocusableElement as M}from'../utils/focus-management.js';import{isMobile as g}from'../utils/platform.js';import{useDocumentEvent as c}from'./use-document-event.js';import{useIsTopLayer as L}from'./use-is-top-layer.js';import{useLatestValue as b}from'./use-latest-value.js';import{useWindowEvent as P}from'./use-window-event.js';const E=30;function R(p,f,C){let u=L(p,\"outside-click\"),m=b(C),s=T(function(e,n){if(e.defaultPrevented)return;let r=n(e);if(r===null||!r.getRootNode().contains(r)||!r.isConnected)return;let h=function l(o){return typeof o==\"function\"?l(o()):Array.isArray(o)||o instanceof Set?o:[o]}(f);for(let l of h)if(l!==null&&(l.contains(r)||e.composed&&e.composedPath().includes(l)))return;return!M(r,y.Loose)&&r.tabIndex!==-1&&e.preventDefault(),m.current(e,r)},[m,f]),i=d(null);c(u,\"pointerdown\",t=>{var e,n;i.current=((n=(e=t.composedPath)==null?void 0:e.call(t))==null?void 0:n[0])||t.target},!0),c(u,\"mousedown\",t=>{var e,n;i.current=((n=(e=t.composedPath)==null?void 0:e.call(t))==null?void 0:n[0])||t.target},!0),c(u,\"click\",t=>{g()||i.current&&(s(t,()=>i.current),i.current=null)},!0);let a=d({x:0,y:0});c(u,\"touchstart\",t=>{a.current.x=t.touches[0].clientX,a.current.y=t.touches[0].clientY},!0),c(u,\"touchend\",t=>{let e={x:t.changedTouches[0].clientX,y:t.changedTouches[0].clientY};if(!(Math.abs(e.x-a.current.x)>=E||Math.abs(e.y-a.current.y)>=E))return s(t,()=>t.target instanceof HTMLElement?t.target:null)},!0),P(u,\"blur\",t=>s(t,()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null),!0)}export{R as useOutsideClick};\n","import{useMemo as t}from\"react\";import{getOwnerDocument as o}from'../utils/owner.js';function n(...e){return t(()=>o(...e),[...e])}export{n as useOwnerDocument};\n","import{useMemo as a}from\"react\";function e(t,u){return a(()=>{var n;if(t.type)return t.type;let r=(n=t.as)!=null?n:\"button\";if(typeof r==\"string\"&&r.toLowerCase()===\"button\"||(u==null?void 0:u.tagName)===\"BUTTON\"&&!u.hasAttribute(\"type\"))return\"button\"},[t.type,t.as,u])}export{e as useResolveButtonType};\n","function d(){let r;return{before({doc:e}){var l;let o=e.documentElement,t=(l=e.defaultView)!=null?l:window;r=Math.max(0,t.innerWidth-o.clientWidth)},after({doc:e,d:o}){let t=e.documentElement,l=Math.max(0,t.clientWidth-t.offsetWidth),n=Math.max(0,r-l);o.style(t,\"paddingRight\",`${n}px`)}}}export{d as adjustScrollbarPadding};\n","import{disposables as s}from'../../utils/disposables.js';import{createStore as i}from'../../utils/store.js';import{adjustScrollbarPadding as l}from'./adjust-scrollbar-padding.js';import{handleIOSLocking as d}from'./handle-ios-locking.js';import{preventScroll as p}from'./prevent-scroll.js';function m(e){let n={};for(let t of e)Object.assign(n,t(n));return n}let a=i(()=>new Map,{PUSH(e,n){var o;let t=(o=this.get(e))!=null?o:{doc:e,count:0,d:s(),meta:new Set};return t.count++,t.meta.add(n),this.set(e,t),this},POP(e,n){let t=this.get(e);return t&&(t.count--,t.meta.delete(n)),this},SCROLL_PREVENT({doc:e,d:n,meta:t}){let o={doc:e,d:n,meta:m(t)},c=[d(),l(),p()];c.forEach(({before:r})=>r==null?void 0:r(o)),c.forEach(({after:r})=>r==null?void 0:r(o))},SCROLL_ALLOW({d:e}){e.dispose()},TEARDOWN({doc:e}){this.delete(e)}});a.subscribe(()=>{let e=a.getSnapshot(),n=new Map;for(let[t]of e)n.set(t,t.documentElement.style.overflow);for(let t of e.values()){let o=n.get(t.doc)===\"hidden\",c=t.count!==0;(c&&!o||!c&&o)&&a.dispatch(t.count>0?\"SCROLL_PREVENT\":\"SCROLL_ALLOW\",t),t.count===0&&a.dispatch(\"TEARDOWN\",t)}});export{a as overflows};\n","import{disposables as m}from'../../utils/disposables.js';import{isIOS as u}from'../../utils/platform.js';function d(){return u()?{before({doc:r,d:n,meta:c}){function o(a){return c.containers.flatMap(l=>l()).some(l=>l.contains(a))}n.microTask(()=>{var s;if(window.getComputedStyle(r.documentElement).scrollBehavior!==\"auto\"){let t=m();t.style(r.documentElement,\"scrollBehavior\",\"auto\"),n.add(()=>n.microTask(()=>t.dispose()))}let a=(s=window.scrollY)!=null?s:window.pageYOffset,l=null;n.addEventListener(r,\"click\",t=>{if(t.target instanceof HTMLElement)try{let e=t.target.closest(\"a\");if(!e)return;let{hash:f}=new URL(e.href),i=r.querySelector(f);i&&!o(i)&&(l=i)}catch{}},!0),n.addEventListener(r,\"touchstart\",t=>{if(t.target instanceof HTMLElement)if(o(t.target)){let e=t.target;for(;e.parentElement&&o(e.parentElement);)e=e.parentElement;n.style(e,\"overscrollBehavior\",\"contain\")}else n.style(t.target,\"touchAction\",\"none\")}),n.addEventListener(r,\"touchmove\",t=>{if(t.target instanceof HTMLElement){if(t.target.tagName===\"INPUT\")return;if(o(t.target)){let e=t.target;for(;e.parentElement&&e.dataset.headlessuiPortal!==\"\"&&!(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth);)e=e.parentElement;e.dataset.headlessuiPortal===\"\"&&t.preventDefault()}else t.preventDefault()}},{passive:!1}),n.add(()=>{var e;let t=(e=window.scrollY)!=null?e:window.pageYOffset;a!==t&&window.scrollTo(0,a),l&&l.isConnected&&(l.scrollIntoView({block:\"nearest\"}),l=null)})})}}:{}}export{d as handleIOSLocking};\n","function r(){return{before({doc:e,d:o}){o.style(e.documentElement,\"overflow\",\"hidden\")}}}export{r as preventScroll};\n","import{useDocumentOverflowLockedEffect as l}from'./document-overflow/use-document-overflow.js';import{useIsTopLayer as m}from'./use-is-top-layer.js';function f(e,c,n=()=>[document.body]){let r=m(e,\"scroll-lock\");l(r,c,t=>{var o;return{containers:[...(o=t.containers)!=null?o:[],n]}})}export{f as useScrollLock};\n","import{useStore as s}from'../../hooks/use-store.js';import{useIsoMorphicEffect as u}from'../use-iso-morphic-effect.js';import{overflows as t}from'./overflow-store.js';function a(r,e,n=()=>({containers:[]})){let f=s(t),o=e?f.get(e):void 0,i=o?o.count>0:!1;return u(()=>{if(!(!e||!r))return t.dispatch(\"PUSH\",e,n),()=>t.dispatch(\"POP\",e,n)},[r,e]),i}export{a as useDocumentOverflowLockedEffect};\n","import{useEffect as l,useRef as i}from\"react\";import{useEvent as r}from'./use-event.js';let u=Symbol();function T(t,n=!0){return Object.assign(t,{[u]:n})}function y(...t){let n=i(t);l(()=>{n.current=t},[t]);let c=r(e=>{for(let o of n.current)o!=null&&(typeof o==\"function\"?o(e):o.current=e)});return t.every(e=>e==null||(e==null?void 0:e[u]))?void 0:c}export{T as optionalRef,y as useSyncRefs};\n","let a=/([\\u2700-\\u27BF]|[\\uE000-\\uF8FF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDFFF]|[\\u2011-\\u26FF]|\\uD83E[\\uDD10-\\uDDFF])/g;function o(e){var r,i;let n=(r=e.innerText)!=null?r:\"\",t=e.cloneNode(!0);if(!(t instanceof HTMLElement))return n;let u=!1;for(let f of t.querySelectorAll('[hidden],[aria-hidden],[role=\"img\"]'))f.remove(),u=!0;let l=u?(i=t.innerText)!=null?i:\"\":n;return a.test(l)&&(l=l.replace(a,\"\")),l}function g(e){let n=e.getAttribute(\"aria-label\");if(typeof n==\"string\")return n.trim();let t=e.getAttribute(\"aria-labelledby\");if(t){let u=t.split(\" \").map(l=>{let r=document.getElementById(l);if(r){let i=r.getAttribute(\"aria-label\");return typeof i==\"string\"?i.trim():o(r).trim()}return null}).filter(Boolean);if(u.length>0)return u.join(\", \")}return o(e).trim()}export{g as getTextValue};\n","import{useRef as l}from\"react\";import{getTextValue as i}from'../utils/get-text-value.js';import{useEvent as o}from'./use-event.js';function s(c){let t=l(\"\"),r=l(\"\");return o(()=>{let e=c.current;if(!e)return\"\";let u=e.innerText;if(t.current===u)return r.current;let n=i(e).trim().toLowerCase();return t.current=u,r.current=n,n})}export{s as useTextValue};\n","import{useRef as o}from\"react\";function t(e){return[e.screenX,e.screenY]}function u(){let e=o([-1,-1]);return{wasMoved(r){let n=t(r);return e.current[0]===n[0]&&e.current[1]===n[1]?!1:(e.current=n,!0)},update(r){e.current=t(r)}}}export{u as useTrackedPointer};\n","var T,b;import{useRef as c,useState as S}from\"react\";import{disposables as m}from'../utils/disposables.js';import{useDisposables as g}from'./use-disposables.js';import{useFlags as y}from'./use-flags.js';import{useIsoMorphicEffect as A}from'./use-iso-morphic-effect.js';typeof process!=\"undefined\"&&typeof globalThis!=\"undefined\"&&typeof Element!=\"undefined\"&&((T=process==null?void 0:process.env)==null?void 0:T[\"NODE_ENV\"])===\"test\"&&typeof((b=Element==null?void 0:Element.prototype)==null?void 0:b.getAnimations)==\"undefined\"&&(Element.prototype.getAnimations=function(){return console.warn([\"Headless UI has polyfilled `Element.prototype.getAnimations` for your tests.\",\"Please install a proper polyfill e.g. `jsdom-testing-mocks`, to silence these warnings.\",\"\",\"Example usage:\",\"```js\",\"import { mockAnimationsApi } from 'jsdom-testing-mocks'\",\"mockAnimationsApi()\",\"```\"].join(`\n`)),[]});var L=(r=>(r[r.None=0]=\"None\",r[r.Closed=1]=\"Closed\",r[r.Enter=2]=\"Enter\",r[r.Leave=4]=\"Leave\",r))(L||{});function R(t){let n={};for(let e in t)t[e]===!0&&(n[`data-${e}`]=\"\");return n}function x(t,n,e,i){let[r,o]=S(e),{hasFlag:s,addFlag:a,removeFlag:l}=y(t&&r?3:0),u=c(!1),f=c(!1),E=g();return A(()=>{var d;if(t){if(e&&o(!0),!n){e&&a(3);return}return(d=i==null?void 0:i.start)==null||d.call(i,e),C(n,{inFlight:u,prepare(){f.current?f.current=!1:f.current=u.current,u.current=!0,!f.current&&(e?(a(3),l(4)):(a(4),l(2)))},run(){f.current?e?(l(3),a(4)):(l(4),a(3)):e?l(1):a(1)},done(){var p;f.current&&typeof n.getAnimations==\"function\"&&n.getAnimations().length>0||(u.current=!1,l(7),e||o(!1),(p=i==null?void 0:i.end)==null||p.call(i,e))}})}},[t,e,n,E]),t?[r,{closed:s(1),enter:s(2),leave:s(4),transition:s(2)||s(4)}]:[e,{closed:void 0,enter:void 0,leave:void 0,transition:void 0}]}function C(t,{prepare:n,run:e,done:i,inFlight:r}){let o=m();return j(t,{prepare:n,inFlight:r}),o.nextFrame(()=>{e(),o.requestAnimationFrame(()=>{o.add(M(t,i))})}),o.dispose}function M(t,n){var o,s;let e=m();if(!t)return e.dispose;let i=!1;e.add(()=>{i=!0});let r=(s=(o=t.getAnimations)==null?void 0:o.call(t).filter(a=>a instanceof CSSTransition))!=null?s:[];return r.length===0?(n(),e.dispose):(Promise.allSettled(r.map(a=>a.finished)).then(()=>{i||n()}),e.dispose)}function j(t,{inFlight:n,prepare:e}){if(n!=null&&n.current){e();return}let i=t.style.transition;t.style.transition=\"none\",e(),t.offsetHeight,t.style.transition=i}export{R as transitionDataAttributes,x as useTransition};\n","import{useCallback as r,useState as b}from\"react\";function c(u=0){let[t,l]=b(u),g=r(e=>l(e),[t]),s=r(e=>l(a=>a|e),[t]),m=r(e=>(t&e)===e,[t]),n=r(e=>l(a=>a&~e),[l]),F=r(e=>l(a=>a^e),[l]);return{flags:t,setFlag:g,addFlag:s,hasFlag:m,removeFlag:n,toggleFlag:F}}export{c as useFlags};\n","import { isShadowRoot, isHTMLElement } from '@floating-ui/utils/dom';\n\nfunction activeElement(doc) {\n let activeElement = doc.activeElement;\n while (((_activeElement = activeElement) == null || (_activeElement = _activeElement.shadowRoot) == null ? void 0 : _activeElement.activeElement) != null) {\n var _activeElement;\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\nfunction contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n\n // then fallback to custom implementation with Shadow DOM support\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n // @ts-ignore\n next = next.parentNode || next.host;\n }\n }\n\n // Give up, the result is false\n return false;\n}\n// Avoid Chrome DevTools blue warning.\nfunction getPlatform() {\n const uaData = navigator.userAgentData;\n if (uaData != null && uaData.platform) {\n return uaData.platform;\n }\n return navigator.platform;\n}\nfunction getUserAgent() {\n const uaData = navigator.userAgentData;\n if (uaData && Array.isArray(uaData.brands)) {\n return uaData.brands.map(_ref => {\n let {\n brand,\n version\n } = _ref;\n return brand + \"/\" + version;\n }).join(' ');\n }\n return navigator.userAgent;\n}\n\n// License: https://github.com/adobe/react-spectrum/blob/b35d5c02fe900badccd0cf1a8f23bb593419f238/packages/@react-aria/utils/src/isVirtualEvent.ts\nfunction isVirtualClick(event) {\n // FIXME: Firefox is now emitting a deprecation warning for `mozInputSource`.\n // Try to find a workaround for this. `react-aria` source still has the check.\n if (event.mozInputSource === 0 && event.isTrusted) {\n return true;\n }\n if (isAndroid() && event.pointerType) {\n return event.type === 'click' && event.buttons === 1;\n }\n return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n if (isJSDOM()) return false;\n return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse' ||\n // iOS VoiceOver returns 0.333• for width/height.\n event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'touch';\n}\nfunction isSafari() {\n // Chrome DevTools does not complain about navigator.vendor\n return /apple/i.test(navigator.vendor);\n}\nfunction isAndroid() {\n const re = /android/i;\n return re.test(getPlatform()) || re.test(getUserAgent());\n}\nfunction isMac() {\n return getPlatform().toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\n}\nfunction isJSDOM() {\n return getUserAgent().includes('jsdom/');\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n // On some Linux machines with Chromium, mouse inputs return a `pointerType`\n // of \"pen\": https://github.com/floating-ui/floating-ui/issues/2015\n const values = ['mouse', 'pen'];\n if (!strict) {\n values.push('', undefined);\n }\n return values.includes(pointerType);\n}\nfunction isReactEvent(event) {\n return 'nativeEvent' in event;\n}\nfunction isRootElement(element) {\n return element.matches('html,body');\n}\nfunction getDocument(node) {\n return (node == null ? void 0 : node.ownerDocument) || document;\n}\nfunction isEventTargetWithin(event, node) {\n if (node == null) {\n return false;\n }\n if ('composedPath' in event) {\n return event.composedPath().includes(node);\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n const e = event;\n return e.target != null && node.contains(e.target);\n}\nfunction getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support\n // `composedPath()`, but browsers without shadow DOM don't.\n return event.target;\n}\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),\" + \"[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nfunction isTypeableElement(element) {\n return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\nfunction stopEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n}\nfunction isTypeableCombobox(element) {\n if (!element) return false;\n return element.getAttribute('role') === 'combobox' && isTypeableElement(element);\n}\n\nexport { TYPEABLE_SELECTOR, activeElement, contains, getDocument, getPlatform, getTarget, getUserAgent, isAndroid, isEventTargetWithin, isJSDOM, isMac, isMouseLikePointerType, isReactEvent, isRootElement, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, stopEvent };\n","/**\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","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 return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', '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 { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL <body> scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\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 {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\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 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 && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\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","import * as React from 'react';\nimport { useLayoutEffect, useEffect, useRef } from 'react';\nimport { stopEvent, getDocument, isMouseLikePointerType, contains, activeElement, isSafari, isTypeableCombobox, isVirtualClick, isVirtualPointerEvent, getTarget, getPlatform, isTypeableElement, isReactEvent, isRootElement, isEventTargetWithin, isMac, getUserAgent } from '@floating-ui/react/utils';\nimport { floor, evaluate, max, min, round } from '@floating-ui/utils';\nimport { getComputedStyle, isElement, getNodeName, isHTMLElement, getWindow, isLastTraversableNode, getParentNode, isWebKit } from '@floating-ui/utils/dom';\nimport { tabbable, isTabbable } from 'tabbable';\nimport * as ReactDOM from 'react-dom';\nimport { getOverflowAncestors, useFloating as useFloating$1, offset, detectOverflow } from '@floating-ui/react-dom';\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/react-dom';\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/react-utils#usemergerefs\n */\nfunction useMergeRefs(refs) {\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return value => {\n refs.forEach(ref => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}\n\n// https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\nconst SafeReact = {\n ...React\n};\n\nconst useInsertionEffect = SafeReact.useInsertionEffect;\nconst useSafeInsertionEffect = useInsertionEffect || (fn => fn());\nfunction useEffectEvent(callback) {\n const ref = React.useRef(() => {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error('Cannot call an event handler while rendering.');\n }\n });\n useSafeInsertionEffect(() => {\n ref.current = callback;\n });\n return React.useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return ref.current == null ? void 0 : ref.current(...args);\n }, []);\n}\n\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nfunction isDifferentRow(index, cols, prevRow) {\n return Math.floor(index / cols) !== prevRow;\n}\nfunction isIndexOutOfBounds(listRef, index) {\n return index < 0 || index >= listRef.current.length;\n}\nfunction getMinIndex(listRef, disabledIndices) {\n return findNonDisabledIndex(listRef, {\n disabledIndices\n });\n}\nfunction getMaxIndex(listRef, disabledIndices) {\n return findNonDisabledIndex(listRef, {\n decrement: true,\n startingIndex: listRef.current.length,\n disabledIndices\n });\n}\nfunction findNonDisabledIndex(listRef, _temp) {\n let {\n startingIndex = -1,\n decrement = false,\n disabledIndices,\n amount = 1\n } = _temp === void 0 ? {} : _temp;\n const list = listRef.current;\n let index = startingIndex;\n do {\n index += decrement ? -amount : amount;\n } while (index >= 0 && index <= list.length - 1 && isDisabled(list, index, disabledIndices));\n return index;\n}\nfunction getGridNavigatedIndex(elementsRef, _ref) {\n let {\n event,\n orientation,\n loop,\n rtl,\n cols,\n disabledIndices,\n minIndex,\n maxIndex,\n prevIndex,\n stopEvent: stop = false\n } = _ref;\n let nextIndex = prevIndex;\n if (event.key === ARROW_UP) {\n stop && stopEvent(event);\n if (prevIndex === -1) {\n nextIndex = maxIndex;\n } else {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: nextIndex,\n amount: cols,\n decrement: true,\n disabledIndices\n });\n if (loop && (prevIndex - cols < minIndex || nextIndex < 0)) {\n const col = prevIndex % cols;\n const maxCol = maxIndex % cols;\n const offset = maxIndex - (maxCol - col);\n if (maxCol === col) {\n nextIndex = maxIndex;\n } else {\n nextIndex = maxCol > col ? offset : offset - cols;\n }\n }\n }\n if (isIndexOutOfBounds(elementsRef, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === ARROW_DOWN) {\n stop && stopEvent(event);\n if (prevIndex === -1) {\n nextIndex = minIndex;\n } else {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex,\n amount: cols,\n disabledIndices\n });\n if (loop && prevIndex + cols > maxIndex) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex % cols - cols,\n amount: cols,\n disabledIndices\n });\n }\n }\n if (isIndexOutOfBounds(elementsRef, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n\n // Remains on the same row/column.\n if (orientation === 'both') {\n const prevRow = floor(prevIndex / cols);\n if (event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT)) {\n stop && stopEvent(event);\n if (prevIndex % cols !== cols - 1) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex,\n disabledIndices\n });\n if (loop && isDifferentRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n } else if (loop) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n if (isDifferentRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT)) {\n stop && stopEvent(event);\n if (prevIndex % cols !== 0) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex,\n decrement: true,\n disabledIndices\n });\n if (loop && isDifferentRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n } else if (loop) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n if (isDifferentRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n const lastRow = floor(maxIndex / cols) === prevRow;\n if (isIndexOutOfBounds(elementsRef, nextIndex)) {\n if (loop && lastRow) {\n nextIndex = event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT) ? maxIndex : findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n } else {\n nextIndex = prevIndex;\n }\n }\n }\n return nextIndex;\n}\n\n/** For each cell index, gets the item index that occupies that cell */\nfunction buildCellMap(sizes, cols, dense) {\n const cellMap = [];\n let startIndex = 0;\n sizes.forEach((_ref2, index) => {\n let {\n width,\n height\n } = _ref2;\n if (width > cols) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\"[Floating UI]: Invalid grid - item width at index \" + index + \" is greater than grid columns\");\n }\n }\n let itemPlaced = false;\n if (dense) {\n startIndex = 0;\n }\n while (!itemPlaced) {\n const targetCells = [];\n for (let i = 0; i < width; i++) {\n for (let j = 0; j < height; j++) {\n targetCells.push(startIndex + i + j * cols);\n }\n }\n if (startIndex % cols + width <= cols && targetCells.every(cell => cellMap[cell] == null)) {\n targetCells.forEach(cell => {\n cellMap[cell] = index;\n });\n itemPlaced = true;\n } else {\n startIndex++;\n }\n }\n });\n\n // convert into a non-sparse array\n return [...cellMap];\n}\n\n/** Gets cell index of an item's corner or -1 when index is -1. */\nfunction getCellIndexOfCorner(index, sizes, cellMap, cols, corner) {\n if (index === -1) return -1;\n const firstCellIndex = cellMap.indexOf(index);\n const sizeItem = sizes[index];\n switch (corner) {\n case 'tl':\n return firstCellIndex;\n case 'tr':\n if (!sizeItem) {\n return firstCellIndex;\n }\n return firstCellIndex + sizeItem.width - 1;\n case 'bl':\n if (!sizeItem) {\n return firstCellIndex;\n }\n return firstCellIndex + (sizeItem.height - 1) * cols;\n case 'br':\n return cellMap.lastIndexOf(index);\n }\n}\n\n/** Gets all cell indices that correspond to the specified indices */\nfunction getCellIndices(indices, cellMap) {\n return cellMap.flatMap((index, cellIndex) => indices.includes(index) ? [cellIndex] : []);\n}\nfunction isDisabled(list, index, disabledIndices) {\n if (disabledIndices) {\n return disabledIndices.includes(index);\n }\n const element = list[index];\n return element == null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\nfunction sortByDocumentPosition(a, b) {\n const position = a.compareDocumentPosition(b);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return -1;\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n return 1;\n }\n return 0;\n}\nfunction areMapsEqual(map1, map2) {\n if (map1.size !== map2.size) {\n return false;\n }\n for (const [key, value] of map1.entries()) {\n if (value !== map2.get(key)) {\n return false;\n }\n }\n return true;\n}\nconst FloatingListContext = /*#__PURE__*/React.createContext({\n register: () => {},\n unregister: () => {},\n map: /*#__PURE__*/new Map(),\n elementsRef: {\n current: []\n }\n});\n/**\n * Provides context for a list of items within the floating element.\n * @see https://floating-ui.com/docs/FloatingList\n */\nfunction FloatingList(props) {\n const {\n children,\n elementsRef,\n labelsRef\n } = props;\n const [map, setMap] = React.useState(() => new Map());\n const register = React.useCallback(node => {\n setMap(prevMap => new Map(prevMap).set(node, null));\n }, []);\n const unregister = React.useCallback(node => {\n setMap(prevMap => {\n const map = new Map(prevMap);\n map.delete(node);\n return map;\n });\n }, []);\n index(() => {\n const newMap = new Map(map);\n const nodes = Array.from(newMap.keys()).sort(sortByDocumentPosition);\n nodes.forEach((node, index) => {\n newMap.set(node, index);\n });\n if (!areMapsEqual(map, newMap)) {\n setMap(newMap);\n }\n }, [map]);\n return /*#__PURE__*/React.createElement(FloatingListContext.Provider, {\n value: React.useMemo(() => ({\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n }), [register, unregister, map, elementsRef, labelsRef])\n }, children);\n}\n/**\n * Used to register a list item and its index (DOM position) in the\n * `FloatingList`.\n * @see https://floating-ui.com/docs/FloatingList#uselistitem\n */\nfunction useListItem(props) {\n if (props === void 0) {\n props = {};\n }\n const {\n label\n } = props;\n const {\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n } = React.useContext(FloatingListContext);\n const [index$1, setIndex] = React.useState(null);\n const componentRef = React.useRef(null);\n const ref = React.useCallback(node => {\n componentRef.current = node;\n if (index$1 !== null) {\n elementsRef.current[index$1] = node;\n if (labelsRef) {\n var _node$textContent;\n const isLabelDefined = label !== undefined;\n labelsRef.current[index$1] = isLabelDefined ? label : (_node$textContent = node == null ? void 0 : node.textContent) != null ? _node$textContent : null;\n }\n }\n }, [index$1, elementsRef, labelsRef, label]);\n index(() => {\n const node = componentRef.current;\n if (node) {\n register(node);\n return () => {\n unregister(node);\n };\n }\n }, [register, unregister]);\n index(() => {\n const index = componentRef.current ? map.get(componentRef.current) : null;\n if (index != null) {\n setIndex(index);\n }\n }, [map]);\n return React.useMemo(() => ({\n ref,\n index: index$1 == null ? -1 : index$1\n }), [index$1, ref]);\n}\n\nfunction renderJsx(render, computedProps) {\n if (typeof render === 'function') {\n return render(computedProps);\n }\n if (render) {\n return /*#__PURE__*/React.cloneElement(render, computedProps);\n }\n return /*#__PURE__*/React.createElement(\"div\", computedProps);\n}\nconst CompositeContext = /*#__PURE__*/React.createContext({\n activeIndex: 0,\n onNavigate: () => {}\n});\nconst horizontalKeys = [ARROW_LEFT, ARROW_RIGHT];\nconst verticalKeys = [ARROW_UP, ARROW_DOWN];\nconst allKeys = [...horizontalKeys, ...verticalKeys];\n\n/**\n * Creates a single tab stop whose items are navigated by arrow keys, which\n * provides list navigation outside of floating element contexts.\n *\n * This is useful to enable navigation of a list of items that aren’t part of a\n * floating element. A menubar is an example of a composite, with each reference\n * element being an item.\n * @see https://floating-ui.com/docs/Composite\n */\nconst Composite = /*#__PURE__*/React.forwardRef(function Composite(props, forwardedRef) {\n const {\n render,\n orientation = 'both',\n loop = true,\n rtl = false,\n cols = 1,\n disabledIndices,\n activeIndex: externalActiveIndex,\n onNavigate: externalSetActiveIndex,\n itemSizes,\n dense = false,\n ...domProps\n } = props;\n const [internalActiveIndex, internalSetActiveIndex] = React.useState(0);\n const activeIndex = externalActiveIndex != null ? externalActiveIndex : internalActiveIndex;\n const onNavigate = useEffectEvent(externalSetActiveIndex != null ? externalSetActiveIndex : internalSetActiveIndex);\n const elementsRef = React.useRef([]);\n const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n const contextValue = React.useMemo(() => ({\n activeIndex,\n onNavigate\n }), [activeIndex, onNavigate]);\n const isGrid = cols > 1;\n function handleKeyDown(event) {\n if (!allKeys.includes(event.key)) return;\n let nextIndex = activeIndex;\n const minIndex = getMinIndex(elementsRef, disabledIndices);\n const maxIndex = getMaxIndex(elementsRef, disabledIndices);\n const horizontalEndKey = rtl ? ARROW_LEFT : ARROW_RIGHT;\n const horizontalStartKey = rtl ? ARROW_RIGHT : ARROW_LEFT;\n if (isGrid) {\n const sizes = itemSizes || Array.from({\n length: elementsRef.current.length\n }, () => ({\n width: 1,\n height: 1\n }));\n // To calculate movements on the grid, we use hypothetical cell indices\n // as if every item was 1x1, then convert back to real indices.\n const cellMap = buildCellMap(sizes, cols, dense);\n const minGridIndex = cellMap.findIndex(index => index != null && !isDisabled(elementsRef.current, index, disabledIndices));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isDisabled(elementsRef.current, index, disabledIndices) ? cellIndex : foundIndex, -1);\n const maybeNextIndex = cellMap[getGridNavigatedIndex({\n current: cellMap.map(itemIndex => itemIndex ? elementsRef.current[itemIndex] : null)\n }, {\n event,\n orientation,\n loop,\n rtl,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getCellIndices([...(disabledIndices || elementsRef.current.map((_, index) => isDisabled(elementsRef.current, index) ? index : undefined)), undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getCellIndexOfCorner(activeIndex > maxIndex ? minIndex : activeIndex, sizes, cellMap, cols,\n // use a corner matching the edge closest to the direction we're\n // moving in so we don't end up in the same item. Prefer\n // top/left over bottom/right.\n event.key === ARROW_DOWN ? 'bl' : event.key === horizontalEndKey ? 'tr' : 'tl')\n })];\n if (maybeNextIndex != null) {\n nextIndex = maybeNextIndex;\n }\n }\n const toEndKeys = {\n horizontal: [horizontalEndKey],\n vertical: [ARROW_DOWN],\n both: [horizontalEndKey, ARROW_DOWN]\n }[orientation];\n const toStartKeys = {\n horizontal: [horizontalStartKey],\n vertical: [ARROW_UP],\n both: [horizontalStartKey, ARROW_UP]\n }[orientation];\n const preventedKeys = isGrid ? allKeys : {\n horizontal: horizontalKeys,\n vertical: verticalKeys,\n both: allKeys\n }[orientation];\n if (nextIndex === activeIndex && [...toEndKeys, ...toStartKeys].includes(event.key)) {\n if (loop && nextIndex === maxIndex && toEndKeys.includes(event.key)) {\n nextIndex = minIndex;\n } else if (loop && nextIndex === minIndex && toStartKeys.includes(event.key)) {\n nextIndex = maxIndex;\n } else {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: nextIndex,\n decrement: toStartKeys.includes(event.key),\n disabledIndices\n });\n }\n }\n if (nextIndex !== activeIndex && !isIndexOutOfBounds(elementsRef, nextIndex)) {\n var _elementsRef$current$;\n event.stopPropagation();\n if (preventedKeys.includes(event.key)) {\n event.preventDefault();\n }\n onNavigate(nextIndex);\n (_elementsRef$current$ = elementsRef.current[nextIndex]) == null || _elementsRef$current$.focus();\n }\n }\n const computedProps = {\n ...domProps,\n ...renderElementProps,\n ref: forwardedRef,\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n onKeyDown(e) {\n domProps.onKeyDown == null || domProps.onKeyDown(e);\n renderElementProps.onKeyDown == null || renderElementProps.onKeyDown(e);\n handleKeyDown(e);\n }\n };\n return /*#__PURE__*/React.createElement(CompositeContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(FloatingList, {\n elementsRef: elementsRef\n }, renderJsx(render, computedProps)));\n});\n/**\n * @see https://floating-ui.com/docs/Composite\n */\nconst CompositeItem = /*#__PURE__*/React.forwardRef(function CompositeItem(props, forwardedRef) {\n const {\n render,\n ...domProps\n } = props;\n const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n const {\n activeIndex,\n onNavigate\n } = React.useContext(CompositeContext);\n const {\n ref,\n index\n } = useListItem();\n const mergedRef = useMergeRefs([ref, forwardedRef, renderElementProps.ref]);\n const isActive = activeIndex === index;\n const computedProps = {\n ...domProps,\n ...renderElementProps,\n ref: mergedRef,\n tabIndex: isActive ? 0 : -1,\n 'data-active': isActive ? '' : undefined,\n onFocus(e) {\n domProps.onFocus == null || domProps.onFocus(e);\n renderElementProps.onFocus == null || renderElementProps.onFocus(e);\n onNavigate(index);\n }\n };\n return renderJsx(render, computedProps);\n});\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nlet serverHandoffComplete = false;\nlet count = 0;\nconst genId = () => // Ensure the id is unique with multiple independent versions of Floating UI\n// on <React 18\n\"floating-ui-\" + Math.random().toString(36).slice(2, 6) + count++;\nfunction useFloatingId() {\n const [id, setId] = React.useState(() => serverHandoffComplete ? genId() : undefined);\n index(() => {\n if (id == null) {\n setId(genId());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n React.useEffect(() => {\n serverHandoffComplete = true;\n }, []);\n return id;\n}\nconst useReactId = SafeReact.useId;\n\n/**\n * Uses React 18's built-in `useId()` when available, or falls back to a\n * slightly less performant (requiring a double render) implementation for\n * earlier React versions.\n * @see https://floating-ui.com/docs/react-utils#useid\n */\nconst useId = useReactId || useFloatingId;\n\nlet devMessageSet;\nif (process.env.NODE_ENV !== \"production\") {\n devMessageSet = /*#__PURE__*/new Set();\n}\nfunction warn() {\n var _devMessageSet;\n for (var _len = arguments.length, messages = new Array(_len), _key = 0; _key < _len; _key++) {\n messages[_key] = arguments[_key];\n }\n const message = \"Floating UI: \" + messages.join(' ');\n if (!((_devMessageSet = devMessageSet) != null && _devMessageSet.has(message))) {\n var _devMessageSet2;\n (_devMessageSet2 = devMessageSet) == null || _devMessageSet2.add(message);\n console.warn(message);\n }\n}\nfunction error() {\n var _devMessageSet3;\n for (var _len2 = arguments.length, messages = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n messages[_key2] = arguments[_key2];\n }\n const message = \"Floating UI: \" + messages.join(' ');\n if (!((_devMessageSet3 = devMessageSet) != null && _devMessageSet3.has(message))) {\n var _devMessageSet4;\n (_devMessageSet4 = devMessageSet) == null || _devMessageSet4.add(message);\n console.error(message);\n }\n}\n\n/**\n * Renders a pointing arrow triangle.\n * @see https://floating-ui.com/docs/FloatingArrow\n */\nconst FloatingArrow = /*#__PURE__*/React.forwardRef(function FloatingArrow(props, ref) {\n const {\n context: {\n placement,\n elements: {\n floating\n },\n middlewareData: {\n arrow,\n shift\n }\n },\n width = 14,\n height = 7,\n tipRadius = 0,\n strokeWidth = 0,\n staticOffset,\n stroke,\n d,\n style: {\n transform,\n ...restStyle\n } = {},\n ...rest\n } = props;\n if (process.env.NODE_ENV !== \"production\") {\n if (!ref) {\n warn('The `ref` prop is required for `FloatingArrow`.');\n }\n }\n const clipPathId = useId();\n const [isRTL, setIsRTL] = React.useState(false);\n\n // https://github.com/floating-ui/floating-ui/issues/2932\n index(() => {\n if (!floating) return;\n const isRTL = getComputedStyle(floating).direction === 'rtl';\n if (isRTL) {\n setIsRTL(true);\n }\n }, [floating]);\n if (!floating) {\n return null;\n }\n const [side, alignment] = placement.split('-');\n const isVerticalSide = side === 'top' || side === 'bottom';\n let computedStaticOffset = staticOffset;\n if (isVerticalSide && shift != null && shift.x || !isVerticalSide && shift != null && shift.y) {\n computedStaticOffset = null;\n }\n\n // Strokes must be double the border width, this ensures the stroke's width\n // works as you'd expect.\n const computedStrokeWidth = strokeWidth * 2;\n const halfStrokeWidth = computedStrokeWidth / 2;\n const svgX = width / 2 * (tipRadius / -8 + 1);\n const svgY = height / 2 * tipRadius / 4;\n const isCustomShape = !!d;\n const yOffsetProp = computedStaticOffset && alignment === 'end' ? 'bottom' : 'top';\n let xOffsetProp = computedStaticOffset && alignment === 'end' ? 'right' : 'left';\n if (computedStaticOffset && isRTL) {\n xOffsetProp = alignment === 'end' ? 'left' : 'right';\n }\n const arrowX = (arrow == null ? void 0 : arrow.x) != null ? computedStaticOffset || arrow.x : '';\n const arrowY = (arrow == null ? void 0 : arrow.y) != null ? computedStaticOffset || arrow.y : '';\n const dValue = d || 'M0,0' + (\" H\" + width) + (\" L\" + (width - svgX) + \",\" + (height - svgY)) + (\" Q\" + width / 2 + \",\" + height + \" \" + svgX + \",\" + (height - svgY)) + ' Z';\n const rotation = {\n top: isCustomShape ? 'rotate(180deg)' : '',\n left: isCustomShape ? 'rotate(90deg)' : 'rotate(-90deg)',\n bottom: isCustomShape ? '' : 'rotate(180deg)',\n right: isCustomShape ? 'rotate(-90deg)' : 'rotate(90deg)'\n }[side];\n return /*#__PURE__*/React.createElement(\"svg\", _extends({}, rest, {\n \"aria-hidden\": true,\n ref: ref,\n width: isCustomShape ? width : width + computedStrokeWidth,\n height: width,\n viewBox: \"0 0 \" + width + \" \" + (height > width ? height : width),\n style: {\n position: 'absolute',\n pointerEvents: 'none',\n [xOffsetProp]: arrowX,\n [yOffsetProp]: arrowY,\n [side]: isVerticalSide || isCustomShape ? '100%' : \"calc(100% - \" + computedStrokeWidth / 2 + \"px)\",\n transform: [rotation, transform].filter(t => !!t).join(' '),\n ...restStyle\n }\n }), computedStrokeWidth > 0 && /*#__PURE__*/React.createElement(\"path\", {\n clipPath: \"url(#\" + clipPathId + \")\",\n fill: \"none\",\n stroke: stroke\n // Account for the stroke on the fill path rendered below.\n ,\n strokeWidth: computedStrokeWidth + (d ? 0 : 1),\n d: dValue\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: computedStrokeWidth && !d ? rest.fill : 'none',\n d: dValue\n }), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: clipPathId\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: -halfStrokeWidth,\n y: halfStrokeWidth * (isCustomShape ? -1 : 1),\n width: width + computedStrokeWidth,\n height: width\n })));\n});\n\nfunction createPubSub() {\n const map = new Map();\n return {\n emit(event, data) {\n var _map$get;\n (_map$get = map.get(event)) == null || _map$get.forEach(handler => handler(data));\n },\n on(event, listener) {\n map.set(event, [...(map.get(event) || []), listener]);\n },\n off(event, listener) {\n var _map$get2;\n map.set(event, ((_map$get2 = map.get(event)) == null ? void 0 : _map$get2.filter(l => l !== listener)) || []);\n }\n };\n}\n\nconst FloatingNodeContext = /*#__PURE__*/React.createContext(null);\nconst FloatingTreeContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Returns the parent node id for nested floating elements, if available.\n * Returns `null` for top-level floating elements.\n */\nconst useFloatingParentNodeId = () => {\n var _React$useContext;\n return ((_React$useContext = React.useContext(FloatingNodeContext)) == null ? void 0 : _React$useContext.id) || null;\n};\n\n/**\n * Returns the nearest floating tree context, if available.\n */\nconst useFloatingTree = () => React.useContext(FloatingTreeContext);\n\n/**\n * Registers a node into the `FloatingTree`, returning its id.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction useFloatingNodeId(customParentId) {\n const id = useId();\n const tree = useFloatingTree();\n const reactParentId = useFloatingParentNodeId();\n const parentId = customParentId || reactParentId;\n index(() => {\n const node = {\n id,\n parentId\n };\n tree == null || tree.addNode(node);\n return () => {\n tree == null || tree.removeNode(node);\n };\n }, [tree, id, parentId]);\n return id;\n}\n/**\n * Provides parent node context for nested floating elements.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingNode(props) {\n const {\n children,\n id\n } = props;\n const parentId = useFloatingParentNodeId();\n return /*#__PURE__*/React.createElement(FloatingNodeContext.Provider, {\n value: React.useMemo(() => ({\n id,\n parentId\n }), [id, parentId])\n }, children);\n}\n/**\n * Provides context for nested floating elements when they are not children of\n * each other on the DOM.\n * This is not necessary in all cases, except when there must be explicit communication between parent and child floating elements. It is necessary for:\n * - The `bubbles` option in the `useDismiss()` Hook\n * - Nested virtual list navigation\n * - Nested floating elements that each open on hover\n * - Custom communication between parent and child floating elements\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingTree(props) {\n const {\n children\n } = props;\n const nodesRef = React.useRef([]);\n const addNode = React.useCallback(node => {\n nodesRef.current = [...nodesRef.current, node];\n }, []);\n const removeNode = React.useCallback(node => {\n nodesRef.current = nodesRef.current.filter(n => n !== node);\n }, []);\n const events = React.useState(() => createPubSub())[0];\n return /*#__PURE__*/React.createElement(FloatingTreeContext.Provider, {\n value: React.useMemo(() => ({\n nodesRef,\n addNode,\n removeNode,\n events\n }), [addNode, removeNode, events])\n }, children);\n}\n\nfunction createAttribute(name) {\n return \"data-floating-ui-\" + name;\n}\n\nfunction useLatestRef(value) {\n const ref = useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\nconst safePolygonIdentifier = /*#__PURE__*/createAttribute('safe-polygon');\nfunction getDelay(value, prop, pointerType) {\n if (pointerType && !isMouseLikePointerType(pointerType)) {\n return 0;\n }\n if (typeof value === 'number') {\n return value;\n }\n return value == null ? void 0 : value[prop];\n}\n/**\n * Opens the floating element while hovering over the reference element, like\n * CSS `:hover`.\n * @see https://floating-ui.com/docs/useHover\n */\nfunction useHover(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n events,\n elements\n } = context;\n const {\n enabled = true,\n delay = 0,\n handleClose = null,\n mouseOnly = false,\n restMs = 0,\n move = true\n } = props;\n const tree = useFloatingTree();\n const parentId = useFloatingParentNodeId();\n const handleCloseRef = useLatestRef(handleClose);\n const delayRef = useLatestRef(delay);\n const openRef = useLatestRef(open);\n const pointerTypeRef = React.useRef();\n const timeoutRef = React.useRef(-1);\n const handlerRef = React.useRef();\n const restTimeoutRef = React.useRef(-1);\n const blockMouseMoveRef = React.useRef(true);\n const performedPointerEventsMutationRef = React.useRef(false);\n const unbindMouseMoveRef = React.useRef(() => {});\n const restTimeoutPendingRef = React.useRef(false);\n const isHoverOpen = React.useCallback(() => {\n var _dataRef$current$open;\n const type = (_dataRef$current$open = dataRef.current.openEvent) == null ? void 0 : _dataRef$current$open.type;\n return (type == null ? void 0 : type.includes('mouse')) && type !== 'mousedown';\n }, [dataRef]);\n\n // When closing before opening, clear the delay timeouts to cancel it\n // from showing.\n React.useEffect(() => {\n if (!enabled) return;\n function onOpenChange(_ref) {\n let {\n open\n } = _ref;\n if (!open) {\n clearTimeout(timeoutRef.current);\n clearTimeout(restTimeoutRef.current);\n blockMouseMoveRef.current = true;\n restTimeoutPendingRef.current = false;\n }\n }\n events.on('openchange', onOpenChange);\n return () => {\n events.off('openchange', onOpenChange);\n };\n }, [enabled, events]);\n React.useEffect(() => {\n if (!enabled) return;\n if (!handleCloseRef.current) return;\n if (!open) return;\n function onLeave(event) {\n if (isHoverOpen()) {\n onOpenChange(false, event, 'hover');\n }\n }\n const html = getDocument(elements.floating).documentElement;\n html.addEventListener('mouseleave', onLeave);\n return () => {\n html.removeEventListener('mouseleave', onLeave);\n };\n }, [elements.floating, open, onOpenChange, enabled, handleCloseRef, isHoverOpen]);\n const closeWithDelay = React.useCallback(function (event, runElseBranch, reason) {\n if (runElseBranch === void 0) {\n runElseBranch = true;\n }\n if (reason === void 0) {\n reason = 'hover';\n }\n const closeDelay = getDelay(delayRef.current, 'close', pointerTypeRef.current);\n if (closeDelay && !handlerRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(() => onOpenChange(false, event, reason), closeDelay);\n } else if (runElseBranch) {\n clearTimeout(timeoutRef.current);\n onOpenChange(false, event, reason);\n }\n }, [delayRef, onOpenChange]);\n const cleanupMouseMoveHandler = useEffectEvent(() => {\n unbindMouseMoveRef.current();\n handlerRef.current = undefined;\n });\n const clearPointerEvents = useEffectEvent(() => {\n if (performedPointerEventsMutationRef.current) {\n const body = getDocument(elements.floating).body;\n body.style.pointerEvents = '';\n body.removeAttribute(safePolygonIdentifier);\n performedPointerEventsMutationRef.current = false;\n }\n });\n const isClickLikeOpenEvent = useEffectEvent(() => {\n return dataRef.current.openEvent ? ['click', 'mousedown'].includes(dataRef.current.openEvent.type) : false;\n });\n\n // Registering the mouse events on the reference directly to bypass React's\n // delegation system. If the cursor was on a disabled element and then entered\n // the reference (no gap), `mouseenter` doesn't fire in the delegation system.\n React.useEffect(() => {\n if (!enabled) return;\n function onMouseEnter(event) {\n clearTimeout(timeoutRef.current);\n blockMouseMoveRef.current = false;\n if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current) || restMs > 0 && !getDelay(delayRef.current, 'open')) {\n return;\n }\n const openDelay = getDelay(delayRef.current, 'open', pointerTypeRef.current);\n if (openDelay) {\n timeoutRef.current = window.setTimeout(() => {\n if (!openRef.current) {\n onOpenChange(true, event, 'hover');\n }\n }, openDelay);\n } else if (!open) {\n onOpenChange(true, event, 'hover');\n }\n }\n function onMouseLeave(event) {\n if (isClickLikeOpenEvent()) return;\n unbindMouseMoveRef.current();\n const doc = getDocument(elements.floating);\n clearTimeout(restTimeoutRef.current);\n restTimeoutPendingRef.current = false;\n if (handleCloseRef.current && dataRef.current.floatingContext) {\n // Prevent clearing `onScrollMouseLeave` timeout.\n if (!open) {\n clearTimeout(timeoutRef.current);\n }\n handlerRef.current = handleCloseRef.current({\n ...dataRef.current.floatingContext,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event, true, 'safe-polygon');\n }\n }\n });\n const handler = handlerRef.current;\n doc.addEventListener('mousemove', handler);\n unbindMouseMoveRef.current = () => {\n doc.removeEventListener('mousemove', handler);\n };\n return;\n }\n\n // Allow interactivity without `safePolygon` on touch devices. With a\n // pointer, a short close delay is an alternative, so it should work\n // consistently.\n const shouldClose = pointerTypeRef.current === 'touch' ? !contains(elements.floating, event.relatedTarget) : true;\n if (shouldClose) {\n closeWithDelay(event);\n }\n }\n\n // Ensure the floating element closes after scrolling even if the pointer\n // did not move.\n // https://github.com/floating-ui/floating-ui/discussions/1692\n function onScrollMouseLeave(event) {\n if (isClickLikeOpenEvent()) return;\n if (!dataRef.current.floatingContext) return;\n handleCloseRef.current == null || handleCloseRef.current({\n ...dataRef.current.floatingContext,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event);\n }\n }\n })(event);\n }\n if (isElement(elements.domReference)) {\n var _elements$floating;\n const ref = elements.domReference;\n open && ref.addEventListener('mouseleave', onScrollMouseLeave);\n (_elements$floating = elements.floating) == null || _elements$floating.addEventListener('mouseleave', onScrollMouseLeave);\n move && ref.addEventListener('mousemove', onMouseEnter, {\n once: true\n });\n ref.addEventListener('mouseenter', onMouseEnter);\n ref.addEventListener('mouseleave', onMouseLeave);\n return () => {\n var _elements$floating2;\n open && ref.removeEventListener('mouseleave', onScrollMouseLeave);\n (_elements$floating2 = elements.floating) == null || _elements$floating2.removeEventListener('mouseleave', onScrollMouseLeave);\n move && ref.removeEventListener('mousemove', onMouseEnter);\n ref.removeEventListener('mouseenter', onMouseEnter);\n ref.removeEventListener('mouseleave', onMouseLeave);\n };\n }\n }, [elements, enabled, context, mouseOnly, restMs, move, closeWithDelay, cleanupMouseMoveHandler, clearPointerEvents, onOpenChange, open, openRef, tree, delayRef, handleCloseRef, dataRef, isClickLikeOpenEvent]);\n\n // Block pointer-events of every element other than the reference and floating\n // while the floating element is open and has a `handleClose` handler. Also\n // handles nested floating elements.\n // https://github.com/floating-ui/floating-ui/issues/1722\n index(() => {\n var _handleCloseRef$curre;\n if (!enabled) return;\n if (open && (_handleCloseRef$curre = handleCloseRef.current) != null && _handleCloseRef$curre.__options.blockPointerEvents && isHoverOpen()) {\n performedPointerEventsMutationRef.current = true;\n const floatingEl = elements.floating;\n if (isElement(elements.domReference) && floatingEl) {\n var _tree$nodesRef$curren;\n const body = getDocument(elements.floating).body;\n body.setAttribute(safePolygonIdentifier, '');\n const ref = elements.domReference;\n const parentFloating = tree == null || (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.context) == null ? void 0 : _tree$nodesRef$curren.elements.floating;\n if (parentFloating) {\n parentFloating.style.pointerEvents = '';\n }\n body.style.pointerEvents = 'none';\n ref.style.pointerEvents = 'auto';\n floatingEl.style.pointerEvents = 'auto';\n return () => {\n body.style.pointerEvents = '';\n ref.style.pointerEvents = '';\n floatingEl.style.pointerEvents = '';\n };\n }\n }\n }, [enabled, open, parentId, elements, tree, handleCloseRef, isHoverOpen]);\n index(() => {\n if (!open) {\n pointerTypeRef.current = undefined;\n restTimeoutPendingRef.current = false;\n cleanupMouseMoveHandler();\n clearPointerEvents();\n }\n }, [open, cleanupMouseMoveHandler, clearPointerEvents]);\n React.useEffect(() => {\n return () => {\n cleanupMouseMoveHandler();\n clearTimeout(timeoutRef.current);\n clearTimeout(restTimeoutRef.current);\n clearPointerEvents();\n };\n }, [enabled, elements.domReference, cleanupMouseMoveHandler, clearPointerEvents]);\n const reference = React.useMemo(() => {\n function setPointerRef(event) {\n pointerTypeRef.current = event.pointerType;\n }\n return {\n onPointerDown: setPointerRef,\n onPointerEnter: setPointerRef,\n onMouseMove(event) {\n const {\n nativeEvent\n } = event;\n function handleMouseMove() {\n if (!blockMouseMoveRef.current && !openRef.current) {\n onOpenChange(true, nativeEvent, 'hover');\n }\n }\n if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current)) {\n return;\n }\n if (open || restMs === 0) {\n return;\n }\n\n // Ignore insignificant movements to account for tremors.\n if (restTimeoutPendingRef.current && event.movementX ** 2 + event.movementY ** 2 < 2) {\n return;\n }\n clearTimeout(restTimeoutRef.current);\n if (pointerTypeRef.current === 'touch') {\n handleMouseMove();\n } else {\n restTimeoutPendingRef.current = true;\n restTimeoutRef.current = window.setTimeout(handleMouseMove, restMs);\n }\n }\n };\n }, [mouseOnly, onOpenChange, open, openRef, restMs]);\n const floating = React.useMemo(() => ({\n onMouseEnter() {\n clearTimeout(timeoutRef.current);\n },\n onMouseLeave(event) {\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event.nativeEvent, false);\n }\n }\n }), [closeWithDelay, isClickLikeOpenEvent]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}\n\nconst NOOP = () => {};\nconst FloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n delay: 0,\n initialDelay: 0,\n timeoutMs: 0,\n currentId: null,\n setCurrentId: NOOP,\n setState: NOOP,\n isInstantPhase: false\n});\n\n/**\n * @deprecated\n * Use the return value of `useDelayGroup()` instead.\n */\nconst useDelayGroupContext = () => React.useContext(FloatingDelayGroupContext);\n/**\n * Provides context for a group of floating elements that should share a\n * `delay`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction FloatingDelayGroup(props) {\n const {\n children,\n delay,\n timeoutMs = 0\n } = props;\n const [state, setState] = React.useReducer((prev, next) => ({\n ...prev,\n ...next\n }), {\n delay,\n timeoutMs,\n initialDelay: delay,\n currentId: null,\n isInstantPhase: false\n });\n const initialCurrentIdRef = React.useRef(null);\n const setCurrentId = React.useCallback(currentId => {\n setState({\n currentId\n });\n }, []);\n index(() => {\n if (state.currentId) {\n if (initialCurrentIdRef.current === null) {\n initialCurrentIdRef.current = state.currentId;\n } else if (!state.isInstantPhase) {\n setState({\n isInstantPhase: true\n });\n }\n } else {\n if (state.isInstantPhase) {\n setState({\n isInstantPhase: false\n });\n }\n initialCurrentIdRef.current = null;\n }\n }, [state.currentId, state.isInstantPhase]);\n return /*#__PURE__*/React.createElement(FloatingDelayGroupContext.Provider, {\n value: React.useMemo(() => ({\n ...state,\n setState,\n setCurrentId\n }), [state, setCurrentId])\n }, children);\n}\n/**\n * Enables grouping when called inside a component that's a child of a\n * `FloatingDelayGroup`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction useDelayGroup(context, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n open,\n onOpenChange,\n floatingId\n } = context;\n const {\n id: optionId,\n enabled = true\n } = options;\n const id = optionId != null ? optionId : floatingId;\n const groupContext = useDelayGroupContext();\n const {\n currentId,\n setCurrentId,\n initialDelay,\n setState,\n timeoutMs\n } = groupContext;\n index(() => {\n if (!enabled) return;\n if (!currentId) return;\n setState({\n delay: {\n open: 1,\n close: getDelay(initialDelay, 'close')\n }\n });\n if (currentId !== id) {\n onOpenChange(false);\n }\n }, [enabled, id, onOpenChange, setState, currentId, initialDelay]);\n index(() => {\n function unset() {\n onOpenChange(false);\n setState({\n delay: initialDelay,\n currentId: null\n });\n }\n if (!enabled) return;\n if (!currentId) return;\n if (!open && currentId === id) {\n if (timeoutMs) {\n const timeout = window.setTimeout(unset, timeoutMs);\n return () => {\n clearTimeout(timeout);\n };\n }\n unset();\n }\n }, [enabled, open, setState, currentId, id, onOpenChange, initialDelay, timeoutMs]);\n index(() => {\n if (!enabled) return;\n if (setCurrentId === NOOP || !open) return;\n setCurrentId(id);\n }, [enabled, open, setCurrentId, id]);\n return groupContext;\n}\n\nlet rafId = 0;\nfunction enqueueFocus(el, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n preventScroll = false,\n cancelPrevious = true,\n sync = false\n } = options;\n cancelPrevious && cancelAnimationFrame(rafId);\n const exec = () => el == null ? void 0 : el.focus({\n preventScroll\n });\n if (sync) {\n exec();\n } else {\n rafId = requestAnimationFrame(exec);\n }\n}\n\nfunction getAncestors(nodes, id) {\n var _nodes$find;\n let allAncestors = [];\n let currentParentId = (_nodes$find = nodes.find(node => node.id === id)) == null ? void 0 : _nodes$find.parentId;\n while (currentParentId) {\n const currentNode = nodes.find(node => node.id === currentParentId);\n currentParentId = currentNode == null ? void 0 : currentNode.parentId;\n if (currentNode) {\n allAncestors = allAncestors.concat(currentNode);\n }\n }\n return allAncestors;\n}\n\nfunction getChildren(nodes, id) {\n let allChildren = nodes.filter(node => {\n var _node$context;\n return node.parentId === id && ((_node$context = node.context) == null ? void 0 : _node$context.open);\n });\n let currentChildren = allChildren;\n while (currentChildren.length) {\n currentChildren = nodes.filter(node => {\n var _currentChildren;\n return (_currentChildren = currentChildren) == null ? void 0 : _currentChildren.some(n => {\n var _node$context2;\n return node.parentId === n.id && ((_node$context2 = node.context) == null ? void 0 : _node$context2.open);\n });\n });\n allChildren = allChildren.concat(currentChildren);\n }\n return allChildren;\n}\nfunction getDeepestNode(nodes, id) {\n let deepestNodeId;\n let maxDepth = -1;\n function findDeepest(nodeId, depth) {\n if (depth > maxDepth) {\n deepestNodeId = nodeId;\n maxDepth = depth;\n }\n const children = getChildren(nodes, nodeId);\n children.forEach(child => {\n findDeepest(child.id, depth + 1);\n });\n }\n findDeepest(id, 0);\n return nodes.find(node => node.id === deepestNodeId);\n}\n\n// Modified to add conditional `aria-hidden` support:\n// https://github.com/theKashey/aria-hidden/blob/9220c8f4a4fd35f63bee5510a9f41a37264382d4/src/index.ts\nlet counterMap = /*#__PURE__*/new WeakMap();\nlet uncontrolledElementsSet = /*#__PURE__*/new WeakSet();\nlet markerMap = {};\nlet lockCount$1 = 0;\nconst supportsInert = () => typeof HTMLElement !== 'undefined' && 'inert' in HTMLElement.prototype;\nconst unwrapHost = node => node && (node.host || unwrapHost(node.parentNode));\nconst correctElements = (parent, targets) => targets.map(target => {\n if (parent.contains(target)) {\n return target;\n }\n const correctedTarget = unwrapHost(target);\n if (parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n return null;\n}).filter(x => x != null);\nfunction applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, inert) {\n const markerName = 'data-floating-ui-inert';\n const controlAttribute = inert ? 'inert' : ariaHidden ? 'aria-hidden' : null;\n const avoidElements = correctElements(body, uncorrectedAvoidElements);\n const elementsToKeep = new Set();\n const elementsToStop = new Set(avoidElements);\n const hiddenElements = [];\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n const markerCounter = markerMap[markerName];\n avoidElements.forEach(keep);\n deep(body);\n elementsToKeep.clear();\n function keep(el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n el.parentNode && keep(el.parentNode);\n }\n function deep(parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n [].forEach.call(parent.children, node => {\n if (getNodeName(node) === 'script') return;\n if (elementsToKeep.has(node)) {\n deep(node);\n } else {\n const attr = controlAttribute ? node.getAttribute(controlAttribute) : null;\n const alreadyHidden = attr !== null && attr !== 'false';\n const counterValue = (counterMap.get(node) || 0) + 1;\n const markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenElements.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledElementsSet.add(node);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, '');\n }\n if (!alreadyHidden && controlAttribute) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n });\n }\n lockCount$1++;\n return () => {\n hiddenElements.forEach(element => {\n const counterValue = (counterMap.get(element) || 0) - 1;\n const markerValue = (markerCounter.get(element) || 0) - 1;\n counterMap.set(element, counterValue);\n markerCounter.set(element, markerValue);\n if (!counterValue) {\n if (!uncontrolledElementsSet.has(element) && controlAttribute) {\n element.removeAttribute(controlAttribute);\n }\n uncontrolledElementsSet.delete(element);\n }\n if (!markerValue) {\n element.removeAttribute(markerName);\n }\n });\n lockCount$1--;\n if (!lockCount$1) {\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledElementsSet = new WeakSet();\n markerMap = {};\n }\n };\n}\nfunction markOthers(avoidElements, ariaHidden, inert) {\n if (ariaHidden === void 0) {\n ariaHidden = false;\n }\n if (inert === void 0) {\n inert = false;\n }\n const body = getDocument(avoidElements[0]).body;\n return applyAttributeToOthers(avoidElements.concat(Array.from(body.querySelectorAll('[aria-live]'))), body, ariaHidden, inert);\n}\n\nconst getTabbableOptions = () => ({\n getShadowRoot: true,\n displayCheck:\n // JSDOM does not support the `tabbable` library. To solve this we can\n // check if `ResizeObserver` is a real function (not polyfilled), which\n // determines if the current environment is JSDOM-like.\n typeof ResizeObserver === 'function' && ResizeObserver.toString().includes('[native code]') ? 'full' : 'none'\n});\nfunction getTabbableIn(container, direction) {\n const allTabbable = tabbable(container, getTabbableOptions());\n if (direction === 'prev') {\n allTabbable.reverse();\n }\n const activeIndex = allTabbable.indexOf(activeElement(getDocument(container)));\n const nextTabbableElements = allTabbable.slice(activeIndex + 1);\n return nextTabbableElements[0];\n}\nfunction getNextTabbable() {\n return getTabbableIn(document.body, 'next');\n}\nfunction getPreviousTabbable() {\n return getTabbableIn(document.body, 'prev');\n}\nfunction isOutsideEvent(event, container) {\n const containerElement = container || event.currentTarget;\n const relatedTarget = event.relatedTarget;\n return !relatedTarget || !contains(containerElement, relatedTarget);\n}\nfunction disableFocusInside(container) {\n const tabbableElements = tabbable(container, getTabbableOptions());\n tabbableElements.forEach(element => {\n element.dataset.tabindex = element.getAttribute('tabindex') || '';\n element.setAttribute('tabindex', '-1');\n });\n}\nfunction enableFocusInside(container) {\n const elements = container.querySelectorAll('[data-tabindex]');\n elements.forEach(element => {\n const tabindex = element.dataset.tabindex;\n delete element.dataset.tabindex;\n if (tabindex) {\n element.setAttribute('tabindex', tabindex);\n } else {\n element.removeAttribute('tabindex');\n }\n });\n}\n\n// See Diego Haz's Sandbox for making this logic work well on Safari/iOS:\n// https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/FocusTrap.tsx\n\nconst HIDDEN_STYLES = {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: 0,\n position: 'fixed',\n whiteSpace: 'nowrap',\n width: '1px',\n top: 0,\n left: 0\n};\nlet timeoutId;\nfunction setActiveElementOnTab(event) {\n if (event.key === 'Tab') {\n event.target;\n clearTimeout(timeoutId);\n }\n}\nconst FocusGuard = /*#__PURE__*/React.forwardRef(function FocusGuard(props, ref) {\n const [role, setRole] = React.useState();\n index(() => {\n if (isSafari()) {\n // Unlike other screen readers such as NVDA and JAWS, the virtual cursor\n // on VoiceOver does trigger the onFocus event, so we can use the focus\n // trap element. On Safari, only buttons trigger the onFocus event.\n // NB: \"group\" role in the Sandbox no longer appears to work, must be a\n // button role.\n setRole('button');\n }\n document.addEventListener('keydown', setActiveElementOnTab);\n return () => {\n document.removeEventListener('keydown', setActiveElementOnTab);\n };\n }, []);\n const restProps = {\n ref,\n tabIndex: 0,\n // Role is only for VoiceOver\n role,\n 'aria-hidden': role ? undefined : true,\n [createAttribute('focus-guard')]: '',\n style: HIDDEN_STYLES\n };\n return /*#__PURE__*/React.createElement(\"span\", _extends({}, props, restProps));\n});\n\nconst PortalContext = /*#__PURE__*/React.createContext(null);\nconst attr = /*#__PURE__*/createAttribute('portal');\n/**\n * @see https://floating-ui.com/docs/FloatingPortal#usefloatingportalnode\n */\nfunction useFloatingPortalNode(props) {\n if (props === void 0) {\n props = {};\n }\n const {\n id,\n root\n } = props;\n const uniqueId = useId();\n const portalContext = usePortalContext();\n const [portalNode, setPortalNode] = React.useState(null);\n const portalNodeRef = React.useRef(null);\n index(() => {\n return () => {\n portalNode == null || portalNode.remove();\n // Allow the subsequent layout effects to create a new node on updates.\n // The portal node will still be cleaned up on unmount.\n // https://github.com/floating-ui/floating-ui/issues/2454\n queueMicrotask(() => {\n portalNodeRef.current = null;\n });\n };\n }, [portalNode]);\n index(() => {\n // Wait for the uniqueId to be generated before creating the portal node in\n // React <18 (using `useFloatingId` instead of the native `useId`).\n // https://github.com/floating-ui/floating-ui/issues/2778\n if (!uniqueId) return;\n if (portalNodeRef.current) return;\n const existingIdRoot = id ? document.getElementById(id) : null;\n if (!existingIdRoot) return;\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n existingIdRoot.appendChild(subRoot);\n portalNodeRef.current = subRoot;\n setPortalNode(subRoot);\n }, [id, uniqueId]);\n index(() => {\n // Wait for the root to exist before creating the portal node. The root must\n // be stored in state, not a ref, for this to work reactively.\n if (root === null) return;\n if (!uniqueId) return;\n if (portalNodeRef.current) return;\n let container = root || (portalContext == null ? void 0 : portalContext.portalNode);\n if (container && !isElement(container)) container = container.current;\n container = container || document.body;\n let idWrapper = null;\n if (id) {\n idWrapper = document.createElement('div');\n idWrapper.id = id;\n container.appendChild(idWrapper);\n }\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n container = idWrapper || container;\n container.appendChild(subRoot);\n portalNodeRef.current = subRoot;\n setPortalNode(subRoot);\n }, [id, root, uniqueId, portalContext]);\n return portalNode;\n}\n/**\n * Portals the floating element into a given container element — by default,\n * outside of the app root and into the body.\n * This is necessary to ensure the floating element can appear outside any\n * potential parent containers that cause clipping (such as `overflow: hidden`),\n * while retaining its location in the React tree.\n * @see https://floating-ui.com/docs/FloatingPortal\n */\nfunction FloatingPortal(props) {\n const {\n children,\n id,\n root,\n preserveTabOrder = true\n } = props;\n const portalNode = useFloatingPortalNode({\n id,\n root\n });\n const [focusManagerState, setFocusManagerState] = React.useState(null);\n const beforeOutsideRef = React.useRef(null);\n const afterOutsideRef = React.useRef(null);\n const beforeInsideRef = React.useRef(null);\n const afterInsideRef = React.useRef(null);\n const modal = focusManagerState == null ? void 0 : focusManagerState.modal;\n const open = focusManagerState == null ? void 0 : focusManagerState.open;\n const shouldRenderGuards =\n // The FocusManager and therefore floating element are currently open/\n // rendered.\n !!focusManagerState &&\n // Guards are only for non-modal focus management.\n !focusManagerState.modal &&\n // Don't render if unmount is transitioning.\n focusManagerState.open && preserveTabOrder && !!(root || portalNode);\n\n // https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/TabbablePortal.tsx\n React.useEffect(() => {\n if (!portalNode || !preserveTabOrder || modal) {\n return;\n }\n\n // Make sure elements inside the portal element are tabbable only when the\n // portal has already been focused, either by tabbing into a focus trap\n // element outside or using the mouse.\n function onFocus(event) {\n if (portalNode && isOutsideEvent(event)) {\n const focusing = event.type === 'focusin';\n const manageFocus = focusing ? enableFocusInside : disableFocusInside;\n manageFocus(portalNode);\n }\n }\n // Listen to the event on the capture phase so they run before the focus\n // trap elements onFocus prop is called.\n portalNode.addEventListener('focusin', onFocus, true);\n portalNode.addEventListener('focusout', onFocus, true);\n return () => {\n portalNode.removeEventListener('focusin', onFocus, true);\n portalNode.removeEventListener('focusout', onFocus, true);\n };\n }, [portalNode, preserveTabOrder, modal]);\n React.useEffect(() => {\n if (!portalNode) return;\n if (open) return;\n enableFocusInside(portalNode);\n }, [open, portalNode]);\n return /*#__PURE__*/React.createElement(PortalContext.Provider, {\n value: React.useMemo(() => ({\n preserveTabOrder,\n beforeOutsideRef,\n afterOutsideRef,\n beforeInsideRef,\n afterInsideRef,\n portalNode,\n setFocusManagerState\n }), [preserveTabOrder, portalNode])\n }, shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"outside\",\n ref: beforeOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _beforeInsideRef$curr;\n (_beforeInsideRef$curr = beforeInsideRef.current) == null || _beforeInsideRef$curr.focus();\n } else {\n const prevTabbable = getPreviousTabbable() || (focusManagerState == null ? void 0 : focusManagerState.refs.domReference.current);\n prevTabbable == null || prevTabbable.focus();\n }\n }\n }), shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(\"span\", {\n \"aria-owns\": portalNode.id,\n style: HIDDEN_STYLES\n }), portalNode && /*#__PURE__*/ReactDOM.createPortal(children, portalNode), shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"outside\",\n ref: afterOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _afterInsideRef$curre;\n (_afterInsideRef$curre = afterInsideRef.current) == null || _afterInsideRef$curre.focus();\n } else {\n const nextTabbable = getNextTabbable() || (focusManagerState == null ? void 0 : focusManagerState.refs.domReference.current);\n nextTabbable == null || nextTabbable.focus();\n (focusManagerState == null ? void 0 : focusManagerState.closeOnFocusOut) && (focusManagerState == null ? void 0 : focusManagerState.onOpenChange(false, event.nativeEvent, 'focus-out'));\n }\n }\n }));\n}\nconst usePortalContext = () => React.useContext(PortalContext);\n\nconst FOCUSABLE_ATTRIBUTE = 'data-floating-ui-focusable';\nfunction getFloatingFocusElement(floatingElement) {\n if (!floatingElement) {\n return null;\n }\n // Try to find the element that has `{...getFloatingProps()}` spread on it.\n // This indicates the floating element is acting as a positioning wrapper, and\n // so focus should be managed on the child element with the event handlers and\n // aria props.\n return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(\"[\" + FOCUSABLE_ATTRIBUTE + \"]\") || floatingElement;\n}\n\nconst LIST_LIMIT = 20;\nlet previouslyFocusedElements = [];\nfunction addPreviouslyFocusedElement(element) {\n previouslyFocusedElements = previouslyFocusedElements.filter(el => el.isConnected);\n let tabbableEl = element;\n if (!tabbableEl || getNodeName(tabbableEl) === 'body') return;\n if (!isTabbable(tabbableEl, getTabbableOptions())) {\n const tabbableChild = tabbable(tabbableEl, getTabbableOptions())[0];\n if (tabbableChild) {\n tabbableEl = tabbableChild;\n }\n }\n previouslyFocusedElements.push(tabbableEl);\n if (previouslyFocusedElements.length > LIST_LIMIT) {\n previouslyFocusedElements = previouslyFocusedElements.slice(-LIST_LIMIT);\n }\n}\nfunction getPreviouslyFocusedElement() {\n return previouslyFocusedElements.slice().reverse().find(el => el.isConnected);\n}\nconst VisuallyHiddenDismiss = /*#__PURE__*/React.forwardRef(function VisuallyHiddenDismiss(props, ref) {\n return /*#__PURE__*/React.createElement(\"button\", _extends({}, props, {\n type: \"button\",\n ref: ref,\n tabIndex: -1,\n style: HIDDEN_STYLES\n }));\n});\n/**\n * Provides focus management for the floating element.\n * @see https://floating-ui.com/docs/FloatingFocusManager\n */\nfunction FloatingFocusManager(props) {\n const {\n context,\n children,\n disabled = false,\n order = ['content'],\n guards: _guards = true,\n initialFocus = 0,\n returnFocus = true,\n restoreFocus = false,\n modal = true,\n visuallyHiddenDismiss = false,\n closeOnFocusOut = true\n } = props;\n const {\n open,\n refs,\n nodeId,\n onOpenChange,\n events,\n dataRef,\n floatingId,\n elements: {\n domReference,\n floating\n }\n } = context;\n const ignoreInitialFocus = typeof initialFocus === 'number' && initialFocus < 0;\n // If the reference is a combobox and is typeable (e.g. input/textarea),\n // there are different focus semantics. The guards should not be rendered, but\n // aria-hidden should be applied to all nodes still. Further, the visually\n // hidden dismiss button should only appear at the end of the list, not the\n // start.\n const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus;\n\n // Force the guards to be rendered if the `inert` attribute is not supported.\n const guards = supportsInert() ? _guards : true;\n const orderRef = useLatestRef(order);\n const initialFocusRef = useLatestRef(initialFocus);\n const returnFocusRef = useLatestRef(returnFocus);\n const tree = useFloatingTree();\n const portalContext = usePortalContext();\n const startDismissButtonRef = React.useRef(null);\n const endDismissButtonRef = React.useRef(null);\n const preventReturnFocusRef = React.useRef(false);\n const isPointerDownRef = React.useRef(false);\n const tabbableIndexRef = React.useRef(-1);\n const isInsidePortal = portalContext != null;\n const floatingFocusElement = getFloatingFocusElement(floating);\n const getTabbableContent = useEffectEvent(function (container) {\n if (container === void 0) {\n container = floatingFocusElement;\n }\n return container ? tabbable(container, getTabbableOptions()) : [];\n });\n const getTabbableElements = useEffectEvent(container => {\n const content = getTabbableContent(container);\n return orderRef.current.map(type => {\n if (domReference && type === 'reference') {\n return domReference;\n }\n if (floatingFocusElement && type === 'floating') {\n return floatingFocusElement;\n }\n return content;\n }).filter(Boolean).flat();\n });\n React.useEffect(() => {\n if (disabled) return;\n if (!modal) return;\n function onKeyDown(event) {\n if (event.key === 'Tab') {\n // The focus guards have nothing to focus, so we need to stop the event.\n if (contains(floatingFocusElement, activeElement(getDocument(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) {\n stopEvent(event);\n }\n const els = getTabbableElements();\n const target = getTarget(event);\n if (orderRef.current[0] === 'reference' && target === domReference) {\n stopEvent(event);\n if (event.shiftKey) {\n enqueueFocus(els[els.length - 1]);\n } else {\n enqueueFocus(els[1]);\n }\n }\n if (orderRef.current[1] === 'floating' && target === floatingFocusElement && event.shiftKey) {\n stopEvent(event);\n enqueueFocus(els[0]);\n }\n }\n }\n const doc = getDocument(floatingFocusElement);\n doc.addEventListener('keydown', onKeyDown);\n return () => {\n doc.removeEventListener('keydown', onKeyDown);\n };\n }, [disabled, domReference, floatingFocusElement, modal, orderRef, isUntrappedTypeableCombobox, getTabbableContent, getTabbableElements]);\n React.useEffect(() => {\n if (disabled) return;\n if (!floating) return;\n function handleFocusIn(event) {\n const target = getTarget(event);\n const tabbableContent = getTabbableContent();\n const tabbableIndex = tabbableContent.indexOf(target);\n if (tabbableIndex !== -1) {\n tabbableIndexRef.current = tabbableIndex;\n }\n }\n floating.addEventListener('focusin', handleFocusIn);\n return () => {\n floating.removeEventListener('focusin', handleFocusIn);\n };\n }, [disabled, floating, getTabbableContent]);\n React.useEffect(() => {\n if (disabled) return;\n if (!closeOnFocusOut) return;\n\n // In Safari, buttons lose focus when pressing them.\n function handlePointerDown() {\n isPointerDownRef.current = true;\n setTimeout(() => {\n isPointerDownRef.current = false;\n });\n }\n function handleFocusOutside(event) {\n const relatedTarget = event.relatedTarget;\n queueMicrotask(() => {\n const movedToUnrelatedNode = !(contains(domReference, relatedTarget) || contains(floating, relatedTarget) || contains(relatedTarget, floating) || contains(portalContext == null ? void 0 : portalContext.portalNode, relatedTarget) || relatedTarget != null && relatedTarget.hasAttribute(createAttribute('focus-guard')) || tree && (getChildren(tree.nodesRef.current, nodeId).find(node => {\n var _node$context, _node$context2;\n return contains((_node$context = node.context) == null ? void 0 : _node$context.elements.floating, relatedTarget) || contains((_node$context2 = node.context) == null ? void 0 : _node$context2.elements.domReference, relatedTarget);\n }) || getAncestors(tree.nodesRef.current, nodeId).find(node => {\n var _node$context3, _node$context4;\n return ((_node$context3 = node.context) == null ? void 0 : _node$context3.elements.floating) === relatedTarget || ((_node$context4 = node.context) == null ? void 0 : _node$context4.elements.domReference) === relatedTarget;\n })));\n\n // Restore focus to the previous tabbable element index to prevent\n // focus from being lost outside the floating tree.\n if (restoreFocus && movedToUnrelatedNode && activeElement(getDocument(floatingFocusElement)) === getDocument(floatingFocusElement).body) {\n // Let `FloatingPortal` effect knows that focus is still inside the\n // floating tree.\n if (isHTMLElement(floatingFocusElement)) {\n floatingFocusElement.focus();\n }\n const prevTabbableIndex = tabbableIndexRef.current;\n const tabbableContent = getTabbableContent();\n const nodeToFocus = tabbableContent[prevTabbableIndex] || tabbableContent[tabbableContent.length - 1] || floatingFocusElement;\n if (isHTMLElement(nodeToFocus)) {\n nodeToFocus.focus();\n }\n }\n\n // Focus did not move inside the floating tree, and there are no tabbable\n // portal guards to handle closing.\n if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current &&\n // Fix React 18 Strict Mode returnFocus due to double rendering.\n relatedTarget !== getPreviouslyFocusedElement()) {\n preventReturnFocusRef.current = true;\n onOpenChange(false, event, 'focus-out');\n }\n });\n }\n if (floating && isHTMLElement(domReference)) {\n domReference.addEventListener('focusout', handleFocusOutside);\n domReference.addEventListener('pointerdown', handlePointerDown);\n floating.addEventListener('focusout', handleFocusOutside);\n return () => {\n domReference.removeEventListener('focusout', handleFocusOutside);\n domReference.removeEventListener('pointerdown', handlePointerDown);\n floating.removeEventListener('focusout', handleFocusOutside);\n };\n }\n }, [disabled, domReference, floating, floatingFocusElement, modal, nodeId, tree, portalContext, onOpenChange, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox]);\n React.useEffect(() => {\n var _portalContext$portal;\n if (disabled) return;\n\n // Don't hide portals nested within the parent portal.\n const portalNodes = Array.from((portalContext == null || (_portalContext$portal = portalContext.portalNode) == null ? void 0 : _portalContext$portal.querySelectorAll(\"[\" + createAttribute('portal') + \"]\")) || []);\n if (floating) {\n const insideElements = [floating, ...portalNodes, startDismissButtonRef.current, endDismissButtonRef.current, orderRef.current.includes('reference') || isUntrappedTypeableCombobox ? domReference : null].filter(x => x != null);\n const cleanup = modal || isUntrappedTypeableCombobox ? markOthers(insideElements, guards, !guards) : markOthers(insideElements);\n return () => {\n cleanup();\n };\n }\n }, [disabled, domReference, floating, modal, orderRef, portalContext, isUntrappedTypeableCombobox, guards]);\n index(() => {\n if (disabled || !isHTMLElement(floatingFocusElement)) return;\n const doc = getDocument(floatingFocusElement);\n const previouslyFocusedElement = activeElement(doc);\n\n // Wait for any layout effect state setters to execute to set `tabIndex`.\n queueMicrotask(() => {\n const focusableElements = getTabbableElements(floatingFocusElement);\n const initialFocusValue = initialFocusRef.current;\n const elToFocus = (typeof initialFocusValue === 'number' ? focusableElements[initialFocusValue] : initialFocusValue.current) || floatingFocusElement;\n const focusAlreadyInsideFloatingEl = contains(floatingFocusElement, previouslyFocusedElement);\n if (!ignoreInitialFocus && !focusAlreadyInsideFloatingEl && open) {\n enqueueFocus(elToFocus, {\n preventScroll: elToFocus === floatingFocusElement\n });\n }\n });\n }, [disabled, open, floatingFocusElement, ignoreInitialFocus, getTabbableElements, initialFocusRef]);\n index(() => {\n if (disabled || !floatingFocusElement) return;\n let preventReturnFocusScroll = false;\n const doc = getDocument(floatingFocusElement);\n const previouslyFocusedElement = activeElement(doc);\n const contextData = dataRef.current;\n let openEvent = contextData.openEvent;\n addPreviouslyFocusedElement(previouslyFocusedElement);\n\n // Dismissing via outside press should always ignore `returnFocus` to\n // prevent unwanted scrolling.\n function onOpenChange(_ref) {\n let {\n open,\n reason,\n event,\n nested\n } = _ref;\n if (open) {\n openEvent = event;\n }\n if (reason === 'escape-key' && refs.domReference.current) {\n addPreviouslyFocusedElement(refs.domReference.current);\n }\n if (reason === 'hover' && event.type === 'mouseleave') {\n preventReturnFocusRef.current = true;\n }\n if (reason !== 'outside-press') return;\n if (nested) {\n preventReturnFocusRef.current = false;\n preventReturnFocusScroll = true;\n } else {\n preventReturnFocusRef.current = !(isVirtualClick(event) || isVirtualPointerEvent(event));\n }\n }\n events.on('openchange', onOpenChange);\n const fallbackEl = doc.createElement('span');\n fallbackEl.setAttribute('tabindex', '-1');\n fallbackEl.setAttribute('aria-hidden', 'true');\n Object.assign(fallbackEl.style, HIDDEN_STYLES);\n if (isInsidePortal && domReference) {\n domReference.insertAdjacentElement('afterend', fallbackEl);\n }\n function getReturnElement() {\n if (typeof returnFocusRef.current === 'boolean') {\n return getPreviouslyFocusedElement() || fallbackEl;\n }\n return returnFocusRef.current.current || fallbackEl;\n }\n return () => {\n events.off('openchange', onOpenChange);\n const activeEl = activeElement(doc);\n const isFocusInsideFloatingTree = contains(floating, activeEl) || tree && getChildren(tree.nodesRef.current, nodeId).some(node => {\n var _node$context5;\n return contains((_node$context5 = node.context) == null ? void 0 : _node$context5.elements.floating, activeEl);\n });\n const shouldFocusReference = isFocusInsideFloatingTree || openEvent && ['click', 'mousedown'].includes(openEvent.type);\n if (shouldFocusReference && refs.domReference.current) {\n addPreviouslyFocusedElement(refs.domReference.current);\n }\n const returnElement = getReturnElement();\n queueMicrotask(() => {\n if (\n // eslint-disable-next-line react-hooks/exhaustive-deps\n returnFocusRef.current && !preventReturnFocusRef.current && isHTMLElement(returnElement) && (\n // If the focus moved somewhere else after mount, avoid returning focus\n // since it likely entered a different element which should be\n // respected: https://github.com/floating-ui/floating-ui/issues/2607\n returnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) {\n returnElement.focus({\n preventScroll: preventReturnFocusScroll\n });\n }\n fallbackEl.remove();\n });\n };\n }, [disabled, floating, floatingFocusElement, returnFocusRef, dataRef, refs, events, tree, nodeId, isInsidePortal, domReference]);\n React.useEffect(() => {\n // The `returnFocus` cleanup behavior is inside a microtask; ensure we\n // wait for it to complete before resetting the flag.\n queueMicrotask(() => {\n preventReturnFocusRef.current = false;\n });\n }, [disabled]);\n\n // Synchronize the `context` & `modal` value to the FloatingPortal context.\n // It will decide whether or not it needs to render its own guards.\n index(() => {\n if (disabled) return;\n if (!portalContext) return;\n portalContext.setFocusManagerState({\n modal,\n closeOnFocusOut,\n open,\n onOpenChange,\n refs\n });\n return () => {\n portalContext.setFocusManagerState(null);\n };\n }, [disabled, portalContext, modal, open, onOpenChange, refs, closeOnFocusOut]);\n index(() => {\n if (disabled) return;\n if (!floatingFocusElement) return;\n if (typeof MutationObserver !== 'function') return;\n if (ignoreInitialFocus) return;\n const handleMutation = () => {\n const tabIndex = floatingFocusElement.getAttribute('tabindex');\n const tabbableContent = getTabbableContent();\n const activeEl = activeElement(getDocument(floating));\n const tabbableIndex = tabbableContent.indexOf(activeEl);\n if (tabbableIndex !== -1) {\n tabbableIndexRef.current = tabbableIndex;\n }\n if (orderRef.current.includes('floating') || activeEl !== refs.domReference.current && tabbableContent.length === 0) {\n if (tabIndex !== '0') {\n floatingFocusElement.setAttribute('tabindex', '0');\n }\n } else if (tabIndex !== '-1') {\n floatingFocusElement.setAttribute('tabindex', '-1');\n }\n };\n handleMutation();\n const observer = new MutationObserver(handleMutation);\n observer.observe(floatingFocusElement, {\n childList: true,\n subtree: true,\n attributes: true\n });\n return () => {\n observer.disconnect();\n };\n }, [disabled, floating, floatingFocusElement, refs, orderRef, getTabbableContent, ignoreInitialFocus]);\n function renderDismissButton(location) {\n if (disabled || !visuallyHiddenDismiss || !modal) {\n return null;\n }\n return /*#__PURE__*/React.createElement(VisuallyHiddenDismiss, {\n ref: location === 'start' ? startDismissButtonRef : endDismissButtonRef,\n onClick: event => onOpenChange(false, event.nativeEvent)\n }, typeof visuallyHiddenDismiss === 'string' ? visuallyHiddenDismiss : 'Dismiss');\n }\n const shouldRenderGuards = !disabled && guards && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal);\n return /*#__PURE__*/React.createElement(React.Fragment, null, shouldRenderGuards && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"inside\",\n ref: portalContext == null ? void 0 : portalContext.beforeInsideRef,\n onFocus: event => {\n if (modal) {\n const els = getTabbableElements();\n enqueueFocus(order[0] === 'reference' ? els[0] : els[els.length - 1]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n preventReturnFocusRef.current = false;\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const nextTabbable = getNextTabbable() || domReference;\n nextTabbable == null || nextTabbable.focus();\n } else {\n var _portalContext$before;\n (_portalContext$before = portalContext.beforeOutsideRef.current) == null || _portalContext$before.focus();\n }\n }\n }\n }), !isUntrappedTypeableCombobox && renderDismissButton('start'), children, renderDismissButton('end'), shouldRenderGuards && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"inside\",\n ref: portalContext == null ? void 0 : portalContext.afterInsideRef,\n onFocus: event => {\n if (modal) {\n enqueueFocus(getTabbableElements()[0]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n if (closeOnFocusOut) {\n preventReturnFocusRef.current = true;\n }\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const prevTabbable = getPreviousTabbable() || domReference;\n prevTabbable == null || prevTabbable.focus();\n } else {\n var _portalContext$afterO;\n (_portalContext$afterO = portalContext.afterOutsideRef.current) == null || _portalContext$afterO.focus();\n }\n }\n }\n }));\n}\n\nlet lockCount = 0;\nfunction enableScrollLock() {\n const isIOS = /iP(hone|ad|od)|iOS/.test(getPlatform());\n const bodyStyle = document.body.style;\n // RTL <body> scrollbar\n const scrollbarX = Math.round(document.documentElement.getBoundingClientRect().left) + document.documentElement.scrollLeft;\n const paddingProp = scrollbarX ? 'paddingLeft' : 'paddingRight';\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n const scrollX = bodyStyle.left ? parseFloat(bodyStyle.left) : window.scrollX;\n const scrollY = bodyStyle.top ? parseFloat(bodyStyle.top) : window.scrollY;\n bodyStyle.overflow = 'hidden';\n if (scrollbarWidth) {\n bodyStyle[paddingProp] = scrollbarWidth + \"px\";\n }\n\n // Only iOS doesn't respect `overflow: hidden` on document.body, and this\n // technique has fewer side effects.\n if (isIOS) {\n var _window$visualViewpor, _window$visualViewpor2;\n // iOS 12 does not support `visualViewport`.\n const offsetLeft = ((_window$visualViewpor = window.visualViewport) == null ? void 0 : _window$visualViewpor.offsetLeft) || 0;\n const offsetTop = ((_window$visualViewpor2 = window.visualViewport) == null ? void 0 : _window$visualViewpor2.offsetTop) || 0;\n Object.assign(bodyStyle, {\n position: 'fixed',\n top: -(scrollY - Math.floor(offsetTop)) + \"px\",\n left: -(scrollX - Math.floor(offsetLeft)) + \"px\",\n right: '0'\n });\n }\n return () => {\n Object.assign(bodyStyle, {\n overflow: '',\n [paddingProp]: ''\n });\n if (isIOS) {\n Object.assign(bodyStyle, {\n position: '',\n top: '',\n left: '',\n right: ''\n });\n window.scrollTo(scrollX, scrollY);\n }\n };\n}\nlet cleanup = () => {};\n\n/**\n * Provides base styling for a fixed overlay element to dim content or block\n * pointer events behind a floating element.\n * It's a regular `<div>`, so it can be styled via any CSS solution you prefer.\n * @see https://floating-ui.com/docs/FloatingOverlay\n */\nconst FloatingOverlay = /*#__PURE__*/React.forwardRef(function FloatingOverlay(props, ref) {\n const {\n lockScroll = false,\n ...rest\n } = props;\n index(() => {\n if (!lockScroll) return;\n lockCount++;\n if (lockCount === 1) {\n cleanup = enableScrollLock();\n }\n return () => {\n lockCount--;\n if (lockCount === 0) {\n cleanup();\n }\n };\n }, [lockScroll]);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref\n }, rest, {\n style: {\n position: 'fixed',\n overflow: 'auto',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...rest.style\n }\n }));\n});\n\nfunction isButtonTarget(event) {\n return isHTMLElement(event.target) && event.target.tagName === 'BUTTON';\n}\nfunction isSpaceIgnored(element) {\n return isTypeableElement(element);\n}\n/**\n * Opens or closes the floating element when clicking the reference element.\n * @see https://floating-ui.com/docs/useClick\n */\nfunction useClick(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n elements: {\n domReference\n }\n } = context;\n const {\n enabled = true,\n event: eventOption = 'click',\n toggle = true,\n ignoreMouse = false,\n keyboardHandlers = true,\n stickIfOpen = true\n } = props;\n const pointerTypeRef = React.useRef();\n const didKeyDownRef = React.useRef(false);\n const reference = React.useMemo(() => ({\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onMouseDown(event) {\n const pointerType = pointerTypeRef.current;\n\n // Ignore all buttons except for the \"main\" button.\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button !== 0) return;\n if (eventOption === 'click') return;\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'mousedown' : true)) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n // Prevent stealing focus from the floating element\n event.preventDefault();\n onOpenChange(true, event.nativeEvent, 'click');\n }\n },\n onClick(event) {\n const pointerType = pointerTypeRef.current;\n if (eventOption === 'mousedown' && pointerTypeRef.current) {\n pointerTypeRef.current = undefined;\n return;\n }\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'click' : true)) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n },\n onKeyDown(event) {\n pointerTypeRef.current = undefined;\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {\n return;\n }\n if (event.key === ' ' && !isSpaceIgnored(domReference)) {\n // Prevent scrolling\n event.preventDefault();\n didKeyDownRef.current = true;\n }\n if (event.key === 'Enter') {\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n }\n },\n onKeyUp(event) {\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {\n return;\n }\n if (event.key === ' ' && didKeyDownRef.current) {\n didKeyDownRef.current = false;\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n }\n }\n }), [dataRef, domReference, eventOption, ignoreMouse, keyboardHandlers, onOpenChange, open, stickIfOpen, toggle]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nfunction createVirtualElement(domElement, data) {\n let offsetX = null;\n let offsetY = null;\n let isAutoUpdateEvent = false;\n return {\n contextElement: domElement || undefined,\n getBoundingClientRect() {\n var _data$dataRef$current;\n const domRect = (domElement == null ? void 0 : domElement.getBoundingClientRect()) || {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n const isXAxis = data.axis === 'x' || data.axis === 'both';\n const isYAxis = data.axis === 'y' || data.axis === 'both';\n const canTrackCursorOnAutoUpdate = ['mouseenter', 'mousemove'].includes(((_data$dataRef$current = data.dataRef.current.openEvent) == null ? void 0 : _data$dataRef$current.type) || '') && data.pointerType !== 'touch';\n let width = domRect.width;\n let height = domRect.height;\n let x = domRect.x;\n let y = domRect.y;\n if (offsetX == null && data.x && isXAxis) {\n offsetX = domRect.x - data.x;\n }\n if (offsetY == null && data.y && isYAxis) {\n offsetY = domRect.y - data.y;\n }\n x -= offsetX || 0;\n y -= offsetY || 0;\n width = 0;\n height = 0;\n if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {\n width = data.axis === 'y' ? domRect.width : 0;\n height = data.axis === 'x' ? domRect.height : 0;\n x = isXAxis && data.x != null ? data.x : x;\n y = isYAxis && data.y != null ? data.y : y;\n } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {\n height = data.axis === 'x' ? domRect.height : height;\n width = data.axis === 'y' ? domRect.width : width;\n }\n isAutoUpdateEvent = true;\n return {\n width,\n height,\n x,\n y,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x\n };\n }\n };\n}\nfunction isMouseBasedEvent(event) {\n return event != null && event.clientX != null;\n}\n/**\n * Positions the floating element relative to a client point (in the viewport),\n * such as the mouse position. By default, it follows the mouse cursor.\n * @see https://floating-ui.com/docs/useClientPoint\n */\nfunction useClientPoint(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n dataRef,\n elements: {\n floating,\n domReference\n },\n refs\n } = context;\n const {\n enabled = true,\n axis = 'both',\n x = null,\n y = null\n } = props;\n const initialRef = React.useRef(false);\n const cleanupListenerRef = React.useRef(null);\n const [pointerType, setPointerType] = React.useState();\n const [reactive, setReactive] = React.useState([]);\n const setReference = useEffectEvent((x, y) => {\n if (initialRef.current) return;\n\n // Prevent setting if the open event was not a mouse-like one\n // (e.g. focus to open, then hover over the reference element).\n // Only apply if the event exists.\n if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {\n return;\n }\n refs.setPositionReference(createVirtualElement(domReference, {\n x,\n y,\n axis,\n dataRef,\n pointerType\n }));\n });\n const handleReferenceEnterOrMove = useEffectEvent(event => {\n if (x != null || y != null) return;\n if (!open) {\n setReference(event.clientX, event.clientY);\n } else if (!cleanupListenerRef.current) {\n // If there's no cleanup, there's no listener, but we want to ensure\n // we add the listener if the cursor landed on the floating element and\n // then back on the reference (i.e. it's interactive).\n setReactive([]);\n }\n });\n\n // If the pointer is a mouse-like pointer, we want to continue following the\n // mouse even if the floating element is transitioning out. On touch\n // devices, this is undesirable because the floating element will move to\n // the dismissal touch point.\n const openCheck = isMouseLikePointerType(pointerType) ? floating : open;\n const addListener = React.useCallback(() => {\n // Explicitly specified `x`/`y` coordinates shouldn't add a listener.\n if (!openCheck || !enabled || x != null || y != null) return;\n const win = getWindow(floating);\n function handleMouseMove(event) {\n const target = getTarget(event);\n if (!contains(floating, target)) {\n setReference(event.clientX, event.clientY);\n } else {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n }\n }\n if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {\n win.addEventListener('mousemove', handleMouseMove);\n const cleanup = () => {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n };\n cleanupListenerRef.current = cleanup;\n return cleanup;\n }\n refs.setPositionReference(domReference);\n }, [openCheck, enabled, x, y, floating, dataRef, refs, domReference, setReference]);\n React.useEffect(() => {\n return addListener();\n }, [addListener, reactive]);\n React.useEffect(() => {\n if (enabled && !floating) {\n initialRef.current = false;\n }\n }, [enabled, floating]);\n React.useEffect(() => {\n if (!enabled && open) {\n initialRef.current = true;\n }\n }, [enabled, open]);\n index(() => {\n if (enabled && (x != null || y != null)) {\n initialRef.current = false;\n setReference(x, y);\n }\n }, [enabled, x, y, setReference]);\n const reference = React.useMemo(() => {\n function setPointerTypeRef(_ref) {\n let {\n pointerType\n } = _ref;\n setPointerType(pointerType);\n }\n return {\n onPointerDown: setPointerTypeRef,\n onPointerEnter: setPointerTypeRef,\n onMouseMove: handleReferenceEnterOrMove,\n onMouseEnter: handleReferenceEnterOrMove\n };\n }, [handleReferenceEnterOrMove]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nconst bubbleHandlerKeys = {\n pointerdown: 'onPointerDown',\n mousedown: 'onMouseDown',\n click: 'onClick'\n};\nconst captureHandlerKeys = {\n pointerdown: 'onPointerDownCapture',\n mousedown: 'onMouseDownCapture',\n click: 'onClickCapture'\n};\nconst normalizeProp = normalizable => {\n var _normalizable$escapeK, _normalizable$outside;\n return {\n escapeKey: typeof normalizable === 'boolean' ? normalizable : (_normalizable$escapeK = normalizable == null ? void 0 : normalizable.escapeKey) != null ? _normalizable$escapeK : false,\n outsidePress: typeof normalizable === 'boolean' ? normalizable : (_normalizable$outside = normalizable == null ? void 0 : normalizable.outsidePress) != null ? _normalizable$outside : true\n };\n};\n/**\n * Closes the floating element when a dismissal is requested — by default, when\n * the user presses the `escape` key or outside of the floating element.\n * @see https://floating-ui.com/docs/useDismiss\n */\nfunction useDismiss(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n elements,\n dataRef\n } = context;\n const {\n enabled = true,\n escapeKey = true,\n outsidePress: unstable_outsidePress = true,\n outsidePressEvent = 'pointerdown',\n referencePress = false,\n referencePressEvent = 'pointerdown',\n ancestorScroll = false,\n bubbles,\n capture\n } = props;\n const tree = useFloatingTree();\n const outsidePressFn = useEffectEvent(typeof unstable_outsidePress === 'function' ? unstable_outsidePress : () => false);\n const outsidePress = typeof unstable_outsidePress === 'function' ? outsidePressFn : unstable_outsidePress;\n const insideReactTreeRef = React.useRef(false);\n const endedOrStartedInsideRef = React.useRef(false);\n const {\n escapeKey: escapeKeyBubbles,\n outsidePress: outsidePressBubbles\n } = normalizeProp(bubbles);\n const {\n escapeKey: escapeKeyCapture,\n outsidePress: outsidePressCapture\n } = normalizeProp(capture);\n const isComposingRef = React.useRef(false);\n const closeOnEscapeKeyDown = useEffectEvent(event => {\n var _dataRef$current$floa;\n if (!open || !enabled || !escapeKey || event.key !== 'Escape') {\n return;\n }\n\n // Wait until IME is settled. Pressing `Escape` while composing should\n // close the compose menu, but not the floating element.\n if (isComposingRef.current) {\n return;\n }\n const nodeId = (_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.nodeId;\n const children = tree ? getChildren(tree.nodesRef.current, nodeId) : [];\n if (!escapeKeyBubbles) {\n event.stopPropagation();\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context;\n if ((_child$context = child.context) != null && _child$context.open && !child.context.dataRef.current.__escapeKeyBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n }\n onOpenChange(false, isReactEvent(event) ? event.nativeEvent : event, 'escape-key');\n });\n const closeOnEscapeKeyDownCapture = useEffectEvent(event => {\n var _getTarget2;\n const callback = () => {\n var _getTarget;\n closeOnEscapeKeyDown(event);\n (_getTarget = getTarget(event)) == null || _getTarget.removeEventListener('keydown', callback);\n };\n (_getTarget2 = getTarget(event)) == null || _getTarget2.addEventListener('keydown', callback);\n });\n const closeOnPressOutside = useEffectEvent(event => {\n var _dataRef$current$floa2;\n // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n const insideReactTree = insideReactTreeRef.current;\n insideReactTreeRef.current = false;\n\n // When click outside is lazy (`click` event), handle dragging.\n // Don't close if:\n // - The click started inside the floating element.\n // - The click ended inside the floating element.\n const endedOrStartedInside = endedOrStartedInsideRef.current;\n endedOrStartedInsideRef.current = false;\n if (outsidePressEvent === 'click' && endedOrStartedInside) {\n return;\n }\n if (insideReactTree) {\n return;\n }\n if (typeof outsidePress === 'function' && !outsidePress(event)) {\n return;\n }\n const target = getTarget(event);\n const inertSelector = \"[\" + createAttribute('inert') + \"]\";\n const markers = getDocument(elements.floating).querySelectorAll(inertSelector);\n let targetRootAncestor = isElement(target) ? target : null;\n while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {\n const nextParent = getParentNode(targetRootAncestor);\n if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {\n break;\n }\n targetRootAncestor = nextParent;\n }\n\n // Check if the click occurred on a third-party element injected after the\n // floating element rendered.\n if (markers.length && isElement(target) && !isRootElement(target) &&\n // Clicked on a direct ancestor (e.g. FloatingOverlay).\n !contains(target, elements.floating) &&\n // If the target root element contains none of the markers, then the\n // element was injected after the floating element rendered.\n Array.from(markers).every(marker => !contains(targetRootAncestor, marker))) {\n return;\n }\n\n // Check if the click occurred on the scrollbar\n if (isHTMLElement(target) && floating) {\n // In Firefox, `target.scrollWidth > target.clientWidth` for inline\n // elements.\n const canScrollX = target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n const canScrollY = target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n let xCond = canScrollY && event.offsetX > target.clientWidth;\n\n // In some browsers it is possible to change the <body> (or window)\n // scrollbar to the left side, but is very rare and is difficult to\n // check for. Plus, for modal dialogs with backdrops, it is more\n // important that the backdrop is checked but not so much the window.\n if (canScrollY) {\n const isRTL = getComputedStyle(target).direction === 'rtl';\n if (isRTL) {\n xCond = event.offsetX <= target.offsetWidth - target.clientWidth;\n }\n }\n if (xCond || canScrollX && event.offsetY > target.clientHeight) {\n return;\n }\n }\n const nodeId = (_dataRef$current$floa2 = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa2.nodeId;\n const targetIsInsideChildren = tree && getChildren(tree.nodesRef.current, nodeId).some(node => {\n var _node$context;\n return isEventTargetWithin(event, (_node$context = node.context) == null ? void 0 : _node$context.elements.floating);\n });\n if (isEventTargetWithin(event, elements.floating) || isEventTargetWithin(event, elements.domReference) || targetIsInsideChildren) {\n return;\n }\n const children = tree ? getChildren(tree.nodesRef.current, nodeId) : [];\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context2;\n if ((_child$context2 = child.context) != null && _child$context2.open && !child.context.dataRef.current.__outsidePressBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n onOpenChange(false, event, 'outside-press');\n });\n const closeOnPressOutsideCapture = useEffectEvent(event => {\n var _getTarget4;\n const callback = () => {\n var _getTarget3;\n closeOnPressOutside(event);\n (_getTarget3 = getTarget(event)) == null || _getTarget3.removeEventListener(outsidePressEvent, callback);\n };\n (_getTarget4 = getTarget(event)) == null || _getTarget4.addEventListener(outsidePressEvent, callback);\n });\n React.useEffect(() => {\n if (!open || !enabled) {\n return;\n }\n dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;\n dataRef.current.__outsidePressBubbles = outsidePressBubbles;\n let compositionTimeout = -1;\n function onScroll(event) {\n onOpenChange(false, event, 'ancestor-scroll');\n }\n function handleCompositionStart() {\n window.clearTimeout(compositionTimeout);\n isComposingRef.current = true;\n }\n function handleCompositionEnd() {\n // Safari fires `compositionend` before `keydown`, so we need to wait\n // until the next tick to set `isComposing` to `false`.\n // https://bugs.webkit.org/show_bug.cgi?id=165004\n compositionTimeout = window.setTimeout(() => {\n isComposingRef.current = false;\n },\n // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.\n // Only apply to WebKit for the test to remain 0ms.\n isWebKit() ? 5 : 0);\n }\n const doc = getDocument(elements.floating);\n if (escapeKey) {\n doc.addEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n doc.addEventListener('compositionstart', handleCompositionStart);\n doc.addEventListener('compositionend', handleCompositionEnd);\n }\n outsidePress && doc.addEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n let ancestors = [];\n if (ancestorScroll) {\n if (isElement(elements.domReference)) {\n ancestors = getOverflowAncestors(elements.domReference);\n }\n if (isElement(elements.floating)) {\n ancestors = ancestors.concat(getOverflowAncestors(elements.floating));\n }\n if (!isElement(elements.reference) && elements.reference && elements.reference.contextElement) {\n ancestors = ancestors.concat(getOverflowAncestors(elements.reference.contextElement));\n }\n }\n\n // Ignore the visual viewport for scrolling dismissal (allow pinch-zoom)\n ancestors = ancestors.filter(ancestor => {\n var _doc$defaultView;\n return ancestor !== ((_doc$defaultView = doc.defaultView) == null ? void 0 : _doc$defaultView.visualViewport);\n });\n ancestors.forEach(ancestor => {\n ancestor.addEventListener('scroll', onScroll, {\n passive: true\n });\n });\n return () => {\n if (escapeKey) {\n doc.removeEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n doc.removeEventListener('compositionstart', handleCompositionStart);\n doc.removeEventListener('compositionend', handleCompositionEnd);\n }\n outsidePress && doc.removeEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n ancestors.forEach(ancestor => {\n ancestor.removeEventListener('scroll', onScroll);\n });\n window.clearTimeout(compositionTimeout);\n };\n }, [dataRef, elements, escapeKey, outsidePress, outsidePressEvent, open, onOpenChange, ancestorScroll, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, escapeKeyCapture, closeOnEscapeKeyDownCapture, closeOnPressOutside, outsidePressCapture, closeOnPressOutsideCapture]);\n React.useEffect(() => {\n insideReactTreeRef.current = false;\n }, [outsidePress, outsidePressEvent]);\n const reference = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n [bubbleHandlerKeys[referencePressEvent]]: event => {\n if (referencePress) {\n onOpenChange(false, event.nativeEvent, 'reference-press');\n }\n }\n }), [closeOnEscapeKeyDown, onOpenChange, referencePress, referencePressEvent]);\n const floating = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n onMouseDown() {\n endedOrStartedInsideRef.current = true;\n },\n onMouseUp() {\n endedOrStartedInsideRef.current = true;\n },\n [captureHandlerKeys[outsidePressEvent]]: () => {\n insideReactTreeRef.current = true;\n }\n }), [closeOnEscapeKeyDown, outsidePressEvent]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}\n\nfunction useFloatingRootContext(options) {\n const {\n open = false,\n onOpenChange: onOpenChangeProp,\n elements: elementsProp\n } = options;\n const floatingId = useId();\n const dataRef = React.useRef({});\n const [events] = React.useState(() => createPubSub());\n const nested = useFloatingParentNodeId() != null;\n if (process.env.NODE_ENV !== \"production\") {\n const optionDomReference = elementsProp.reference;\n if (optionDomReference && !isElement(optionDomReference)) {\n error('Cannot pass a virtual element to the `elements.reference` option,', 'as it must be a real DOM element. Use `refs.setPositionReference()`', 'instead.');\n }\n }\n const [positionReference, setPositionReference] = React.useState(elementsProp.reference);\n const onOpenChange = useEffectEvent((open, event, reason) => {\n dataRef.current.openEvent = open ? event : undefined;\n events.emit('openchange', {\n open,\n event,\n reason,\n nested\n });\n onOpenChangeProp == null || onOpenChangeProp(open, event, reason);\n });\n const refs = React.useMemo(() => ({\n setPositionReference\n }), []);\n const elements = React.useMemo(() => ({\n reference: positionReference || elementsProp.reference || null,\n floating: elementsProp.floating || null,\n domReference: elementsProp.reference\n }), [positionReference, elementsProp.reference, elementsProp.floating]);\n return React.useMemo(() => ({\n dataRef,\n open,\n onOpenChange,\n elements,\n events,\n floatingId,\n refs\n }), [open, onOpenChange, elements, events, floatingId, refs]);\n}\n\n/**\n * Provides data to position a floating element and context to add interactions.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n nodeId\n } = options;\n const internalRootContext = useFloatingRootContext({\n ...options,\n elements: {\n reference: null,\n floating: null,\n ...options.elements\n }\n });\n const rootContext = options.rootContext || internalRootContext;\n const computedElements = rootContext.elements;\n const [_domReference, setDomReference] = React.useState(null);\n const [positionReference, _setPositionReference] = React.useState(null);\n const optionDomReference = computedElements == null ? void 0 : computedElements.domReference;\n const domReference = optionDomReference || _domReference;\n const domReferenceRef = React.useRef(null);\n const tree = useFloatingTree();\n index(() => {\n if (domReference) {\n domReferenceRef.current = domReference;\n }\n }, [domReference]);\n const position = useFloating$1({\n ...options,\n elements: {\n ...computedElements,\n ...(positionReference && {\n reference: positionReference\n })\n }\n });\n const setPositionReference = React.useCallback(node => {\n const computedPositionReference = isElement(node) ? {\n getBoundingClientRect: () => node.getBoundingClientRect(),\n contextElement: node\n } : node;\n // Store the positionReference in state if the DOM reference is specified externally via the\n // `elements.reference` option. This ensures that it won't be overridden on future renders.\n _setPositionReference(computedPositionReference);\n position.refs.setReference(computedPositionReference);\n }, [position.refs]);\n const setReference = React.useCallback(node => {\n if (isElement(node) || node === null) {\n domReferenceRef.current = node;\n setDomReference(node);\n }\n\n // Backwards-compatibility for passing a virtual element to `reference`\n // after it has set the DOM reference.\n if (isElement(position.refs.reference.current) || position.refs.reference.current === null ||\n // Don't allow setting virtual elements using the old technique back to\n // `null` to support `positionReference` + an unstable `reference`\n // callback ref.\n node !== null && !isElement(node)) {\n position.refs.setReference(node);\n }\n }, [position.refs]);\n const refs = React.useMemo(() => ({\n ...position.refs,\n setReference,\n setPositionReference,\n domReference: domReferenceRef\n }), [position.refs, setReference, setPositionReference]);\n const elements = React.useMemo(() => ({\n ...position.elements,\n domReference: domReference\n }), [position.elements, domReference]);\n const context = React.useMemo(() => ({\n ...position,\n ...rootContext,\n refs,\n elements,\n nodeId\n }), [position, refs, elements, nodeId, rootContext]);\n index(() => {\n rootContext.dataRef.current.floatingContext = context;\n const node = tree == null ? void 0 : tree.nodesRef.current.find(node => node.id === nodeId);\n if (node) {\n node.context = context;\n }\n });\n return React.useMemo(() => ({\n ...position,\n context,\n refs,\n elements\n }), [position, refs, elements, context]);\n}\n\n/**\n * Opens the floating element while the reference element has focus, like CSS\n * `:focus`.\n * @see https://floating-ui.com/docs/useFocus\n */\nfunction useFocus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n events,\n dataRef,\n elements\n } = context;\n const {\n enabled = true,\n visibleOnly = true\n } = props;\n const blockFocusRef = React.useRef(false);\n const timeoutRef = React.useRef();\n const keyboardModalityRef = React.useRef(true);\n React.useEffect(() => {\n if (!enabled) return;\n const win = getWindow(elements.domReference);\n\n // If the reference was focused and the user left the tab/window, and the\n // floating element was not open, the focus should be blocked when they\n // return to the tab/window.\n function onBlur() {\n if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument(elements.domReference))) {\n blockFocusRef.current = true;\n }\n }\n function onKeyDown() {\n keyboardModalityRef.current = true;\n }\n win.addEventListener('blur', onBlur);\n win.addEventListener('keydown', onKeyDown, true);\n return () => {\n win.removeEventListener('blur', onBlur);\n win.removeEventListener('keydown', onKeyDown, true);\n };\n }, [elements.domReference, open, enabled]);\n React.useEffect(() => {\n if (!enabled) return;\n function onOpenChange(_ref) {\n let {\n reason\n } = _ref;\n if (reason === 'reference-press' || reason === 'escape-key') {\n blockFocusRef.current = true;\n }\n }\n events.on('openchange', onOpenChange);\n return () => {\n events.off('openchange', onOpenChange);\n };\n }, [events, enabled]);\n React.useEffect(() => {\n return () => {\n clearTimeout(timeoutRef.current);\n };\n }, []);\n const reference = React.useMemo(() => ({\n onPointerDown(event) {\n if (isVirtualPointerEvent(event.nativeEvent)) return;\n keyboardModalityRef.current = false;\n },\n onMouseLeave() {\n blockFocusRef.current = false;\n },\n onFocus(event) {\n if (blockFocusRef.current) return;\n const target = getTarget(event.nativeEvent);\n if (visibleOnly && isElement(target)) {\n try {\n // Mac Safari unreliably matches `:focus-visible` on the reference\n // if focus was outside the page initially - use the fallback\n // instead.\n if (isSafari() && isMac()) throw Error();\n if (!target.matches(':focus-visible')) return;\n } catch (e) {\n // Old browsers will throw an error when using `:focus-visible`.\n if (!keyboardModalityRef.current && !isTypeableElement(target)) {\n return;\n }\n }\n }\n onOpenChange(true, event.nativeEvent, 'focus');\n },\n onBlur(event) {\n blockFocusRef.current = false;\n const relatedTarget = event.relatedTarget;\n const nativeEvent = event.nativeEvent;\n\n // Hit the non-modal focus management portal guard. Focus will be\n // moved into the floating element immediately after.\n const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute('focus-guard')) && relatedTarget.getAttribute('data-type') === 'outside';\n\n // Wait for the window blur listener to fire.\n timeoutRef.current = window.setTimeout(() => {\n var _dataRef$current$floa;\n const activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);\n\n // Focus left the page, keep it open.\n if (!relatedTarget && activeEl === elements.domReference) return;\n\n // When focusing the reference element (e.g. regular click), then\n // clicking into the floating element, prevent it from hiding.\n // Note: it must be focusable, e.g. `tabindex=\"-1\"`.\n // We can not rely on relatedTarget to point to the correct element\n // as it will only point to the shadow host of the newly focused element\n // and not the element that actually has received focus if it is located\n // inside a shadow root.\n if (contains((_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.refs.floating.current, activeEl) || contains(elements.domReference, activeEl) || movedToFocusGuard) {\n return;\n }\n onOpenChange(false, nativeEvent, 'focus');\n });\n }\n }), [dataRef, elements.domReference, onOpenChange, visibleOnly]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nconst ACTIVE_KEY = 'active';\nconst SELECTED_KEY = 'selected';\nfunction mergeProps(userProps, propsList, elementKey) {\n const map = new Map();\n const isItem = elementKey === 'item';\n let domUserProps = userProps;\n if (isItem && userProps) {\n const {\n [ACTIVE_KEY]: _,\n [SELECTED_KEY]: __,\n ...validProps\n } = userProps;\n domUserProps = validProps;\n }\n return {\n ...(elementKey === 'floating' && {\n tabIndex: -1,\n [FOCUSABLE_ATTRIBUTE]: ''\n }),\n ...domUserProps,\n ...propsList.map(value => {\n const propsOrGetProps = value ? value[elementKey] : null;\n if (typeof propsOrGetProps === 'function') {\n return userProps ? propsOrGetProps(userProps) : null;\n }\n return propsOrGetProps;\n }).concat(userProps).reduce((acc, props) => {\n if (!props) {\n return acc;\n }\n Object.entries(props).forEach(_ref => {\n let [key, value] = _ref;\n if (isItem && [ACTIVE_KEY, SELECTED_KEY].includes(key)) {\n return;\n }\n if (key.indexOf('on') === 0) {\n if (!map.has(key)) {\n map.set(key, []);\n }\n if (typeof value === 'function') {\n var _map$get;\n (_map$get = map.get(key)) == null || _map$get.push(value);\n acc[key] = function () {\n var _map$get2;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_map$get2 = map.get(key)) == null ? void 0 : _map$get2.map(fn => fn(...args)).find(val => val !== undefined);\n };\n }\n } else {\n acc[key] = value;\n }\n });\n return acc;\n }, {})\n };\n}\n/**\n * Merges an array of interaction hooks' props into prop getters, allowing\n * event handler functions to be composed together without overwriting one\n * another.\n * @see https://floating-ui.com/docs/useInteractions\n */\nfunction useInteractions(propsList) {\n if (propsList === void 0) {\n propsList = [];\n }\n const referenceDeps = propsList.map(key => key == null ? void 0 : key.reference);\n const floatingDeps = propsList.map(key => key == null ? void 0 : key.floating);\n const itemDeps = propsList.map(key => key == null ? void 0 : key.item);\n const getReferenceProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'reference'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n referenceDeps);\n const getFloatingProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'floating'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n floatingDeps);\n const getItemProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'item'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n itemDeps);\n return React.useMemo(() => ({\n getReferenceProps,\n getFloatingProps,\n getItemProps\n }), [getReferenceProps, getFloatingProps, getItemProps]);\n}\n\nlet isPreventScrollSupported = false;\nfunction doSwitch(orientation, vertical, horizontal) {\n switch (orientation) {\n case 'vertical':\n return vertical;\n case 'horizontal':\n return horizontal;\n default:\n return vertical || horizontal;\n }\n}\nfunction isMainOrientationKey(key, orientation) {\n const vertical = key === ARROW_UP || key === ARROW_DOWN;\n const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n const vertical = key === ARROW_DOWN;\n const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal) || key === 'Enter' || key === ' ' || key === '';\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n const horizontal = key === ARROW_DOWN;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n const horizontal = key === ARROW_UP;\n return doSwitch(orientation, vertical, horizontal);\n}\n/**\n * Adds arrow key-based navigation of a list of items, either using real DOM\n * focus or virtual focus.\n * @see https://floating-ui.com/docs/useListNavigation\n */\nfunction useListNavigation(context, props) {\n const {\n open,\n onOpenChange,\n elements\n } = context;\n const {\n listRef,\n activeIndex,\n onNavigate: unstable_onNavigate = () => {},\n enabled = true,\n selectedIndex = null,\n allowEscape = false,\n loop = false,\n nested = false,\n rtl = false,\n virtual = false,\n focusItemOnOpen = 'auto',\n focusItemOnHover = true,\n openOnArrowKeyDown = true,\n disabledIndices = undefined,\n orientation = 'vertical',\n cols = 1,\n scrollItemIntoView = true,\n virtualItemRef,\n itemSizes,\n dense = false\n } = props;\n if (process.env.NODE_ENV !== \"production\") {\n if (allowEscape) {\n if (!loop) {\n warn('`useListNavigation` looping must be enabled to allow escaping.');\n }\n if (!virtual) {\n warn('`useListNavigation` must be virtual to allow escaping.');\n }\n }\n if (orientation === 'vertical' && cols > 1) {\n warn('In grid list navigation mode (`cols` > 1), the `orientation` should', 'be either \"horizontal\" or \"both\".');\n }\n }\n const floatingFocusElement = getFloatingFocusElement(elements.floating);\n const floatingFocusElementRef = useLatestRef(floatingFocusElement);\n const parentId = useFloatingParentNodeId();\n const tree = useFloatingTree();\n const onNavigate = useEffectEvent(unstable_onNavigate);\n const typeableComboboxReference = isTypeableCombobox(elements.domReference);\n const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n const indexRef = React.useRef(selectedIndex != null ? selectedIndex : -1);\n const keyRef = React.useRef(null);\n const isPointerModalityRef = React.useRef(true);\n const previousOnNavigateRef = React.useRef(onNavigate);\n const previousMountedRef = React.useRef(!!elements.floating);\n const previousOpenRef = React.useRef(open);\n const forceSyncFocus = React.useRef(false);\n const forceScrollIntoViewRef = React.useRef(false);\n const disabledIndicesRef = useLatestRef(disabledIndices);\n const latestOpenRef = useLatestRef(open);\n const scrollItemIntoViewRef = useLatestRef(scrollItemIntoView);\n const selectedIndexRef = useLatestRef(selectedIndex);\n const [activeId, setActiveId] = React.useState();\n const [virtualId, setVirtualId] = React.useState();\n const focusItem = useEffectEvent(function (listRef, indexRef, forceScrollIntoView) {\n if (forceScrollIntoView === void 0) {\n forceScrollIntoView = false;\n }\n function runFocus(item) {\n if (virtual) {\n setActiveId(item.id);\n tree == null || tree.events.emit('virtualfocus', item);\n if (virtualItemRef) {\n virtualItemRef.current = item;\n }\n } else {\n enqueueFocus(item, {\n preventScroll: true,\n // Mac Safari does not move the virtual cursor unless the focus call\n // is sync. However, for the very first focus call, we need to wait\n // for the position to be ready in order to prevent unwanted\n // scrolling. This means the virtual cursor will not move to the first\n // item when first opening the floating element, but will on\n // subsequent calls. `preventScroll` is supported in modern Safari,\n // so we can use that instead.\n // iOS Safari must be async or the first item will not be focused.\n sync: isMac() && isSafari() ? isPreventScrollSupported || forceSyncFocus.current : false\n });\n }\n }\n const initialItem = listRef.current[indexRef.current];\n if (initialItem) {\n runFocus(initialItem);\n }\n requestAnimationFrame(() => {\n const waitedItem = listRef.current[indexRef.current] || initialItem;\n if (!waitedItem) return;\n if (!initialItem) {\n runFocus(waitedItem);\n }\n const scrollIntoViewOptions = scrollItemIntoViewRef.current;\n const shouldScrollIntoView = scrollIntoViewOptions && item && (forceScrollIntoView || !isPointerModalityRef.current);\n if (shouldScrollIntoView) {\n // JSDOM doesn't support `.scrollIntoView()` but it's widely supported\n // by all browsers.\n waitedItem.scrollIntoView == null || waitedItem.scrollIntoView(typeof scrollIntoViewOptions === 'boolean' ? {\n block: 'nearest',\n inline: 'nearest'\n } : scrollIntoViewOptions);\n }\n });\n });\n index(() => {\n document.createElement('div').focus({\n get preventScroll() {\n isPreventScrollSupported = true;\n return false;\n }\n });\n }, []);\n\n // Sync `selectedIndex` to be the `activeIndex` upon opening the floating\n // element. Also, reset `activeIndex` upon closing the floating element.\n index(() => {\n if (!enabled) return;\n if (open && elements.floating) {\n if (focusItemOnOpenRef.current && selectedIndex != null) {\n // Regardless of the pointer modality, we want to ensure the selected\n // item comes into view when the floating element is opened.\n forceScrollIntoViewRef.current = true;\n indexRef.current = selectedIndex;\n onNavigate(selectedIndex);\n }\n } else if (previousMountedRef.current) {\n // Since the user can specify `onNavigate` conditionally\n // (onNavigate: open ? setActiveIndex : setSelectedIndex),\n // we store and call the previous function.\n indexRef.current = -1;\n previousOnNavigateRef.current(null);\n }\n }, [enabled, open, elements.floating, selectedIndex, onNavigate]);\n\n // Sync `activeIndex` to be the focused item while the floating element is\n // open.\n index(() => {\n if (!enabled) return;\n if (open && elements.floating) {\n if (activeIndex == null) {\n forceSyncFocus.current = false;\n if (selectedIndexRef.current != null) {\n return;\n }\n\n // Reset while the floating element was open (e.g. the list changed).\n if (previousMountedRef.current) {\n indexRef.current = -1;\n focusItem(listRef, indexRef);\n }\n\n // Initial sync.\n if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n let runs = 0;\n const waitForListPopulated = () => {\n if (listRef.current[0] == null) {\n // Avoid letting the browser paint if possible on the first try,\n // otherwise use rAF. Don't try more than twice, since something\n // is wrong otherwise.\n if (runs < 2) {\n const scheduler = runs ? requestAnimationFrame : queueMicrotask;\n scheduler(waitForListPopulated);\n }\n runs++;\n } else {\n indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinIndex(listRef, disabledIndicesRef.current) : getMaxIndex(listRef, disabledIndicesRef.current);\n keyRef.current = null;\n onNavigate(indexRef.current);\n }\n };\n waitForListPopulated();\n }\n } else if (!isIndexOutOfBounds(listRef, activeIndex)) {\n indexRef.current = activeIndex;\n focusItem(listRef, indexRef, forceScrollIntoViewRef.current);\n forceScrollIntoViewRef.current = false;\n }\n }\n }, [enabled, open, elements.floating, activeIndex, selectedIndexRef, nested, listRef, orientation, rtl, onNavigate, focusItem, disabledIndicesRef]);\n\n // Ensure the parent floating element has focus when a nested child closes\n // to allow arrow key navigation to work after the pointer leaves the child.\n index(() => {\n var _nodes$find;\n if (!enabled || elements.floating || !tree || virtual || !previousMountedRef.current) {\n return;\n }\n const nodes = tree.nodesRef.current;\n const parent = (_nodes$find = nodes.find(node => node.id === parentId)) == null || (_nodes$find = _nodes$find.context) == null ? void 0 : _nodes$find.elements.floating;\n const activeEl = activeElement(getDocument(elements.floating));\n const treeContainsActiveEl = nodes.some(node => node.context && contains(node.context.elements.floating, activeEl));\n if (parent && !treeContainsActiveEl && isPointerModalityRef.current) {\n parent.focus({\n preventScroll: true\n });\n }\n }, [enabled, elements.floating, tree, parentId, virtual]);\n index(() => {\n if (!enabled) return;\n if (!tree) return;\n if (!virtual) return;\n if (parentId) return;\n function handleVirtualFocus(item) {\n setVirtualId(item.id);\n if (virtualItemRef) {\n virtualItemRef.current = item;\n }\n }\n tree.events.on('virtualfocus', handleVirtualFocus);\n return () => {\n tree.events.off('virtualfocus', handleVirtualFocus);\n };\n }, [enabled, tree, virtual, parentId, virtualItemRef]);\n index(() => {\n previousOnNavigateRef.current = onNavigate;\n previousMountedRef.current = !!elements.floating;\n });\n index(() => {\n if (!open) {\n keyRef.current = null;\n }\n }, [open]);\n index(() => {\n previousOpenRef.current = open;\n }, [open]);\n const hasActiveIndex = activeIndex != null;\n const item = React.useMemo(() => {\n function syncCurrentTarget(currentTarget) {\n if (!open) return;\n const index = listRef.current.indexOf(currentTarget);\n if (index !== -1) {\n onNavigate(index);\n }\n }\n const props = {\n onFocus(_ref) {\n let {\n currentTarget\n } = _ref;\n syncCurrentTarget(currentTarget);\n },\n onClick: _ref2 => {\n let {\n currentTarget\n } = _ref2;\n return currentTarget.focus({\n preventScroll: true\n });\n },\n // Safari\n ...(focusItemOnHover && {\n onMouseMove(_ref3) {\n let {\n currentTarget\n } = _ref3;\n syncCurrentTarget(currentTarget);\n },\n onPointerLeave(_ref4) {\n let {\n pointerType\n } = _ref4;\n if (!isPointerModalityRef.current || pointerType === 'touch') {\n return;\n }\n indexRef.current = -1;\n focusItem(listRef, indexRef);\n onNavigate(null);\n if (!virtual) {\n enqueueFocus(floatingFocusElementRef.current, {\n preventScroll: true\n });\n }\n }\n })\n };\n return props;\n }, [open, floatingFocusElementRef, focusItem, focusItemOnHover, listRef, onNavigate, virtual]);\n const commonOnKeyDown = useEffectEvent(event => {\n isPointerModalityRef.current = false;\n forceSyncFocus.current = true;\n\n // When composing a character, Chrome fires ArrowDown twice. Firefox/Safari\n // don't appear to suffer from this. `event.isComposing` is avoided due to\n // Safari not supporting it properly (although it's not needed in the first\n // place for Safari, just avoiding any possible issues).\n if (event.which === 229) {\n return;\n }\n\n // If the floating element is animating out, ignore navigation. Otherwise,\n // the `activeIndex` gets set to 0 despite not being open so the next time\n // the user ArrowDowns, the first item won't be focused.\n if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) {\n return;\n }\n if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl)) {\n stopEvent(event);\n onOpenChange(false, event.nativeEvent, 'list-navigation');\n if (isHTMLElement(elements.domReference)) {\n if (virtual) {\n tree == null || tree.events.emit('virtualfocus', elements.domReference);\n } else {\n elements.domReference.focus();\n }\n }\n return;\n }\n const currentIndex = indexRef.current;\n const minIndex = getMinIndex(listRef, disabledIndices);\n const maxIndex = getMaxIndex(listRef, disabledIndices);\n if (!typeableComboboxReference) {\n if (event.key === 'Home') {\n stopEvent(event);\n indexRef.current = minIndex;\n onNavigate(indexRef.current);\n }\n if (event.key === 'End') {\n stopEvent(event);\n indexRef.current = maxIndex;\n onNavigate(indexRef.current);\n }\n }\n\n // Grid navigation.\n if (cols > 1) {\n const sizes = itemSizes || Array.from({\n length: listRef.current.length\n }, () => ({\n width: 1,\n height: 1\n }));\n // To calculate movements on the grid, we use hypothetical cell indices\n // as if every item was 1x1, then convert back to real indices.\n const cellMap = buildCellMap(sizes, cols, dense);\n const minGridIndex = cellMap.findIndex(index => index != null && !isDisabled(listRef.current, index, disabledIndices));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isDisabled(listRef.current, index, disabledIndices) ? cellIndex : foundIndex, -1);\n const index = cellMap[getGridNavigatedIndex({\n current: cellMap.map(itemIndex => itemIndex != null ? listRef.current[itemIndex] : null)\n }, {\n event,\n orientation,\n loop,\n rtl,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getCellIndices([...(disabledIndices || listRef.current.map((_, index) => isDisabled(listRef.current, index) ? index : undefined)), undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getCellIndexOfCorner(indexRef.current > maxIndex ? minIndex : indexRef.current, sizes, cellMap, cols,\n // use a corner matching the edge closest to the direction\n // we're moving in so we don't end up in the same item. Prefer\n // top/left over bottom/right.\n event.key === ARROW_DOWN ? 'bl' : event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT) ? 'tr' : 'tl'),\n stopEvent: true\n })];\n if (index != null) {\n indexRef.current = index;\n onNavigate(indexRef.current);\n }\n if (orientation === 'both') {\n return;\n }\n }\n if (isMainOrientationKey(event.key, orientation)) {\n stopEvent(event);\n\n // Reset the index if no item is focused.\n if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n onNavigate(indexRef.current);\n return;\n }\n if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n if (loop) {\n indexRef.current = currentIndex >= maxIndex ? allowEscape && currentIndex !== listRef.current.length ? -1 : minIndex : findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n });\n } else {\n indexRef.current = Math.min(maxIndex, findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n }));\n }\n } else {\n if (loop) {\n indexRef.current = currentIndex <= minIndex ? allowEscape && currentIndex !== -1 ? listRef.current.length : maxIndex : findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n });\n } else {\n indexRef.current = Math.max(minIndex, findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n }));\n }\n }\n if (isIndexOutOfBounds(listRef, indexRef.current)) {\n onNavigate(null);\n } else {\n onNavigate(indexRef.current);\n }\n }\n });\n const ariaActiveDescendantProp = React.useMemo(() => {\n return virtual && open && hasActiveIndex && {\n 'aria-activedescendant': virtualId || activeId\n };\n }, [virtual, open, hasActiveIndex, virtualId, activeId]);\n const floating = React.useMemo(() => {\n return {\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n ...(!isTypeableCombobox(elements.domReference) && ariaActiveDescendantProp),\n onKeyDown: commonOnKeyDown,\n onPointerMove() {\n isPointerModalityRef.current = true;\n }\n };\n }, [ariaActiveDescendantProp, commonOnKeyDown, elements.domReference, orientation]);\n const reference = React.useMemo(() => {\n function checkVirtualMouse(event) {\n if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n function checkVirtualPointer(event) {\n // `pointerdown` fires first, reset the state then perform the checks.\n focusItemOnOpenRef.current = focusItemOnOpen;\n if (focusItemOnOpen === 'auto' && isVirtualPointerEvent(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n return {\n ...ariaActiveDescendantProp,\n onKeyDown(event) {\n isPointerModalityRef.current = false;\n const isArrowKey = event.key.startsWith('Arrow');\n const isHomeOrEndKey = ['Home', 'End'].includes(event.key);\n const isMoveKey = isArrowKey || isHomeOrEndKey;\n const isCrossOpenKey = isCrossOrientationOpenKey(event.key, orientation, rtl);\n const isCrossCloseKey = isCrossOrientationCloseKey(event.key, orientation, rtl);\n const isMainKey = isMainOrientationKey(event.key, orientation);\n const isNavigationKey = (nested ? isCrossOpenKey : isMainKey) || event.key === 'Enter' || event.key.trim() === '';\n if (virtual && open) {\n const rootNode = tree == null ? void 0 : tree.nodesRef.current.find(node => node.parentId == null);\n const deepestNode = tree && rootNode ? getDeepestNode(tree.nodesRef.current, rootNode.id) : null;\n if (isMoveKey && deepestNode && virtualItemRef) {\n const eventObject = new KeyboardEvent('keydown', {\n key: event.key,\n bubbles: true\n });\n if (isCrossOpenKey || isCrossCloseKey) {\n var _deepestNode$context, _deepestNode$context2;\n const isCurrentTarget = ((_deepestNode$context = deepestNode.context) == null ? void 0 : _deepestNode$context.elements.domReference) === event.currentTarget;\n const dispatchItem = isCrossCloseKey && !isCurrentTarget ? (_deepestNode$context2 = deepestNode.context) == null ? void 0 : _deepestNode$context2.elements.domReference : isCrossOpenKey ? listRef.current.find(item => (item == null ? void 0 : item.id) === activeId) : null;\n if (dispatchItem) {\n stopEvent(event);\n dispatchItem.dispatchEvent(eventObject);\n setVirtualId(undefined);\n }\n }\n if ((isMainKey || isHomeOrEndKey) && deepestNode.context) {\n if (deepestNode.context.open && deepestNode.parentId && event.currentTarget !== deepestNode.context.elements.domReference) {\n var _deepestNode$context$;\n stopEvent(event);\n (_deepestNode$context$ = deepestNode.context.elements.domReference) == null || _deepestNode$context$.dispatchEvent(eventObject);\n return;\n }\n }\n }\n return commonOnKeyDown(event);\n }\n\n // If a floating element should not open on arrow key down, avoid\n // setting `activeIndex` while it's closed.\n if (!open && !openOnArrowKeyDown && isArrowKey) {\n return;\n }\n if (isNavigationKey) {\n keyRef.current = nested && isMainKey ? null : event.key;\n }\n if (nested) {\n if (isCrossOpenKey) {\n stopEvent(event);\n if (open) {\n indexRef.current = getMinIndex(listRef, disabledIndicesRef.current);\n onNavigate(indexRef.current);\n } else {\n onOpenChange(true, event.nativeEvent, 'list-navigation');\n }\n }\n return;\n }\n if (isMainKey) {\n if (selectedIndex != null) {\n indexRef.current = selectedIndex;\n }\n stopEvent(event);\n if (!open && openOnArrowKeyDown) {\n onOpenChange(true, event.nativeEvent, 'list-navigation');\n } else {\n commonOnKeyDown(event);\n }\n if (open) {\n onNavigate(indexRef.current);\n }\n }\n },\n onFocus() {\n if (open && !virtual) {\n onNavigate(null);\n }\n },\n onPointerDown: checkVirtualPointer,\n onMouseDown: checkVirtualMouse,\n onClick: checkVirtualMouse\n };\n }, [activeId, ariaActiveDescendantProp, commonOnKeyDown, disabledIndicesRef, focusItemOnOpen, listRef, nested, onNavigate, onOpenChange, open, openOnArrowKeyDown, orientation, rtl, selectedIndex, tree, virtual, virtualItemRef]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n item\n } : {}, [enabled, reference, floating, item]);\n}\n\nconst componentRoleToAriaRoleMap = /*#__PURE__*/new Map([['select', 'listbox'], ['combobox', 'listbox'], ['label', false]]);\n\n/**\n * Adds base screen reader props to the reference and floating elements for a\n * given floating element `role`.\n * @see https://floating-ui.com/docs/useRole\n */\nfunction useRole(context, props) {\n var _componentRoleToAriaR;\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n floatingId\n } = context;\n const {\n enabled = true,\n role = 'dialog'\n } = props;\n const ariaRole = (_componentRoleToAriaR = componentRoleToAriaRoleMap.get(role)) != null ? _componentRoleToAriaR : role;\n const referenceId = useId();\n const parentId = useFloatingParentNodeId();\n const isNested = parentId != null;\n const reference = React.useMemo(() => {\n if (ariaRole === 'tooltip' || role === 'label') {\n return {\n [\"aria-\" + (role === 'label' ? 'labelledby' : 'describedby')]: open ? floatingId : undefined\n };\n }\n return {\n 'aria-expanded': open ? 'true' : 'false',\n 'aria-haspopup': ariaRole === 'alertdialog' ? 'dialog' : ariaRole,\n 'aria-controls': open ? floatingId : undefined,\n ...(ariaRole === 'listbox' && {\n role: 'combobox'\n }),\n ...(ariaRole === 'menu' && {\n id: referenceId\n }),\n ...(ariaRole === 'menu' && isNested && {\n role: 'menuitem'\n }),\n ...(role === 'select' && {\n 'aria-autocomplete': 'none'\n }),\n ...(role === 'combobox' && {\n 'aria-autocomplete': 'list'\n })\n };\n }, [ariaRole, floatingId, isNested, open, referenceId, role]);\n const floating = React.useMemo(() => {\n const floatingProps = {\n id: floatingId,\n ...(ariaRole && {\n role: ariaRole\n })\n };\n if (ariaRole === 'tooltip' || role === 'label') {\n return floatingProps;\n }\n return {\n ...floatingProps,\n ...(ariaRole === 'menu' && {\n 'aria-labelledby': referenceId\n })\n };\n }, [ariaRole, floatingId, referenceId, role]);\n const item = React.useCallback(_ref => {\n let {\n active,\n selected\n } = _ref;\n const commonProps = {\n role: 'option',\n ...(active && {\n id: floatingId + \"-option\"\n })\n };\n\n // For `menu`, we are unable to tell if the item is a `menuitemradio`\n // or `menuitemcheckbox`. For backwards-compatibility reasons, also\n // avoid defaulting to `menuitem` as it may overwrite custom role props.\n switch (role) {\n case 'select':\n return {\n ...commonProps,\n 'aria-selected': active && selected\n };\n case 'combobox':\n {\n return {\n ...commonProps,\n ...(active && {\n 'aria-selected': true\n })\n };\n }\n }\n return {};\n }, [floatingId, role]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n item\n } : {}, [enabled, reference, floating, item]);\n}\n\n// Converts a JS style key like `backgroundColor` to a CSS transition-property\n// like `background-color`.\nconst camelCaseToKebabCase = str => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());\nfunction execWithArgsOrReturn(valueOrFn, args) {\n return typeof valueOrFn === 'function' ? valueOrFn(args) : valueOrFn;\n}\nfunction useDelayUnmount(open, durationMs) {\n const [isMounted, setIsMounted] = React.useState(open);\n if (open && !isMounted) {\n setIsMounted(true);\n }\n React.useEffect(() => {\n if (!open && isMounted) {\n const timeout = setTimeout(() => setIsMounted(false), durationMs);\n return () => clearTimeout(timeout);\n }\n }, [open, isMounted, durationMs]);\n return isMounted;\n}\n/**\n * Provides a status string to apply CSS transitions to a floating element,\n * correctly handling placement-aware transitions.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstatus\n */\nfunction useTransitionStatus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n elements: {\n floating\n }\n } = context;\n const {\n duration = 250\n } = props;\n const isNumberDuration = typeof duration === 'number';\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [status, setStatus] = React.useState('unmounted');\n const isMounted = useDelayUnmount(open, closeDuration);\n if (!isMounted && status === 'close') {\n setStatus('unmounted');\n }\n index(() => {\n if (!floating) return;\n if (open) {\n setStatus('initial');\n const frame = requestAnimationFrame(() => {\n setStatus('open');\n });\n return () => {\n cancelAnimationFrame(frame);\n };\n }\n setStatus('close');\n }, [open, floating]);\n return {\n isMounted,\n status\n };\n}\n/**\n * Provides styles to apply CSS transitions to a floating element, correctly\n * handling placement-aware transitions. Wrapper around `useTransitionStatus`.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstyles\n */\nfunction useTransitionStyles(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n initial: unstable_initial = {\n opacity: 0\n },\n open: unstable_open,\n close: unstable_close,\n common: unstable_common,\n duration = 250\n } = props;\n const placement = context.placement;\n const side = placement.split('-')[0];\n const fnArgs = React.useMemo(() => ({\n side,\n placement\n }), [side, placement]);\n const isNumberDuration = typeof duration === 'number';\n const openDuration = (isNumberDuration ? duration : duration.open) || 0;\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [styles, setStyles] = React.useState(() => ({\n ...execWithArgsOrReturn(unstable_common, fnArgs),\n ...execWithArgsOrReturn(unstable_initial, fnArgs)\n }));\n const {\n isMounted,\n status\n } = useTransitionStatus(context, {\n duration\n });\n const initialRef = useLatestRef(unstable_initial);\n const openRef = useLatestRef(unstable_open);\n const closeRef = useLatestRef(unstable_close);\n const commonRef = useLatestRef(unstable_common);\n index(() => {\n const initialStyles = execWithArgsOrReturn(initialRef.current, fnArgs);\n const closeStyles = execWithArgsOrReturn(closeRef.current, fnArgs);\n const commonStyles = execWithArgsOrReturn(commonRef.current, fnArgs);\n const openStyles = execWithArgsOrReturn(openRef.current, fnArgs) || Object.keys(initialStyles).reduce((acc, key) => {\n acc[key] = '';\n return acc;\n }, {});\n if (status === 'initial') {\n setStyles(styles => ({\n transitionProperty: styles.transitionProperty,\n ...commonStyles,\n ...initialStyles\n }));\n }\n if (status === 'open') {\n setStyles({\n transitionProperty: Object.keys(openStyles).map(camelCaseToKebabCase).join(','),\n transitionDuration: openDuration + \"ms\",\n ...commonStyles,\n ...openStyles\n });\n }\n if (status === 'close') {\n const styles = closeStyles || initialStyles;\n setStyles({\n transitionProperty: Object.keys(styles).map(camelCaseToKebabCase).join(','),\n transitionDuration: closeDuration + \"ms\",\n ...commonStyles,\n ...styles\n });\n }\n }, [closeDuration, closeRef, initialRef, openRef, commonRef, openDuration, status, fnArgs]);\n return {\n isMounted,\n styles\n };\n}\n\n/**\n * Provides a matching callback that can be used to focus an item as the user\n * types, often used in tandem with `useListNavigation()`.\n * @see https://floating-ui.com/docs/useTypeahead\n */\nfunction useTypeahead(context, props) {\n var _ref;\n const {\n open,\n dataRef\n } = context;\n const {\n listRef,\n activeIndex,\n onMatch: unstable_onMatch,\n onTypingChange: unstable_onTypingChange,\n enabled = true,\n findMatch = null,\n resetMs = 750,\n ignoreKeys = [],\n selectedIndex = null\n } = props;\n const timeoutIdRef = React.useRef();\n const stringRef = React.useRef('');\n const prevIndexRef = React.useRef((_ref = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref : -1);\n const matchIndexRef = React.useRef(null);\n const onMatch = useEffectEvent(unstable_onMatch);\n const onTypingChange = useEffectEvent(unstable_onTypingChange);\n const findMatchRef = useLatestRef(findMatch);\n const ignoreKeysRef = useLatestRef(ignoreKeys);\n index(() => {\n if (open) {\n clearTimeout(timeoutIdRef.current);\n matchIndexRef.current = null;\n stringRef.current = '';\n }\n }, [open]);\n index(() => {\n // Sync arrow key navigation but not typeahead navigation.\n if (open && stringRef.current === '') {\n var _ref2;\n prevIndexRef.current = (_ref2 = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref2 : -1;\n }\n }, [open, selectedIndex, activeIndex]);\n const setTypingChange = useEffectEvent(value => {\n if (value) {\n if (!dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n } else {\n if (dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n }\n });\n const onKeyDown = useEffectEvent(event => {\n function getMatchingIndex(list, orderedList, string) {\n const str = findMatchRef.current ? findMatchRef.current(orderedList, string) : orderedList.find(text => (text == null ? void 0 : text.toLocaleLowerCase().indexOf(string.toLocaleLowerCase())) === 0);\n return str ? list.indexOf(str) : -1;\n }\n const listContent = listRef.current;\n if (stringRef.current.length > 0 && stringRef.current[0] !== ' ') {\n if (getMatchingIndex(listContent, listContent, stringRef.current) === -1) {\n setTypingChange(false);\n } else if (event.key === ' ') {\n stopEvent(event);\n }\n }\n if (listContent == null || ignoreKeysRef.current.includes(event.key) ||\n // Character key.\n event.key.length !== 1 ||\n // Modifier key.\n event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n if (open && event.key !== ' ') {\n stopEvent(event);\n setTypingChange(true);\n }\n\n // Bail out if the list contains a word like \"llama\" or \"aaron\". TODO:\n // allow it in this case, too.\n const allowRapidSuccessionOfFirstLetter = listContent.every(text => {\n var _text$, _text$2;\n return text ? ((_text$ = text[0]) == null ? void 0 : _text$.toLocaleLowerCase()) !== ((_text$2 = text[1]) == null ? void 0 : _text$2.toLocaleLowerCase()) : true;\n });\n\n // Allows the user to cycle through items that start with the same letter\n // in rapid succession.\n if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n }\n stringRef.current += event.key;\n clearTimeout(timeoutIdRef.current);\n timeoutIdRef.current = setTimeout(() => {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n setTypingChange(false);\n }, resetMs);\n const prevIndex = prevIndexRef.current;\n const index = getMatchingIndex(listContent, [...listContent.slice((prevIndex || 0) + 1), ...listContent.slice(0, (prevIndex || 0) + 1)], stringRef.current);\n if (index !== -1) {\n onMatch(index);\n matchIndexRef.current = index;\n } else if (event.key !== ' ') {\n stringRef.current = '';\n setTypingChange(false);\n }\n });\n const reference = React.useMemo(() => ({\n onKeyDown\n }), [onKeyDown]);\n const floating = React.useMemo(() => {\n return {\n onKeyDown,\n onKeyUp(event) {\n if (event.key === ' ') {\n setTypingChange(false);\n }\n }\n };\n }, [onKeyDown, setTypingChange]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}\n\nfunction getArgsWithCustomFloatingHeight(state, height) {\n return {\n ...state,\n rects: {\n ...state.rects,\n floating: {\n ...state.rects.floating,\n height\n }\n }\n };\n}\n/**\n * Positions the floating element such that an inner element inside of it is\n * anchored to the reference element.\n * @see https://floating-ui.com/docs/inner\n */\nconst inner = props => ({\n name: 'inner',\n options: props,\n async fn(state) {\n const {\n listRef,\n overflowRef,\n onFallbackChange,\n offset: innerOffset = 0,\n index = 0,\n minItemsVisible = 4,\n referenceOverflowThreshold = 0,\n scrollRef,\n ...detectOverflowOptions\n } = evaluate(props, state);\n const {\n rects,\n elements: {\n floating\n }\n } = state;\n const item = listRef.current[index];\n const scrollEl = (scrollRef == null ? void 0 : scrollRef.current) || floating;\n\n // Valid combinations:\n // 1. Floating element is the scrollRef and has a border (default)\n // 2. Floating element is not the scrollRef, floating element has a border\n // 3. Floating element is not the scrollRef, scrollRef has a border\n // Floating > {...getFloatingProps()} wrapper > scrollRef > items is not\n // allowed as VoiceOver doesn't work.\n const clientTop = floating.clientTop || scrollEl.clientTop;\n const floatingIsBordered = floating.clientTop !== 0;\n const scrollElIsBordered = scrollEl.clientTop !== 0;\n const floatingIsScrollEl = floating === scrollEl;\n if (process.env.NODE_ENV !== \"production\") {\n if (!state.placement.startsWith('bottom')) {\n warn('`placement` side must be \"bottom\" when using the `inner`', 'middleware.');\n }\n }\n if (!item) {\n return {};\n }\n const nextArgs = {\n ...state,\n ...(await offset(-item.offsetTop - floating.clientTop - rects.reference.height / 2 - item.offsetHeight / 2 - innerOffset).fn(state))\n };\n const overflow = await detectOverflow(getArgsWithCustomFloatingHeight(nextArgs, scrollEl.scrollHeight + clientTop + floating.clientTop), detectOverflowOptions);\n const refOverflow = await detectOverflow(nextArgs, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const diffY = max(0, overflow.top);\n const nextY = nextArgs.y + diffY;\n const isScrollable = scrollEl.scrollHeight > scrollEl.clientHeight;\n const rounder = isScrollable ? v => v : round;\n const maxHeight = rounder(max(0, scrollEl.scrollHeight + (floatingIsBordered && floatingIsScrollEl || scrollElIsBordered ? clientTop * 2 : 0) - diffY - max(0, overflow.bottom)));\n scrollEl.style.maxHeight = maxHeight + \"px\";\n scrollEl.scrollTop = diffY;\n\n // There is not enough space, fallback to standard anchored positioning\n if (onFallbackChange) {\n const shouldFallback = scrollEl.offsetHeight < item.offsetHeight * min(minItemsVisible, listRef.current.length) - 1 || refOverflow.top >= -referenceOverflowThreshold || refOverflow.bottom >= -referenceOverflowThreshold;\n ReactDOM.flushSync(() => onFallbackChange(shouldFallback));\n }\n if (overflowRef) {\n overflowRef.current = await detectOverflow(getArgsWithCustomFloatingHeight({\n ...nextArgs,\n y: nextY\n }, scrollEl.offsetHeight + clientTop + floating.clientTop), detectOverflowOptions);\n }\n return {\n y: nextY\n };\n }\n});\n/**\n * Changes the `inner` middleware's `offset` upon a `wheel` event to\n * expand the floating element's height, revealing more list items.\n * @see https://floating-ui.com/docs/inner\n */\nfunction useInnerOffset(context, props) {\n const {\n open,\n elements\n } = context;\n const {\n enabled = true,\n overflowRef,\n scrollRef,\n onChange: unstable_onChange\n } = props;\n const onChange = useEffectEvent(unstable_onChange);\n const controlledScrollingRef = React.useRef(false);\n const prevScrollTopRef = React.useRef(null);\n const initialOverflowRef = React.useRef(null);\n React.useEffect(() => {\n if (!enabled) return;\n function onWheel(e) {\n if (e.ctrlKey || !el || overflowRef.current == null) {\n return;\n }\n const dY = e.deltaY;\n const isAtTop = overflowRef.current.top >= -0.5;\n const isAtBottom = overflowRef.current.bottom >= -0.5;\n const remainingScroll = el.scrollHeight - el.clientHeight;\n const sign = dY < 0 ? -1 : 1;\n const method = dY < 0 ? 'max' : 'min';\n if (el.scrollHeight <= el.clientHeight) {\n return;\n }\n if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {\n e.preventDefault();\n ReactDOM.flushSync(() => {\n onChange(d => d + Math[method](dY, remainingScroll * sign));\n });\n } else if (/firefox/i.test(getUserAgent())) {\n // Needed to propagate scrolling during momentum scrolling phase once\n // it gets limited by the boundary. UX improvement, not critical.\n el.scrollTop += dY;\n }\n }\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (open && el) {\n el.addEventListener('wheel', onWheel);\n\n // Wait for the position to be ready.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n if (overflowRef.current != null) {\n initialOverflowRef.current = {\n ...overflowRef.current\n };\n }\n });\n return () => {\n prevScrollTopRef.current = null;\n initialOverflowRef.current = null;\n el.removeEventListener('wheel', onWheel);\n };\n }\n }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);\n const floating = React.useMemo(() => ({\n onKeyDown() {\n controlledScrollingRef.current = true;\n },\n onWheel() {\n controlledScrollingRef.current = false;\n },\n onPointerMove() {\n controlledScrollingRef.current = false;\n },\n onScroll() {\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (!overflowRef.current || !el || !controlledScrollingRef.current) {\n return;\n }\n if (prevScrollTopRef.current !== null) {\n const scrollDiff = el.scrollTop - prevScrollTopRef.current;\n if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {\n ReactDOM.flushSync(() => onChange(d => d + scrollDiff));\n }\n }\n\n // [Firefox] Wait for the height change to have been applied.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n });\n }\n }), [elements.floating, onChange, overflowRef, scrollRef]);\n return React.useMemo(() => enabled ? {\n floating\n } : {}, [enabled, floating]);\n}\n\nfunction isPointInPolygon(point, polygon) {\n const [x, y] = point;\n let isInside = false;\n const length = polygon.length;\n for (let i = 0, j = length - 1; i < length; j = i++) {\n const [xi, yi] = polygon[i] || [0, 0];\n const [xj, yj] = polygon[j] || [0, 0];\n const intersect = yi >= y !== yj >= y && x <= (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) {\n isInside = !isInside;\n }\n }\n return isInside;\n}\nfunction isInside(point, rect) {\n return point[0] >= rect.x && point[0] <= rect.x + rect.width && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n}\n/**\n * Generates a safe polygon area that the user can traverse without closing the\n * floating element once leaving the reference element.\n * @see https://floating-ui.com/docs/useHover#safepolygon\n */\nfunction safePolygon(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n buffer = 0.5,\n blockPointerEvents = false,\n requireIntent = true\n } = options;\n let timeoutId;\n let hasLanded = false;\n let lastX = null;\n let lastY = null;\n let lastCursorTime = performance.now();\n function getCursorSpeed(x, y) {\n const currentTime = performance.now();\n const elapsedTime = currentTime - lastCursorTime;\n if (lastX === null || lastY === null || elapsedTime === 0) {\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return null;\n }\n const deltaX = x - lastX;\n const deltaY = y - lastY;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n const speed = distance / elapsedTime; // px / ms\n\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return speed;\n }\n const fn = _ref => {\n let {\n x,\n y,\n placement,\n elements,\n onClose,\n nodeId,\n tree\n } = _ref;\n return function onMouseMove(event) {\n function close() {\n clearTimeout(timeoutId);\n onClose();\n }\n clearTimeout(timeoutId);\n if (!elements.domReference || !elements.floating || placement == null || x == null || y == null) {\n return;\n }\n const {\n clientX,\n clientY\n } = event;\n const clientPoint = [clientX, clientY];\n const target = getTarget(event);\n const isLeave = event.type === 'mouseleave';\n const isOverFloatingEl = contains(elements.floating, target);\n const isOverReferenceEl = contains(elements.domReference, target);\n const refRect = elements.domReference.getBoundingClientRect();\n const rect = elements.floating.getBoundingClientRect();\n const side = placement.split('-')[0];\n const cursorLeaveFromRight = x > rect.right - rect.width / 2;\n const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;\n const isOverReferenceRect = isInside(clientPoint, refRect);\n const isFloatingWider = rect.width > refRect.width;\n const isFloatingTaller = rect.height > refRect.height;\n const left = (isFloatingWider ? refRect : rect).left;\n const right = (isFloatingWider ? refRect : rect).right;\n const top = (isFloatingTaller ? refRect : rect).top;\n const bottom = (isFloatingTaller ? refRect : rect).bottom;\n if (isOverFloatingEl) {\n hasLanded = true;\n if (!isLeave) {\n return;\n }\n }\n if (isOverReferenceEl) {\n hasLanded = false;\n }\n if (isOverReferenceEl && !isLeave) {\n hasLanded = true;\n return;\n }\n\n // Prevent overlapping floating element from being stuck in an open-close\n // loop: https://github.com/floating-ui/floating-ui/issues/1910\n if (isLeave && isElement(event.relatedTarget) && contains(elements.floating, event.relatedTarget)) {\n return;\n }\n\n // If any nested child is open, abort.\n if (tree && getChildren(tree.nodesRef.current, nodeId).some(_ref2 => {\n let {\n context\n } = _ref2;\n return context == null ? void 0 : context.open;\n })) {\n return;\n }\n\n // If the pointer is leaving from the opposite side, the \"buffer\" logic\n // creates a point where the floating element remains open, but should be\n // ignored.\n // A constant of 1 handles floating point rounding errors.\n if (side === 'top' && y >= refRect.bottom - 1 || side === 'bottom' && y <= refRect.top + 1 || side === 'left' && x >= refRect.right - 1 || side === 'right' && x <= refRect.left + 1) {\n return close();\n }\n\n // Ignore when the cursor is within the rectangular trough between the\n // two elements. Since the triangle is created from the cursor point,\n // which can start beyond the ref element's edge, traversing back and\n // forth from the ref to the floating element can cause it to close. This\n // ensures it always remains open in that case.\n let rectPoly = [];\n switch (side) {\n case 'top':\n rectPoly = [[left, refRect.top + 1], [left, rect.bottom - 1], [right, rect.bottom - 1], [right, refRect.top + 1]];\n break;\n case 'bottom':\n rectPoly = [[left, rect.top + 1], [left, refRect.bottom - 1], [right, refRect.bottom - 1], [right, rect.top + 1]];\n break;\n case 'left':\n rectPoly = [[rect.right - 1, bottom], [rect.right - 1, top], [refRect.left + 1, top], [refRect.left + 1, bottom]];\n break;\n case 'right':\n rectPoly = [[refRect.right - 1, bottom], [refRect.right - 1, top], [rect.left + 1, top], [rect.left + 1, bottom]];\n break;\n }\n function getPolygon(_ref3) {\n let [x, y] = _ref3;\n switch (side) {\n case 'top':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.bottom - buffer : isFloatingWider ? rect.bottom - buffer : rect.top], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.bottom - buffer : rect.top : rect.bottom - buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'bottom':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.top + buffer : isFloatingWider ? rect.top + buffer : rect.bottom], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.top + buffer : rect.bottom : rect.top + buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'left':\n {\n const cursorPointOne = [x + buffer + 1, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x + buffer + 1, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.right - buffer : isFloatingTaller ? rect.right - buffer : rect.left, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.right - buffer : rect.left : rect.right - buffer, rect.bottom]];\n return [...commonPoints, cursorPointOne, cursorPointTwo];\n }\n case 'right':\n {\n const cursorPointOne = [x - buffer, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x - buffer, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.left + buffer : isFloatingTaller ? rect.left + buffer : rect.right, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.left + buffer : rect.right : rect.left + buffer, rect.bottom]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n }\n }\n if (isPointInPolygon([clientX, clientY], rectPoly)) {\n return;\n }\n if (hasLanded && !isOverReferenceRect) {\n return close();\n }\n if (!isLeave && requireIntent) {\n const cursorSpeed = getCursorSpeed(event.clientX, event.clientY);\n const cursorSpeedThreshold = 0.1;\n if (cursorSpeed !== null && cursorSpeed < cursorSpeedThreshold) {\n return close();\n }\n }\n if (!isPointInPolygon([clientX, clientY], getPolygon([x, y]))) {\n close();\n } else if (!hasLanded && requireIntent) {\n timeoutId = window.setTimeout(close, 40);\n }\n };\n };\n fn.__options = {\n blockPointerEvents\n };\n return fn;\n}\n\nexport { Composite, CompositeItem, FloatingArrow, FloatingDelayGroup, FloatingFocusManager, FloatingList, FloatingNode, FloatingOverlay, FloatingPortal, FloatingTree, inner, safePolygon, useClick, useClientPoint, useDelayGroup, useDelayGroupContext, useDismiss, useFloating, useFloatingNodeId, useFloatingParentNodeId, useFloatingPortalNode, useFloatingRootContext, useFloatingTree, useFocus, useHover, useId, useInnerOffset, useInteractions, useListItem, useListNavigation, useMergeRefs, useRole, useTransitionStatus, useTransitionStyles, useTypeahead };\n","import{autoUpdate as Z,flip as ee,inner as te,offset as ne,shift as le,size as re,useFloating as oe,useInnerOffset as ie,useInteractions as se}from\"@floating-ui/react\";import*as j from\"react\";import{createContext as _,useCallback as ae,useContext as R,useMemo as M,useRef as ue,useState as A}from\"react\";import{useDisposables as fe}from'../hooks/use-disposables.js';import{useEvent as z}from'../hooks/use-event.js';import{useIsoMorphicEffect as C}from'../hooks/use-iso-morphic-effect.js';let y=_({styles:void 0,setReference:()=>{},setFloating:()=>{},getReferenceProps:()=>({}),getFloatingProps:()=>({}),slot:{}});y.displayName=\"FloatingContext\";let H=_(null);H.displayName=\"PlacementContext\";function xe(e){return M(()=>e?typeof e==\"string\"?{to:e}:e:null,[e])}function ye(){return R(y).setReference}function Fe(){return R(y).getReferenceProps}function be(){let{getFloatingProps:e,slot:t}=R(y);return ae((...n)=>Object.assign({},e(...n),{\"data-anchor\":t.anchor}),[e,t])}function Re(e=null){e===!1&&(e=null),typeof e==\"string\"&&(e={to:e});let t=R(H),n=M(()=>e,[JSON.stringify(e,(r,o)=>{var u;return(u=o==null?void 0:o.outerHTML)!=null?u:o})]);C(()=>{t==null||t(n!=null?n:null)},[t,n]);let l=R(y);return M(()=>[l.setFloating,e?l.styles:{}],[l.setFloating,e,l.styles])}let q=4;function Me({children:e,enabled:t=!0}){let[n,l]=A(null),[r,o]=A(0),u=ue(null),[f,s]=A(null);pe(f);let i=t&&n!==null&&f!==null,{to:F=\"bottom\",gap:E=0,offset:v=0,padding:c=0,inner:P}=ce(n,f),[a,p=\"center\"]=F.split(\" \");C(()=>{i&&o(0)},[i]);let{refs:b,floatingStyles:w,context:g}=oe({open:i,placement:a===\"selection\"?p===\"center\"?\"bottom\":`bottom-${p}`:p===\"center\"?`${a}`:`${a}-${p}`,strategy:\"absolute\",transform:!1,middleware:[ne({mainAxis:a===\"selection\"?0:E,crossAxis:v}),le({padding:c}),a!==\"selection\"&&ee({padding:c}),a===\"selection\"&&P?te({...P,padding:c,overflowRef:u,offset:r,minItemsVisible:q,referenceOverflowThreshold:c,onFallbackChange(h){var O,W;if(!h)return;let d=g.elements.floating;if(!d)return;let T=parseFloat(getComputedStyle(d).scrollPaddingBottom)||0,$=Math.min(q,d.childElementCount),L=0,N=0;for(let m of(W=(O=g.elements.floating)==null?void 0:O.childNodes)!=null?W:[])if(m instanceof HTMLElement){let x=m.offsetTop,k=x+m.clientHeight+T,S=d.scrollTop,U=S+d.clientHeight;if(x>=S&&k<=U)$--;else{N=Math.max(0,Math.min(k,U)-Math.max(x,S)),L=m.clientHeight;break}}$>=1&&o(m=>{let x=L*$-N+T;return m>=x?m:x})}}):null,re({padding:c,apply({availableWidth:h,availableHeight:d,elements:T}){Object.assign(T.floating.style,{overflow:\"auto\",maxWidth:`${h}px`,maxHeight:`min(var(--anchor-max-height, 100vh), ${d}px)`})}})].filter(Boolean),whileElementsMounted:Z}),[I=a,B=p]=g.placement.split(\"-\");a===\"selection\"&&(I=\"selection\");let G=M(()=>({anchor:[I,B].filter(Boolean).join(\" \")}),[I,B]),K=ie(g,{overflowRef:u,onChange:o}),{getReferenceProps:Q,getFloatingProps:X}=se([K]),Y=z(h=>{s(h),b.setFloating(h)});return j.createElement(H.Provider,{value:l},j.createElement(y.Provider,{value:{setFloating:Y,setReference:b.setReference,styles:w,getReferenceProps:Q,getFloatingProps:X,slot:G}},e))}function pe(e){C(()=>{if(!e)return;let t=new MutationObserver(()=>{let n=window.getComputedStyle(e).maxHeight,l=parseFloat(n);if(isNaN(l))return;let r=parseInt(n);isNaN(r)||l!==r&&(e.style.maxHeight=`${Math.ceil(l)}px`)});return t.observe(e,{attributes:!0,attributeFilter:[\"style\"]}),()=>{t.disconnect()}},[e])}function ce(e,t){var o,u,f;let n=V((o=e==null?void 0:e.gap)!=null?o:\"var(--anchor-gap, 0)\",t),l=V((u=e==null?void 0:e.offset)!=null?u:\"var(--anchor-offset, 0)\",t),r=V((f=e==null?void 0:e.padding)!=null?f:\"var(--anchor-padding, 0)\",t);return{...e,gap:n,offset:l,padding:r}}function V(e,t,n=void 0){let l=fe(),r=z((s,i)=>{if(s==null)return[n,null];if(typeof s==\"number\")return[s,null];if(typeof s==\"string\"){if(!i)return[n,null];let F=J(s,i);return[F,E=>{let v=D(s);{let c=v.map(P=>window.getComputedStyle(i).getPropertyValue(P));l.requestAnimationFrame(function P(){l.nextFrame(P);let a=!1;for(let[b,w]of v.entries()){let g=window.getComputedStyle(i).getPropertyValue(w);if(c[b]!==g){c[b]=g,a=!0;break}}if(!a)return;let p=J(s,i);F!==p&&(E(p),F=p)})}return l.dispose}]}return[n,null]}),o=M(()=>r(e,t)[0],[e,t]),[u=o,f]=A();return C(()=>{let[s,i]=r(e,t);if(f(s),!!i)return i(f)},[e,t]),u}function D(e){let t=/var\\((.*)\\)/.exec(e);if(t){let n=t[1].indexOf(\",\");if(n===-1)return[t[1]];let l=t[1].slice(0,n).trim(),r=t[1].slice(n+1).trim();return r?[l,...D(r)]:[l]}return[]}function J(e,t){let n=document.createElement(\"div\");t.appendChild(n),n.style.setProperty(\"margin-top\",\"0px\",\"important\"),n.style.setProperty(\"margin-top\",e,\"important\");let l=parseFloat(window.getComputedStyle(n).marginTop)||0;return t.removeChild(n),l}export{Me as FloatingProvider,Re as useFloatingPanel,be as useFloatingPanelProps,ye as useFloatingReference,Fe as useFloatingReferenceProps,xe as useResolvedAnchor};\n","import r,{createContext as l,useContext as d}from\"react\";let n=l(null);n.displayName=\"OpenClosedContext\";var i=(e=>(e[e.Open=1]=\"Open\",e[e.Closed=2]=\"Closed\",e[e.Closing=4]=\"Closing\",e[e.Opening=8]=\"Opening\",e))(i||{});function u(){return d(n)}function c({value:o,children:t}){return r.createElement(n.Provider,{value:o},t)}function s({children:o}){return r.createElement(n.Provider,{value:null},o)}export{c as OpenClosedProvider,s as ResetOpenClosedProvider,i as State,u as useOpenClosed};\n","function r(n){let e=n.parentElement,l=null;for(;e&&!(e instanceof HTMLFieldSetElement);)e instanceof HTMLLegendElement&&(l=e),e=e.parentElement;let t=(e==null?void 0:e.getAttribute(\"disabled\"))===\"\";return t&&i(l)?!1:t}function i(n){if(!n)return!1;let e=n.previousElementSibling;for(;e!==null;){if(e instanceof HTMLLegendElement)return!1;e=e.previousElementSibling}return!0}export{r as isDisabledReactIssue7711};\n","function u(l){throw new Error(\"Unexpected object: \"+l)}var c=(i=>(i[i.First=0]=\"First\",i[i.Previous=1]=\"Previous\",i[i.Next=2]=\"Next\",i[i.Last=3]=\"Last\",i[i.Specific=4]=\"Specific\",i[i.Nothing=5]=\"Nothing\",i))(c||{});function f(l,n){let t=n.resolveItems();if(t.length<=0)return null;let r=n.resolveActiveIndex(),s=r!=null?r:-1;switch(l.focus){case 0:{for(let e=0;e<t.length;++e)if(!n.resolveDisabled(t[e],e,t))return e;return r}case 1:{s===-1&&(s=t.length);for(let e=s-1;e>=0;--e)if(!n.resolveDisabled(t[e],e,t))return e;return r}case 2:{for(let e=s+1;e<t.length;++e)if(!n.resolveDisabled(t[e],e,t))return e;return r}case 3:{for(let e=t.length-1;e>=0;--e)if(!n.resolveDisabled(t[e],e,t))return e;return r}case 4:{for(let e=0;e<t.length;++e)if(n.resolveId(t[e],e,t)===l.id)return e;return r}case 5:return null;default:u(l)}}export{c as Focus,f as calculateActiveIndex};\n","function t(...r){return Array.from(new Set(r.flatMap(n=>typeof n==\"string\"?n.split(\" \"):[]))).filter(Boolean).join(\" \")}export{t as classNames};\n","import E,{Fragment as b,cloneElement as j,createElement as v,forwardRef as S,isValidElement as w,useCallback as x,useRef as k}from\"react\";import{classNames as N}from'./class-names.js';import{match as M}from'./match.js';var O=(a=>(a[a.None=0]=\"None\",a[a.RenderStrategy=1]=\"RenderStrategy\",a[a.Static=2]=\"Static\",a))(O||{}),A=(e=>(e[e.Unmount=0]=\"Unmount\",e[e.Hidden=1]=\"Hidden\",e))(A||{});function L(){let n=U();return x(r=>C({mergeRefs:n,...r}),[n])}function C({ourProps:n,theirProps:r,slot:e,defaultTag:a,features:s,visible:t=!0,name:l,mergeRefs:i}){i=i!=null?i:$;let o=P(r,n);if(t)return F(o,e,a,l,i);let y=s!=null?s:0;if(y&2){let{static:f=!1,...u}=o;if(f)return F(u,e,a,l,i)}if(y&1){let{unmount:f=!0,...u}=o;return M(f?0:1,{[0](){return null},[1](){return F({...u,hidden:!0,style:{display:\"none\"}},e,a,l,i)}})}return F(o,e,a,l,i)}function F(n,r={},e,a,s){let{as:t=e,children:l,refName:i=\"ref\",...o}=h(n,[\"unmount\",\"static\"]),y=n.ref!==void 0?{[i]:n.ref}:{},f=typeof l==\"function\"?l(r):l;\"className\"in o&&o.className&&typeof o.className==\"function\"&&(o.className=o.className(r)),o[\"aria-labelledby\"]&&o[\"aria-labelledby\"]===o.id&&(o[\"aria-labelledby\"]=void 0);let u={};if(r){let d=!1,p=[];for(let[c,T]of Object.entries(r))typeof T==\"boolean\"&&(d=!0),T===!0&&p.push(c.replace(/([A-Z])/g,g=>`-${g.toLowerCase()}`));if(d){u[\"data-headlessui-state\"]=p.join(\" \");for(let c of p)u[`data-${c}`]=\"\"}}if(t===b&&(Object.keys(m(o)).length>0||Object.keys(m(u)).length>0))if(!w(f)||Array.isArray(f)&&f.length>1){if(Object.keys(m(o)).length>0)throw new Error(['Passing props on \"Fragment\"!',\"\",`The current component <${a} /> is rendering a \"Fragment\".`,\"However we need to passthrough the following props:\",Object.keys(m(o)).concat(Object.keys(m(u))).map(d=>` - ${d}`).join(`\n`),\"\",\"You can apply a few solutions:\",['Add an `as=\"...\"` prop, to ensure that we render an actual element instead of a \"Fragment\".',\"Render a single element as the child so that we can forward the props onto that element.\"].map(d=>` - ${d}`).join(`\n`)].join(`\n`))}else{let d=f.props,p=d==null?void 0:d.className,c=typeof p==\"function\"?(...R)=>N(p(...R),o.className):N(p,o.className),T=c?{className:c}:{},g=P(f.props,m(h(o,[\"ref\"])));for(let R in u)R in g&&delete u[R];return j(f,Object.assign({},g,u,y,{ref:s(H(f),y.ref)},T))}return v(t,Object.assign({},h(o,[\"ref\"]),t!==b&&y,t!==b&&u),f)}function U(){let n=k([]),r=x(e=>{for(let a of n.current)a!=null&&(typeof a==\"function\"?a(e):a.current=e)},[]);return(...e)=>{if(!e.every(a=>a==null))return n.current=e,r}}function $(...n){return n.every(r=>r==null)?void 0:r=>{for(let e of n)e!=null&&(typeof e==\"function\"?e(r):e.current=r)}}function P(...n){var a;if(n.length===0)return{};if(n.length===1)return n[0];let r={},e={};for(let s of n)for(let t in s)t.startsWith(\"on\")&&typeof s[t]==\"function\"?((a=e[t])!=null||(e[t]=[]),e[t].push(s[t])):r[t]=s[t];if(r.disabled||r[\"aria-disabled\"])for(let s in e)/^(on(?:Click|Pointer|Mouse|Key)(?:Down|Up|Press)?)$/.test(s)&&(e[s]=[t=>{var l;return(l=t==null?void 0:t.preventDefault)==null?void 0:l.call(t)}]);for(let s in e)Object.assign(r,{[s](t,...l){let i=e[s];for(let o of i){if((t instanceof Event||(t==null?void 0:t.nativeEvent)instanceof Event)&&t.defaultPrevented)return;o(t,...l)}}});return r}function _(...n){var a;if(n.length===0)return{};if(n.length===1)return n[0];let r={},e={};for(let s of n)for(let t in s)t.startsWith(\"on\")&&typeof s[t]==\"function\"?((a=e[t])!=null||(e[t]=[]),e[t].push(s[t])):r[t]=s[t];for(let s in e)Object.assign(r,{[s](...t){let l=e[s];for(let i of l)i==null||i(...t)}});return r}function K(n){var r;return Object.assign(S(n),{displayName:(r=n.displayName)!=null?r:n.name})}function m(n){let r=Object.assign({},n);for(let e in r)r[e]===void 0&&delete r[e];return r}function h(n,r=[]){let e=Object.assign({},n);for(let a of r)a in e&&delete e[a];return e}function H(n){return E.version.split(\".\")[0]>=\"19\"?n.props.ref:n.ref}export{O as RenderFeatures,A as RenderStrategy,m as compact,K as forwardRefWithAs,_ as mergeProps,L as useRender};\n","import n,{createContext as r,useContext as i}from\"react\";let e=r(void 0);function a(){return i(e)}function l({value:t,children:o}){return n.createElement(e.Provider,{value:t},o)}export{l as DisabledProvider,a as useDisabled};\n","\"use client\";import m,{createContext as T,useContext as u,useMemo as c,useState as P}from\"react\";import{useEvent as g}from'../../hooks/use-event.js';import{useId as x}from'../../hooks/use-id.js';import{useIsoMorphicEffect as y}from'../../hooks/use-iso-morphic-effect.js';import{useSyncRefs as E}from'../../hooks/use-sync-refs.js';import{useDisabled as v}from'../../internal/disabled.js';import{forwardRefWithAs as R,useRender as I}from'../../utils/render.js';let a=T(null);a.displayName=\"DescriptionContext\";function f(){let r=u(a);if(r===null){let e=new Error(\"You used a <Description /> component, but it is not inside a relevant parent.\");throw Error.captureStackTrace&&Error.captureStackTrace(e,f),e}return r}function U(){var r,e;return(e=(r=u(a))==null?void 0:r.value)!=null?e:void 0}function w(){let[r,e]=P([]);return[r.length>0?r.join(\" \"):void 0,c(()=>function(t){let i=g(n=>(e(s=>[...s,n]),()=>e(s=>{let o=s.slice(),p=o.indexOf(n);return p!==-1&&o.splice(p,1),o}))),l=c(()=>({register:i,slot:t.slot,name:t.name,props:t.props,value:t.value}),[i,t.slot,t.name,t.props,t.value]);return m.createElement(a.Provider,{value:l},t.children)},[e])]}let S=\"p\";function C(r,e){let d=x(),t=v(),{id:i=`headlessui-description-${d}`,...l}=r,n=f(),s=E(e);y(()=>n.register(i),[i,n.register]);let o=t||!1,p=c(()=>({...n.slot,disabled:o}),[n.slot,o]),D={ref:s,...n.props,id:i};return I()({ourProps:D,theirProps:l,slot:p,defaultTag:S,name:n.name||\"Description\"})}let _=R(C),H=Object.assign(_,{});export{H as Description,U as useDescribedBy,w as useDescriptions};\n","var o=(r=>(r.Space=\" \",r.Enter=\"Enter\",r.Escape=\"Escape\",r.Backspace=\"Backspace\",r.Delete=\"Delete\",r.ArrowLeft=\"ArrowLeft\",r.ArrowUp=\"ArrowUp\",r.ArrowRight=\"ArrowRight\",r.ArrowDown=\"ArrowDown\",r.Home=\"Home\",r.End=\"End\",r.PageUp=\"PageUp\",r.PageDown=\"PageDown\",r.Tab=\"Tab\",r))(o||{});export{o as Keys};\n","import n,{createContext as d,useContext as i}from\"react\";let e=d(void 0);function u(){return i(e)}function f({id:t,children:r}){return n.createElement(e.Provider,{value:t},r)}export{f as IdProvider,u as useProvidedId};\n","\"use client\";import R,{createContext as k,useContext as h,useMemo as T,useState as D}from\"react\";import{useEvent as v}from'../../hooks/use-event.js';import{useId as _}from'../../hooks/use-id.js';import{useIsoMorphicEffect as A}from'../../hooks/use-iso-morphic-effect.js';import{useSyncRefs as B}from'../../hooks/use-sync-refs.js';import{useDisabled as F}from'../../internal/disabled.js';import{useProvidedId as S}from'../../internal/id.js';import{forwardRefWithAs as M,useRender as H}from'../../utils/render.js';let c=k(null);c.displayName=\"LabelContext\";function P(){let r=h(c);if(r===null){let l=new Error(\"You used a <Label /> component, but it is not inside a relevant parent.\");throw Error.captureStackTrace&&Error.captureStackTrace(l,P),l}return r}function I(r){var a,e,o;let l=(e=(a=h(c))==null?void 0:a.value)!=null?e:void 0;return((o=r==null?void 0:r.length)!=null?o:0)>0?[l,...r].filter(Boolean).join(\" \"):l}function K({inherit:r=!1}={}){let l=I(),[a,e]=D([]),o=r?[l,...a].filter(Boolean):a;return[o.length>0?o.join(\" \"):void 0,T(()=>function(t){let s=v(i=>(e(p=>[...p,i]),()=>e(p=>{let u=p.slice(),d=u.indexOf(i);return d!==-1&&u.splice(d,1),u}))),m=T(()=>({register:s,slot:t.slot,name:t.name,props:t.props,value:t.value}),[s,t.slot,t.name,t.props,t.value]);return R.createElement(c.Provider,{value:m},t.children)},[e])]}let N=\"label\";function G(r,l){var y;let a=_(),e=P(),o=S(),g=F(),{id:t=`headlessui-label-${a}`,htmlFor:s=o!=null?o:(y=e.props)==null?void 0:y.htmlFor,passive:m=!1,...i}=r,p=B(l);A(()=>e.register(t),[t,e.register]);let u=v(L=>{let b=L.currentTarget;if(b instanceof HTMLLabelElement&&L.preventDefault(),e.props&&\"onClick\"in e.props&&typeof e.props.onClick==\"function\"&&e.props.onClick(L),b instanceof HTMLLabelElement){let n=document.getElementById(b.htmlFor);if(n){let E=n.getAttribute(\"disabled\");if(E===\"true\"||E===\"\")return;let x=n.getAttribute(\"aria-disabled\");if(x===\"true\"||x===\"\")return;(n instanceof HTMLInputElement&&(n.type===\"radio\"||n.type===\"checkbox\")||n.role===\"radio\"||n.role===\"checkbox\"||n.role===\"switch\")&&n.click(),n.focus({preventScroll:!0})}}}),d=g||!1,C=T(()=>({...e.slot,disabled:d}),[e.slot,d]),f={ref:p,...e.props,id:t,htmlFor:s,onClick:u};return m&&(\"onClick\"in f&&(delete f.htmlFor,delete f.onClick),\"onClick\"in i&&delete i.onClick),H()({ourProps:f,theirProps:i,slot:C,defaultTag:s?N:\"div\",name:e.name||\"Label\"})}let U=M(G),Q=Object.assign(U,{});export{Q as Label,P as useLabelContext,I as useLabelledBy,K as useLabels};\n","import{useEffect as u,useRef as n}from\"react\";import{microTask as o}from'../utils/micro-task.js';import{useEvent as f}from'./use-event.js';function c(t){let r=f(t),e=n(!1);u(()=>(e.current=!1,()=>{e.current=!0,o(()=>{e.current&&r()})}),[r])}export{c as useOnUnmount};\n","import*as t from\"react\";import{env as f}from'../utils/env.js';function s(){let r=typeof document==\"undefined\";return\"useSyncExternalStore\"in t?(o=>o.useSyncExternalStore)(t)(()=>()=>{},()=>!1,()=>!r):!1}function l(){let r=s(),[e,n]=t.useState(f.isHandoffComplete);return e&&f.isHandoffComplete===!1&&n(!1),t.useEffect(()=>{e!==!0&&n(!0)},[e]),t.useEffect(()=>f.handoff(),[]),r?!1:e}export{l as useServerHandoffComplete};\n","import t,{createContext as r,useContext as c}from\"react\";let e=r(!1);function a(){return c(e)}function l(o){return t.createElement(e.Provider,{value:o.force},o.children)}export{l as ForcePortalRoot,a as usePortalRoot};\n","\"use client\";import f,{Fragment as R,createContext as g,useContext as T,useEffect as E,useMemo as c,useRef as A,useState as G}from\"react\";import{createPortal as O}from\"react-dom\";import{useEvent as L}from'../../hooks/use-event.js';import{useIsoMorphicEffect as x}from'../../hooks/use-iso-morphic-effect.js';import{useOnUnmount as h}from'../../hooks/use-on-unmount.js';import{useOwnerDocument as _}from'../../hooks/use-owner.js';import{useServerHandoffComplete as F}from'../../hooks/use-server-handoff-complete.js';import{optionalRef as U,useSyncRefs as P}from'../../hooks/use-sync-refs.js';import{usePortalRoot as D}from'../../internal/portal-force-root.js';import{env as C}from'../../utils/env.js';import{forwardRefWithAs as m,useRender as d}from'../../utils/render.js';function N(u){let r=D(),n=T(v),e=_(u),[o,l]=G(()=>{var t;if(!r&&n!==null)return(t=n.current)!=null?t:null;if(C.isServer)return null;let p=e==null?void 0:e.getElementById(\"headlessui-portal-root\");if(p)return p;if(e===null)return null;let a=e.createElement(\"div\");return a.setAttribute(\"id\",\"headlessui-portal-root\"),e.body.appendChild(a)});return E(()=>{o!==null&&(e!=null&&e.body.contains(o)||e==null||e.body.appendChild(o))},[o,e]),E(()=>{r||n!==null&&l(n.current)},[n,l,r]),o}let M=R,S=m(function(r,n){let e=r,o=A(null),l=P(U(i=>{o.current=i}),n),p=_(o),a=N(o),[t]=G(()=>{var i;return C.isServer?null:(i=p==null?void 0:p.createElement(\"div\"))!=null?i:null}),s=T(y),b=F();x(()=>{!a||!t||a.contains(t)||(t.setAttribute(\"data-headlessui-portal\",\"\"),a.appendChild(t))},[a,t]),x(()=>{if(t&&s)return s.register(t)},[s,t]),h(()=>{var i;!a||!t||(t instanceof Node&&a.contains(t)&&a.removeChild(t),a.childNodes.length<=0&&((i=a.parentElement)==null||i.removeChild(a)))});let H=d();return b?!a||!t?null:O(H({ourProps:{ref:l},theirProps:e,slot:{},defaultTag:M,name:\"Portal\"}),t):null});function j(u,r){let n=P(r),{enabled:e=!0,...o}=u,l=d();return e?f.createElement(S,{...o,ref:n}):l({ourProps:{ref:n},theirProps:o,slot:{},defaultTag:M,name:\"Portal\"})}let W=R,v=g(null);function I(u,r){let{target:n,...e}=u,l={ref:P(r)},p=d();return f.createElement(v.Provider,{value:n},p({ourProps:l,theirProps:e,defaultTag:W,name:\"Popover.Group\"}))}let y=g(null);function te(){let u=T(y),r=A([]),n=L(l=>(r.current.push(l),u&&u.register(l),()=>e(l))),e=L(l=>{let p=r.current.indexOf(l);p!==-1&&r.current.splice(p,1),u&&u.unregister(l)}),o=c(()=>({register:n,unregister:e,portals:r}),[n,e,r]);return[r,c(()=>function({children:p}){return f.createElement(y.Provider,{value:o},p)},[o])]}let J=m(j),X=m(I),re=Object.assign(J,{Group:X});export{re as Portal,X as PortalGroup,te as useNestedPortals};\n","\"use client\";import{useFocusRing as pe}from\"@react-aria/focus\";import{useHover as me}from\"@react-aria/interactions\";import x,{Fragment as z,createContext as de,useCallback as ce,useContext as fe,useEffect as Te,useMemo as H,useReducer as ye,useRef as Y,useState as Ie}from\"react\";import{flushSync as L}from\"react-dom\";import{useActivePress as ge}from'../../hooks/use-active-press.js';import{useDidElementMove as Ee}from'../../hooks/use-did-element-move.js';import{useDisposables as Me}from'../../hooks/use-disposables.js';import{useElementSize as Se}from'../../hooks/use-element-size.js';import{useEvent as E}from'../../hooks/use-event.js';import{useId as U}from'../../hooks/use-id.js';import{useInertOthers as Ae}from'../../hooks/use-inert-others.js';import{useIsoMorphicEffect as B}from'../../hooks/use-iso-morphic-effect.js';import{useOnDisappear as be}from'../../hooks/use-on-disappear.js';import{useOutsideClick as Pe}from'../../hooks/use-outside-click.js';import{useOwnerDocument as ve}from'../../hooks/use-owner.js';import{useResolveButtonType as xe}from'../../hooks/use-resolve-button-type.js';import{useScrollLock as Re}from'../../hooks/use-scroll-lock.js';import{useSyncRefs as N}from'../../hooks/use-sync-refs.js';import{useTextValue as _e}from'../../hooks/use-text-value.js';import{useTrackedPointer as De}from'../../hooks/use-tracked-pointer.js';import{transitionDataAttributes as he,useTransition as Ce}from'../../hooks/use-transition.js';import{useTreeWalker as Fe}from'../../hooks/use-tree-walker.js';import{FloatingProvider as Le,useFloatingPanel as Oe,useFloatingPanelProps as Ge,useFloatingReference as He,useFloatingReferenceProps as Ue,useResolvedAnchor as Be}from'../../internal/floating.js';import{OpenClosedProvider as Ne,State as k,useOpenClosed as ke}from'../../internal/open-closed.js';import{isDisabledReactIssue7711 as we}from'../../utils/bugs.js';import{Focus as g,calculateActiveIndex as W}from'../../utils/calculate-active-index.js';import{disposables as Ke}from'../../utils/disposables.js';import{Focus as Z,FocusableMode as We,focusFrom as je,isFocusableElement as Qe,restoreFocusIfNecessary as ee,sortByDomNode as Je}from'../../utils/focus-management.js';import{match as te}from'../../utils/match.js';import{RenderFeatures as ne,forwardRefWithAs as R,mergeProps as re,useRender as _}from'../../utils/render.js';import{useDescriptions as Ve}from'../description/description.js';import{Keys as y}from'../keyboard.js';import{useLabelContext as Xe,useLabels as oe}from'../label/label.js';import{Portal as $e}from'../portal/portal.js';var qe=(r=>(r[r.Open=0]=\"Open\",r[r.Closed=1]=\"Closed\",r))(qe||{}),ze=(r=>(r[r.Pointer=0]=\"Pointer\",r[r.Other=1]=\"Other\",r))(ze||{}),Ye=(a=>(a[a.OpenMenu=0]=\"OpenMenu\",a[a.CloseMenu=1]=\"CloseMenu\",a[a.GoToItem=2]=\"GoToItem\",a[a.Search=3]=\"Search\",a[a.ClearSearch=4]=\"ClearSearch\",a[a.RegisterItem=5]=\"RegisterItem\",a[a.UnregisterItem=6]=\"UnregisterItem\",a[a.SetButtonElement=7]=\"SetButtonElement\",a[a.SetItemsElement=8]=\"SetItemsElement\",a))(Ye||{});function j(e,n=r=>r){let r=e.activeItemIndex!==null?e.items[e.activeItemIndex]:null,l=Je(n(e.items.slice()),u=>u.dataRef.current.domRef.current),o=r?l.indexOf(r):null;return o===-1&&(o=null),{items:l,activeItemIndex:o}}let Ze={[1](e){return e.menuState===1?e:{...e,activeItemIndex:null,menuState:1}},[0](e){return e.menuState===0?e:{...e,__demoMode:!1,menuState:0}},[2]:(e,n)=>{var u,p,s,m,a;if(e.menuState===1)return e;let r={...e,searchQuery:\"\",activationTrigger:(u=n.trigger)!=null?u:1,__demoMode:!1};if(n.focus===g.Nothing)return{...r,activeItemIndex:null};if(n.focus===g.Specific)return{...r,activeItemIndex:e.items.findIndex(t=>t.id===n.id)};if(n.focus===g.Previous){let t=e.activeItemIndex;if(t!==null){let d=e.items[t].dataRef.current.domRef,f=W(n,{resolveItems:()=>e.items,resolveActiveIndex:()=>e.activeItemIndex,resolveId:c=>c.id,resolveDisabled:c=>c.dataRef.current.disabled});if(f!==null){let c=e.items[f].dataRef.current.domRef;if(((p=d.current)==null?void 0:p.previousElementSibling)===c.current||((s=c.current)==null?void 0:s.previousElementSibling)===null)return{...r,activeItemIndex:f}}}}else if(n.focus===g.Next){let t=e.activeItemIndex;if(t!==null){let d=e.items[t].dataRef.current.domRef,f=W(n,{resolveItems:()=>e.items,resolveActiveIndex:()=>e.activeItemIndex,resolveId:c=>c.id,resolveDisabled:c=>c.dataRef.current.disabled});if(f!==null){let c=e.items[f].dataRef.current.domRef;if(((m=d.current)==null?void 0:m.nextElementSibling)===c.current||((a=c.current)==null?void 0:a.nextElementSibling)===null)return{...r,activeItemIndex:f}}}}let l=j(e),o=W(n,{resolveItems:()=>l.items,resolveActiveIndex:()=>l.activeItemIndex,resolveId:t=>t.id,resolveDisabled:t=>t.dataRef.current.disabled});return{...r,...l,activeItemIndex:o}},[3]:(e,n)=>{let l=e.searchQuery!==\"\"?0:1,o=e.searchQuery+n.value.toLowerCase(),p=(e.activeItemIndex!==null?e.items.slice(e.activeItemIndex+l).concat(e.items.slice(0,e.activeItemIndex+l)):e.items).find(m=>{var a;return((a=m.dataRef.current.textValue)==null?void 0:a.startsWith(o))&&!m.dataRef.current.disabled}),s=p?e.items.indexOf(p):-1;return s===-1||s===e.activeItemIndex?{...e,searchQuery:o}:{...e,searchQuery:o,activeItemIndex:s,activationTrigger:1}},[4](e){return e.searchQuery===\"\"?e:{...e,searchQuery:\"\",searchActiveItemIndex:null}},[5]:(e,n)=>{let r=j(e,l=>[...l,{id:n.id,dataRef:n.dataRef}]);return{...e,...r}},[6]:(e,n)=>{let r=j(e,l=>{let o=l.findIndex(u=>u.id===n.id);return o!==-1&&l.splice(o,1),l});return{...e,...r,activationTrigger:1}},[7]:(e,n)=>e.buttonElement===n.element?e:{...e,buttonElement:n.element},[8]:(e,n)=>e.itemsElement===n.element?e:{...e,itemsElement:n.element}},Q=de(null);Q.displayName=\"MenuContext\";function w(e){let n=fe(Q);if(n===null){let r=new Error(`<${e} /> is missing a parent <Menu /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,w),r}return n}function et(e,n){return te(n.type,Ze,e,n)}let tt=z;function nt(e,n){let{__demoMode:r=!1,...l}=e,o=ye(et,{__demoMode:r,menuState:r?0:1,buttonElement:null,itemsElement:null,items:[],searchQuery:\"\",activeItemIndex:null,activationTrigger:1}),[{menuState:u,itemsElement:p,buttonElement:s},m]=o,a=N(n);Pe(u===0,[s,p],(b,S)=>{m({type:1}),Qe(S,We.Loose)||(b.preventDefault(),s==null||s.focus())});let d=E(()=>{m({type:1})}),f=H(()=>({open:u===0,close:d}),[u,d]),c={ref:a},A=_();return x.createElement(Le,null,x.createElement(Q.Provider,{value:o},x.createElement(Ne,{value:te(u,{[0]:k.Open,[1]:k.Closed})},A({ourProps:c,theirProps:l,slot:f,defaultTag:tt,name:\"Menu\"}))))}let rt=\"button\";function ot(e,n){var h;let r=U(),{id:l=`headlessui-menu-button-${r}`,disabled:o=!1,autoFocus:u=!1,...p}=e,[s,m]=w(\"Menu.Button\"),a=Ue(),t=N(n,He(),E(T=>m({type:7,element:T}))),d=E(T=>{switch(T.key){case y.Space:case y.Enter:case y.ArrowDown:T.preventDefault(),T.stopPropagation(),L(()=>m({type:0})),m({type:2,focus:g.First});break;case y.ArrowUp:T.preventDefault(),T.stopPropagation(),L(()=>m({type:0})),m({type:2,focus:g.Last});break}}),f=E(T=>{switch(T.key){case y.Space:T.preventDefault();break}}),c=E(T=>{var F;if(we(T.currentTarget))return T.preventDefault();o||(s.menuState===0?(L(()=>m({type:1})),(F=s.buttonElement)==null||F.focus({preventScroll:!0})):(T.preventDefault(),m({type:0})))}),{isFocusVisible:A,focusProps:b}=pe({autoFocus:u}),{isHovered:S,hoverProps:D}=me({isDisabled:o}),{pressed:M,pressProps:P}=ge({disabled:o}),v=H(()=>({open:s.menuState===0,active:M||s.menuState===0,disabled:o,hover:S,focus:A,autofocus:u}),[s,S,A,M,o,u]),C=re(a(),{ref:t,id:l,type:xe(e,s.buttonElement),\"aria-haspopup\":\"menu\",\"aria-controls\":(h=s.itemsElement)==null?void 0:h.id,\"aria-expanded\":s.menuState===0,disabled:o||void 0,autoFocus:u,onKeyDown:d,onKeyUp:f,onClick:c},b,D,P);return _()({ourProps:C,theirProps:p,slot:v,defaultTag:rt,name:\"Menu.Button\"})}let at=\"div\",lt=ne.RenderStrategy|ne.Static;function it(e,n){var J,V;let r=U(),{id:l=`headlessui-menu-items-${r}`,anchor:o,portal:u=!1,modal:p=!0,transition:s=!1,...m}=e,a=Be(o),[t,d]=w(\"Menu.Items\"),[f,c]=Oe(a),A=Ge(),[b,S]=Ie(null),D=N(n,a?f:null,E(i=>d({type:8,element:i})),S),M=ve(t.itemsElement);a&&(u=!0);let P=ke(),[v,C]=Ce(s,b,P!==null?(P&k.Open)===k.Open:t.menuState===0);be(v,t.buttonElement,()=>{d({type:1})});let O=t.__demoMode?!1:p&&t.menuState===0;Re(O,M);let h=t.__demoMode?!1:p&&t.menuState===0;Ae(h,{allowed:ce(()=>[t.buttonElement,t.itemsElement],[t.buttonElement,t.itemsElement])});let T=t.menuState!==0,K=Ee(T,t.buttonElement)?!1:v;Te(()=>{let i=t.itemsElement;i&&t.menuState===0&&i!==(M==null?void 0:M.activeElement)&&i.focus({preventScroll:!0})},[t.menuState,t.itemsElement,M]),Fe(t.menuState===0,{container:t.itemsElement,accept(i){return i.getAttribute(\"role\")===\"menuitem\"?NodeFilter.FILTER_REJECT:i.hasAttribute(\"role\")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT},walk(i){i.setAttribute(\"role\",\"none\")}});let I=Me(),G=E(i=>{var X,$,q;switch(I.dispose(),i.key){case y.Space:if(t.searchQuery!==\"\")return i.preventDefault(),i.stopPropagation(),d({type:3,value:i.key});case y.Enter:if(i.preventDefault(),i.stopPropagation(),d({type:1}),t.activeItemIndex!==null){let{dataRef:ue}=t.items[t.activeItemIndex];($=(X=ue.current)==null?void 0:X.domRef.current)==null||$.click()}ee(t.buttonElement);break;case y.ArrowDown:return i.preventDefault(),i.stopPropagation(),d({type:2,focus:g.Next});case y.ArrowUp:return i.preventDefault(),i.stopPropagation(),d({type:2,focus:g.Previous});case y.Home:case y.PageUp:return i.preventDefault(),i.stopPropagation(),d({type:2,focus:g.First});case y.End:case y.PageDown:return i.preventDefault(),i.stopPropagation(),d({type:2,focus:g.Last});case y.Escape:i.preventDefault(),i.stopPropagation(),L(()=>d({type:1})),(q=t.buttonElement)==null||q.focus({preventScroll:!0});break;case y.Tab:i.preventDefault(),i.stopPropagation(),L(()=>d({type:1})),je(t.buttonElement,i.shiftKey?Z.Previous:Z.Next);break;default:i.key.length===1&&(d({type:3,value:i.key}),I.setTimeout(()=>d({type:4}),350));break}}),ae=E(i=>{switch(i.key){case y.Space:i.preventDefault();break}}),le=H(()=>({open:t.menuState===0}),[t.menuState]),ie=re(a?A():{},{\"aria-activedescendant\":t.activeItemIndex===null||(J=t.items[t.activeItemIndex])==null?void 0:J.id,\"aria-labelledby\":(V=t.buttonElement)==null?void 0:V.id,id:l,onKeyDown:G,onKeyUp:ae,role:\"menu\",tabIndex:t.menuState===0?0:void 0,ref:D,style:{...m.style,...c,\"--button-width\":Se(t.buttonElement,!0).width},...he(C)}),se=_();return x.createElement($e,{enabled:u?e.static||v:!1},se({ourProps:ie,theirProps:m,slot:le,defaultTag:at,features:lt,visible:K,name:\"Menu.Items\"}))}let st=z;function ut(e,n){let r=U(),{id:l=`headlessui-menu-item-${r}`,disabled:o=!1,...u}=e,[p,s]=w(\"Menu.Item\"),m=p.activeItemIndex!==null?p.items[p.activeItemIndex].id===l:!1,a=Y(null),t=N(n,a);B(()=>{if(!p.__demoMode&&p.menuState===0&&m&&p.activationTrigger!==0)return Ke().requestAnimationFrame(()=>{var I,G;(G=(I=a.current)==null?void 0:I.scrollIntoView)==null||G.call(I,{block:\"nearest\"})})},[p.__demoMode,a,m,p.menuState,p.activationTrigger,p.activeItemIndex]);let d=_e(a),f=Y({disabled:o,domRef:a,get textValue(){return d()}});B(()=>{f.current.disabled=o},[f,o]),B(()=>(s({type:5,id:l,dataRef:f}),()=>s({type:6,id:l})),[f,l]);let c=E(()=>{s({type:1})}),A=E(I=>{if(o)return I.preventDefault();s({type:1}),ee(p.buttonElement)}),b=E(()=>{if(o)return s({type:2,focus:g.Nothing});s({type:2,focus:g.Specific,id:l})}),S=De(),D=E(I=>{S.update(I),!o&&(m||s({type:2,focus:g.Specific,id:l,trigger:0}))}),M=E(I=>{S.wasMoved(I)&&(o||m||s({type:2,focus:g.Specific,id:l,trigger:0}))}),P=E(I=>{S.wasMoved(I)&&(o||m&&s({type:2,focus:g.Nothing}))}),[v,C]=oe(),[O,h]=Ve(),T=H(()=>({active:m,focus:m,disabled:o,close:c}),[m,o,c]),F={id:l,ref:t,role:\"menuitem\",tabIndex:o===!0?void 0:-1,\"aria-disabled\":o===!0?!0:void 0,\"aria-labelledby\":v,\"aria-describedby\":O,disabled:void 0,onClick:A,onFocus:b,onPointerEnter:D,onMouseEnter:D,onPointerMove:M,onMouseMove:M,onPointerLeave:P,onMouseLeave:P},K=_();return x.createElement(C,null,x.createElement(h,null,K({ourProps:F,theirProps:u,slot:T,defaultTag:st,name:\"Menu.Item\"})))}let pt=\"div\";function mt(e,n){let[r,l]=oe(),o=e,u={ref:n,\"aria-labelledby\":r,role:\"group\"},p=_();return x.createElement(l,null,p({ourProps:u,theirProps:o,slot:{},defaultTag:pt,name:\"Menu.Section\"}))}let dt=\"header\";function ct(e,n){let r=U(),{id:l=`headlessui-menu-heading-${r}`,...o}=e,u=Xe();B(()=>u.register(l),[l,u.register]);let p={id:l,ref:n,role:\"presentation\",...u.props};return _()({ourProps:p,theirProps:o,slot:{},defaultTag:dt,name:\"Menu.Heading\"})}let ft=\"div\";function Tt(e,n){let r=e,l={ref:n,role:\"separator\"};return _()({ourProps:l,theirProps:r,slot:{},defaultTag:ft,name:\"Menu.Separator\"})}let yt=R(nt),It=R(ot),gt=R(it),Et=R(ut),Mt=R(mt),St=R(ct),At=R(Tt),rn=Object.assign(yt,{Button:It,Items:gt,Item:Et,Section:Mt,Heading:St,Separator:At});export{rn as Menu,It as MenuButton,St as MenuHeading,Et as MenuItem,gt as MenuItems,Mt as MenuSection,At as MenuSeparator};\n","import{useRef as a,useState as m}from\"react\";import{getOwnerDocument as d}from'../utils/owner.js';import{useDisposables as g}from'./use-disposables.js';import{useEvent as u}from'./use-event.js';function E(e){let t=e.width/2,n=e.height/2;return{top:e.clientY-n,right:e.clientX+t,bottom:e.clientY+n,left:e.clientX-t}}function P(e,t){return!(!e||!t||e.right<t.left||e.left>t.right||e.bottom<t.top||e.top>t.bottom)}function w({disabled:e=!1}={}){let t=a(null),[n,l]=m(!1),r=g(),o=u(()=>{t.current=null,l(!1),r.dispose()}),f=u(s=>{if(r.dispose(),t.current===null){t.current=s.currentTarget,l(!0);{let i=d(s.currentTarget);r.addEventListener(i,\"pointerup\",o,!1),r.addEventListener(i,\"pointermove\",c=>{if(t.current){let p=E(c);l(P(p,t.current.getBoundingClientRect()))}},!1),r.addEventListener(i,\"pointercancel\",o,!1)}}});return{pressed:n,pressProps:e?{}:{onPointerDown:f,onPointerUp:o,onClick:o}}}export{w as useActivePress};\n","import{useRef as i}from\"react\";import{useIsoMorphicEffect as u}from'./use-iso-morphic-effect.js';function s(n,t){let e=i({left:0,top:0});if(u(()=>{if(!t)return;let r=t.getBoundingClientRect();r&&(e.current=r)},[n,t]),t==null||!n||t===document.activeElement)return!1;let o=t.getBoundingClientRect();return o.top!==e.current.top||o.left!==e.current.left}export{s as useDidElementMove};\n","import{useEffect as T,useRef as E}from\"react\";import{getOwnerDocument as d}from'../utils/owner.js';import{useIsoMorphicEffect as N}from'./use-iso-morphic-effect.js';function F(c,{container:e,accept:t,walk:r}){let o=E(t),l=E(r);T(()=>{o.current=t,l.current=r},[t,r]),N(()=>{if(!e||!c)return;let n=d(e);if(!n)return;let f=o.current,p=l.current,i=Object.assign(m=>f(m),{acceptNode:f}),u=n.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,i,!1);for(;u.nextNode();)p(u.currentNode)},[e,c,o,l])}export{F as useTreeWalker};\n","import{useRef as r}from\"react\";import{useIsoMorphicEffect as t}from'./use-iso-morphic-effect.js';function f(){let e=r(!1);return t(()=>(e.current=!0,()=>{e.current=!1}),[]),e}export{f as useIsMounted};\n","\"use client\";import m,{Fragment as O,createContext as ne,useContext as q,useEffect as ge,useMemo as ie,useRef as b,useState as V}from\"react\";import{useDisposables as ve}from'../../hooks/use-disposables.js';import{useEvent as E}from'../../hooks/use-event.js';import{useIsMounted as be}from'../../hooks/use-is-mounted.js';import{useIsoMorphicEffect as D}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as Ee}from'../../hooks/use-latest-value.js';import{useServerHandoffComplete as re}from'../../hooks/use-server-handoff-complete.js';import{useSyncRefs as oe}from'../../hooks/use-sync-refs.js';import{transitionDataAttributes as Se,useTransition as Re}from'../../hooks/use-transition.js';import{OpenClosedProvider as ye,State as x,useOpenClosed as se}from'../../internal/open-closed.js';import{classNames as Pe}from'../../utils/class-names.js';import{match as le}from'../../utils/match.js';import{RenderFeatures as xe,RenderStrategy as P,compact as Ne,forwardRefWithAs as J,useRender as ae}from'../../utils/render.js';function ue(e){var t;return!!(e.enter||e.enterFrom||e.enterTo||e.leave||e.leaveFrom||e.leaveTo)||((t=e.as)!=null?t:de)!==O||m.Children.count(e.children)===1}let w=ne(null);w.displayName=\"TransitionContext\";var _e=(n=>(n.Visible=\"visible\",n.Hidden=\"hidden\",n))(_e||{});function De(){let e=q(w);if(e===null)throw new Error(\"A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.\");return e}function He(){let e=q(M);if(e===null)throw new Error(\"A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.\");return e}let M=ne(null);M.displayName=\"NestingContext\";function U(e){return\"children\"in e?U(e.children):e.current.filter(({el:t})=>t.current!==null).filter(({state:t})=>t===\"visible\").length>0}function Te(e,t){let n=Ee(e),l=b([]),S=be(),R=ve(),d=E((o,i=P.Hidden)=>{let a=l.current.findIndex(({el:s})=>s===o);a!==-1&&(le(i,{[P.Unmount](){l.current.splice(a,1)},[P.Hidden](){l.current[a].state=\"hidden\"}}),R.microTask(()=>{var s;!U(l)&&S.current&&((s=n.current)==null||s.call(n))}))}),y=E(o=>{let i=l.current.find(({el:a})=>a===o);return i?i.state!==\"visible\"&&(i.state=\"visible\"):l.current.push({el:o,state:\"visible\"}),()=>d(o,P.Unmount)}),p=b([]),c=b(Promise.resolve()),C=b({enter:[],leave:[]}),h=E((o,i,a)=>{p.current.splice(0),t&&(t.chains.current[i]=t.chains.current[i].filter(([s])=>s!==o)),t==null||t.chains.current[i].push([o,new Promise(s=>{p.current.push(s)})]),t==null||t.chains.current[i].push([o,new Promise(s=>{Promise.all(C.current[i].map(([r,f])=>f)).then(()=>s())})]),i===\"enter\"?c.current=c.current.then(()=>t==null?void 0:t.wait.current).then(()=>a(i)):a(i)}),g=E((o,i,a)=>{Promise.all(C.current[i].splice(0).map(([s,r])=>r)).then(()=>{var s;(s=p.current.shift())==null||s()}).then(()=>a(i))});return ie(()=>({children:l,register:y,unregister:d,onStart:h,onStop:g,wait:c,chains:C}),[y,d,l,h,g,C,c])}let de=O,fe=xe.RenderStrategy;function Ae(e,t){var ee,te;let{transition:n=!0,beforeEnter:l,afterEnter:S,beforeLeave:R,afterLeave:d,enter:y,enterFrom:p,enterTo:c,entered:C,leave:h,leaveFrom:g,leaveTo:o,...i}=e,[a,s]=V(null),r=b(null),f=ue(e),j=oe(...f?[r,t,s]:t===null?[]:[t]),H=(ee=i.unmount)==null||ee?P.Unmount:P.Hidden,{show:u,appear:z,initial:K}=De(),[v,G]=V(u?\"visible\":\"hidden\"),Q=He(),{register:A,unregister:I}=Q;D(()=>A(r),[A,r]),D(()=>{if(H===P.Hidden&&r.current){if(u&&v!==\"visible\"){G(\"visible\");return}return le(v,{[\"hidden\"]:()=>I(r),[\"visible\"]:()=>A(r)})}},[v,r,A,I,u,H]);let B=re();D(()=>{if(f&&B&&v===\"visible\"&&r.current===null)throw new Error(\"Did you forget to passthrough the `ref` to the actual DOM node?\")},[r,v,B,f]);let ce=K&&!z,Y=z&&u&&K,W=b(!1),L=Te(()=>{W.current||(G(\"hidden\"),I(r))},Q),Z=E(k=>{W.current=!0;let F=k?\"enter\":\"leave\";L.onStart(r,F,_=>{_===\"enter\"?l==null||l():_===\"leave\"&&(R==null||R())})}),$=E(k=>{let F=k?\"enter\":\"leave\";W.current=!1,L.onStop(r,F,_=>{_===\"enter\"?S==null||S():_===\"leave\"&&(d==null||d())}),F===\"leave\"&&!U(L)&&(G(\"hidden\"),I(r))});ge(()=>{f&&n||(Z(u),$(u))},[u,f,n]);let pe=(()=>!(!n||!f||!B||ce))(),[,T]=Re(pe,a,u,{start:Z,end:$}),Ce=Ne({ref:j,className:((te=Pe(i.className,Y&&y,Y&&p,T.enter&&y,T.enter&&T.closed&&p,T.enter&&!T.closed&&c,T.leave&&h,T.leave&&!T.closed&&g,T.leave&&T.closed&&o,!T.transition&&u&&C))==null?void 0:te.trim())||void 0,...Se(T)}),N=0;v===\"visible\"&&(N|=x.Open),v===\"hidden\"&&(N|=x.Closed),T.enter&&(N|=x.Opening),T.leave&&(N|=x.Closing);let he=ae();return m.createElement(M.Provider,{value:L},m.createElement(ye,{value:N},he({ourProps:Ce,theirProps:i,defaultTag:de,features:fe,visible:v===\"visible\",name:\"Transition.Child\"})))}function Ie(e,t){let{show:n,appear:l=!1,unmount:S=!0,...R}=e,d=b(null),y=ue(e),p=oe(...y?[d,t]:t===null?[]:[t]);re();let c=se();if(n===void 0&&c!==null&&(n=(c&x.Open)===x.Open),n===void 0)throw new Error(\"A <Transition /> is used but it is missing a `show={true | false}` prop.\");let[C,h]=V(n?\"visible\":\"hidden\"),g=Te(()=>{n||h(\"hidden\")}),[o,i]=V(!0),a=b([n]);D(()=>{o!==!1&&a.current[a.current.length-1]!==n&&(a.current.push(n),i(!1))},[a,n]);let s=ie(()=>({show:n,appear:l,initial:o}),[n,l,o]);D(()=>{n?h(\"visible\"):!U(g)&&d.current!==null&&h(\"hidden\")},[n,g]);let r={unmount:S},f=E(()=>{var u;o&&i(!1),(u=e.beforeEnter)==null||u.call(e)}),j=E(()=>{var u;o&&i(!1),(u=e.beforeLeave)==null||u.call(e)}),H=ae();return m.createElement(M.Provider,{value:g},m.createElement(w.Provider,{value:s},H({ourProps:{...r,as:O,children:m.createElement(me,{ref:p,...r,...R,beforeEnter:f,beforeLeave:j})},theirProps:{},defaultTag:O,features:fe,visible:C===\"visible\",name:\"Transition\"})))}function Le(e,t){let n=q(w)!==null,l=se()!==null;return m.createElement(m.Fragment,null,!n&&l?m.createElement(X,{ref:t,...e}):m.createElement(me,{ref:t,...e}))}let X=J(Ie),me=J(Ae),Fe=J(Le),ze=Object.assign(X,{Child:Fe,Root:X});export{ze as Transition,Fe as TransitionChild};\n","import{useEffect as d}from\"react\";import{useLatestValue as s}from'./use-latest-value.js';function E(n,e,a,t){let i=s(a);d(()=>{n=n!=null?n:window;function r(o){i.current(o)}return n.addEventListener(e,r,t),()=>n.removeEventListener(e,r,t)},[n,e,t])}export{E as useEventListener};\n","import{forwardRefWithAs as i,useRender as p}from'../utils/render.js';let a=\"span\";var s=(e=>(e[e.None=1]=\"None\",e[e.Focusable=2]=\"Focusable\",e[e.Hidden=4]=\"Hidden\",e))(s||{});function l(t,r){var n;let{features:d=1,...e}=t,o={ref:r,\"aria-hidden\":(d&2)===2?!0:(n=e[\"aria-hidden\"])!=null?n:void 0,hidden:(d&4)===4?!0:void 0,style:{position:\"fixed\",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",borderWidth:\"0\",...(d&4)===4&&(d&2)!==2&&{display:\"none\"}}};return p()({ourProps:o,theirProps:e,slot:{},defaultTag:a,name:\"Hidden\"})}let f=i(l);export{f as Hidden,s as HiddenFeatures};\n","import f,{createContext as M,useContext as d,useState as H}from\"react\";import{Hidden as E,HiddenFeatures as T}from'../internal/hidden.js';import{getOwnerDocument as L}from'../utils/owner.js';import{useEvent as s}from'./use-event.js';import{useOwnerDocument as h}from'./use-owner.js';function R({defaultContainers:l=[],portals:n,mainTreeNode:o}={}){let r=h(o),u=s(()=>{var i,c;let t=[];for(let e of l)e!==null&&(e instanceof HTMLElement?t.push(e):\"current\"in e&&e.current instanceof HTMLElement&&t.push(e.current));if(n!=null&&n.current)for(let e of n.current)t.push(e);for(let e of(i=r==null?void 0:r.querySelectorAll(\"html > *, body > *\"))!=null?i:[])e!==document.body&&e!==document.head&&e instanceof HTMLElement&&e.id!==\"headlessui-portal-root\"&&(o&&(e.contains(o)||e.contains((c=o==null?void 0:o.getRootNode())==null?void 0:c.host))||t.some(m=>e.contains(m))||t.push(e));return t});return{resolveContainers:u,contains:s(t=>u().some(i=>i.contains(t)))}}let a=M(null);function O({children:l,node:n}){let[o,r]=H(null),u=b(n!=null?n:o);return f.createElement(a.Provider,{value:u},l,u===null&&f.createElement(E,{features:T.Hidden,ref:t=>{var i,c;if(t){for(let e of(c=(i=L(t))==null?void 0:i.querySelectorAll(\"html > *, body > *\"))!=null?c:[])if(e!==document.body&&e!==document.head&&e instanceof HTMLElement&&e!=null&&e.contains(t)){r(e);break}}}}))}function b(l=null){var n;return(n=d(a))!=null?n:l}export{O as MainTreeProvider,b as useMainTreeNode,R as useRootContainers};\n","\"use client\";import r,{createContext as n,useContext as i}from\"react\";let e=n(()=>{});function u(){return i(e)}function C({value:t,children:o}){return r.createElement(e.Provider,{value:t},o)}export{C as CloseProvider,u as useClose};\n","import{useRef as o}from\"react\";import{useWindowEvent as t}from'./use-window-event.js';var a=(r=>(r[r.Forwards=0]=\"Forwards\",r[r.Backwards=1]=\"Backwards\",r))(a||{});function u(){let e=o(0);return t(!0,\"keydown\",r=>{r.key===\"Tab\"&&(e.current=r.shiftKey?1:0)},!0),e}export{a as Direction,u as useTabDirection};\n","import{useEffect as f,useRef as s}from\"react\";import{useEvent as i}from'./use-event.js';function m(u,t){let e=s([]),r=i(u);f(()=>{let o=[...e.current];for(let[a,l]of t.entries())if(e.current[a]!==l){let n=r(t,o);return e.current=t,n}},[r,...t])}export{m as useWatch};\n","import{onDocumentReady as d}from'./document-ready.js';import{focusableSelector as u}from'./focus-management.js';let r=[];d(()=>{function e(t){if(!(t.target instanceof HTMLElement)||t.target===document.body||r[0]===t.target)return;let n=t.target;n=n.closest(u),r.unshift(n!=null?n:t.target),r=r.filter(o=>o!=null&&o.isConnected),r.splice(10)}window.addEventListener(\"click\",e,{capture:!0}),window.addEventListener(\"mousedown\",e,{capture:!0}),window.addEventListener(\"focus\",e,{capture:!0}),document.body.addEventListener(\"click\",e,{capture:!0}),document.body.addEventListener(\"mousedown\",e,{capture:!0}),document.body.addEventListener(\"focus\",e,{capture:!0})});export{r as history};\n","\"use client\";import L,{useRef as M}from\"react\";import{useDisposables as W}from'../../hooks/use-disposables.js';import{useEvent as A}from'../../hooks/use-event.js';import{useEventListener as K}from'../../hooks/use-event-listener.js';import{useIsMounted as P}from'../../hooks/use-is-mounted.js';import{useIsTopLayer as O}from'../../hooks/use-is-top-layer.js';import{useOnUnmount as V}from'../../hooks/use-on-unmount.js';import{useOwnerDocument as q}from'../../hooks/use-owner.js';import{useServerHandoffComplete as J}from'../../hooks/use-server-handoff-complete.js';import{useSyncRefs as X}from'../../hooks/use-sync-refs.js';import{Direction as H,useTabDirection as z}from'../../hooks/use-tab-direction.js';import{useWatch as y}from'../../hooks/use-watch.js';import{Hidden as C,HiddenFeatures as _}from'../../internal/hidden.js';import{history as b}from'../../utils/active-element-history.js';import{Focus as T,FocusResult as S,focusElement as p,focusIn as E}from'../../utils/focus-management.js';import{match as h}from'../../utils/match.js';import{microTask as j}from'../../utils/micro-task.js';import{forwardRefWithAs as Q,useRender as Y}from'../../utils/render.js';function U(o){if(!o)return new Set;if(typeof o==\"function\")return new Set(o());let e=new Set;for(let t of o.current)t.current instanceof HTMLElement&&e.add(t.current);return e}let Z=\"div\";var x=(n=>(n[n.None=0]=\"None\",n[n.InitialFocus=1]=\"InitialFocus\",n[n.TabLock=2]=\"TabLock\",n[n.FocusLock=4]=\"FocusLock\",n[n.RestoreFocus=8]=\"RestoreFocus\",n[n.AutoFocus=16]=\"AutoFocus\",n))(x||{});function $(o,e){let t=M(null),r=X(t,e),{initialFocus:s,initialFocusFallback:a,containers:n,features:u=15,...f}=o;J()||(u=0);let l=q(t);ee(u,{ownerDocument:l});let i=te(u,{ownerDocument:l,container:t,initialFocus:s,initialFocusFallback:a});re(u,{ownerDocument:l,container:t,containers:n,previousActiveElement:i});let R=z(),g=A(c=>{let m=t.current;if(!m)return;(G=>G())(()=>{h(R.current,{[H.Forwards]:()=>{E(m,T.First,{skipElements:[c.relatedTarget,a]})},[H.Backwards]:()=>{E(m,T.Last,{skipElements:[c.relatedTarget,a]})}})})}),v=O(!!(u&2),\"focus-trap#tab-lock\"),N=W(),F=M(!1),k={ref:r,onKeyDown(c){c.key==\"Tab\"&&(F.current=!0,N.requestAnimationFrame(()=>{F.current=!1}))},onBlur(c){if(!(u&4))return;let m=U(n);t.current instanceof HTMLElement&&m.add(t.current);let d=c.relatedTarget;d instanceof HTMLElement&&d.dataset.headlessuiFocusGuard!==\"true\"&&(I(m,d)||(F.current?E(t.current,h(R.current,{[H.Forwards]:()=>T.Next,[H.Backwards]:()=>T.Previous})|T.WrapAround,{relativeTo:c.target}):c.target instanceof HTMLElement&&p(c.target)))}},B=Y();return L.createElement(L.Fragment,null,v&&L.createElement(C,{as:\"button\",type:\"button\",\"data-headlessui-focus-guard\":!0,onFocus:g,features:_.Focusable}),B({ourProps:k,theirProps:f,defaultTag:Z,name:\"FocusTrap\"}),v&&L.createElement(C,{as:\"button\",type:\"button\",\"data-headlessui-focus-guard\":!0,onFocus:g,features:_.Focusable}))}let D=Q($),ye=Object.assign(D,{features:x});function w(o=!0){let e=M(b.slice());return y(([t],[r])=>{r===!0&&t===!1&&j(()=>{e.current.splice(0)}),r===!1&&t===!0&&(e.current=b.slice())},[o,b,e]),A(()=>{var t;return(t=e.current.find(r=>r!=null&&r.isConnected))!=null?t:null})}function ee(o,{ownerDocument:e}){let t=!!(o&8),r=w(t);y(()=>{t||(e==null?void 0:e.activeElement)===(e==null?void 0:e.body)&&p(r())},[t]),V(()=>{t&&p(r())})}function te(o,{ownerDocument:e,container:t,initialFocus:r,initialFocusFallback:s}){let a=M(null),n=O(!!(o&1),\"focus-trap#initial-focus\"),u=P();return y(()=>{if(o===0)return;if(!n){s!=null&&s.current&&p(s.current);return}let f=t.current;f&&j(()=>{if(!u.current)return;let l=e==null?void 0:e.activeElement;if(r!=null&&r.current){if((r==null?void 0:r.current)===l){a.current=l;return}}else if(f.contains(l)){a.current=l;return}if(r!=null&&r.current)p(r.current);else{if(o&16){if(E(f,T.First|T.AutoFocus)!==S.Error)return}else if(E(f,T.First)!==S.Error)return;if(s!=null&&s.current&&(p(s.current),(e==null?void 0:e.activeElement)===s.current))return;console.warn(\"There are no focusable elements inside the <FocusTrap />\")}a.current=e==null?void 0:e.activeElement})},[s,n,o]),a}function re(o,{ownerDocument:e,container:t,containers:r,previousActiveElement:s}){let a=P(),n=!!(o&4);K(e==null?void 0:e.defaultView,\"focus\",u=>{if(!n||!a.current)return;let f=U(r);t.current instanceof HTMLElement&&f.add(t.current);let l=s.current;if(!l)return;let i=u.target;i&&i instanceof HTMLElement?I(f,i)?(s.current=i,p(i)):(u.preventDefault(),u.stopPropagation(),p(l)):p(s.current)},!0)}function I(o,e){for(let t of o)if(t.contains(e))return!0;return!1}export{ye as FocusTrap,x as FocusTrapFeatures};\n","function t(n){function e(){document.readyState!==\"loading\"&&(n(),document.removeEventListener(\"DOMContentLoaded\",e))}typeof window!=\"undefined\"&&typeof document!=\"undefined\"&&(document.addEventListener(\"DOMContentLoaded\",e),e())}export{t as onDocumentReady};\n","\"use client\";import n,{Fragment as N,createContext as ae,createRef as ie,useContext as pe,useEffect as se,useMemo as E,useReducer as de,useRef as W}from\"react\";import{useEscape as ue}from'../../hooks/use-escape.js';import{useEvent as A}from'../../hooks/use-event.js';import{useId as M}from'../../hooks/use-id.js';import{useInertOthers as Te}from'../../hooks/use-inert-others.js';import{useIsTouchDevice as fe}from'../../hooks/use-is-touch-device.js';import{useOnDisappear as ge}from'../../hooks/use-on-disappear.js';import{useOutsideClick as ce}from'../../hooks/use-outside-click.js';import{useOwnerDocument as me}from'../../hooks/use-owner.js';import{MainTreeProvider as $,useMainTreeNode as De,useRootContainers as Pe}from'../../hooks/use-root-containers.js';import{useScrollLock as ye}from'../../hooks/use-scroll-lock.js';import{useServerHandoffComplete as Ee}from'../../hooks/use-server-handoff-complete.js';import{useSyncRefs as G}from'../../hooks/use-sync-refs.js';import{CloseProvider as Ae}from'../../internal/close-provider.js';import{ResetOpenClosedProvider as _e,State as x,useOpenClosed as j}from'../../internal/open-closed.js';import{ForcePortalRoot as Y}from'../../internal/portal-force-root.js';import{match as Ce}from'../../utils/match.js';import{RenderFeatures as J,forwardRefWithAs as _,useRender as L}from'../../utils/render.js';import{Description as K,useDescriptions as Re}from'../description/description.js';import{FocusTrap as Fe,FocusTrapFeatures as C}from'../focus-trap/focus-trap.js';import{Portal as be,PortalGroup as ve,useNestedPortals as xe}from'../portal/portal.js';import{Transition as Le,TransitionChild as X}from'../transition/transition.js';var Oe=(o=>(o[o.Open=0]=\"Open\",o[o.Closed=1]=\"Closed\",o))(Oe||{}),he=(t=>(t[t.SetTitleId=0]=\"SetTitleId\",t))(he||{});let Se={[0](e,t){return e.titleId===t.id?e:{...e,titleId:t.id}}},k=ae(null);k.displayName=\"DialogContext\";function O(e){let t=pe(k);if(t===null){let o=new Error(`<${e} /> is missing a parent <Dialog /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,O),o}return t}function Ie(e,t){return Ce(t.type,Se,e,t)}let V=_(function(t,o){let a=M(),{id:l=`headlessui-dialog-${a}`,open:i,onClose:p,initialFocus:d,role:s=\"dialog\",autoFocus:f=!0,__demoMode:u=!1,unmount:P=!1,...h}=t,R=W(!1);s=function(){return s===\"dialog\"||s===\"alertdialog\"?s:(R.current||(R.current=!0,console.warn(`Invalid role [${s}] passed to <Dialog />. Only \\`dialog\\` and and \\`alertdialog\\` are supported. Using \\`dialog\\` instead.`)),\"dialog\")}();let c=j();i===void 0&&c!==null&&(i=(c&x.Open)===x.Open);let T=W(null),S=G(T,o),F=me(T),g=i?0:1,[b,q]=de(Ie,{titleId:null,descriptionId:null,panelRef:ie()}),m=A(()=>p(!1)),w=A(r=>q({type:0,id:r})),D=Ee()?g===0:!1,[z,Q]=xe(),Z={get current(){var r;return(r=b.panelRef.current)!=null?r:T.current}},v=De(),{resolveContainers:I}=Pe({mainTreeNode:v,portals:z,defaultContainers:[Z]}),B=c!==null?(c&x.Closing)===x.Closing:!1;Te(u||B?!1:D,{allowed:A(()=>{var r,H;return[(H=(r=T.current)==null?void 0:r.closest(\"[data-headlessui-portal]\"))!=null?H:null]}),disallowed:A(()=>{var r;return[(r=v==null?void 0:v.closest(\"body > *:not(#headlessui-portal-root)\"))!=null?r:null]})}),ce(D,I,r=>{r.preventDefault(),m()}),ue(D,F==null?void 0:F.defaultView,r=>{r.preventDefault(),r.stopPropagation(),document.activeElement&&\"blur\"in document.activeElement&&typeof document.activeElement.blur==\"function\"&&document.activeElement.blur(),m()}),ye(u||B?!1:D,F,I),ge(D,T,m);let[ee,te]=Re(),oe=E(()=>[{dialogState:g,close:m,setTitleId:w,unmount:P},b],[g,b,m,w,P]),U=E(()=>({open:g===0}),[g]),ne={ref:S,id:l,role:s,tabIndex:-1,\"aria-modal\":u?void 0:g===0?!0:void 0,\"aria-labelledby\":b.titleId,\"aria-describedby\":ee,unmount:P},re=!fe(),y=C.None;D&&!u&&(y|=C.RestoreFocus,y|=C.TabLock,f&&(y|=C.AutoFocus),re&&(y|=C.InitialFocus));let le=L();return n.createElement(_e,null,n.createElement(Y,{force:!0},n.createElement(be,null,n.createElement(k.Provider,{value:oe},n.createElement(ve,{target:T},n.createElement(Y,{force:!1},n.createElement(te,{slot:U},n.createElement(Q,null,n.createElement(Fe,{initialFocus:d,initialFocusFallback:T,containers:I,features:y},n.createElement(Ae,{value:m},le({ourProps:ne,theirProps:h,slot:U,defaultTag:Me,features:Ge,visible:g===0,name:\"Dialog\"})))))))))))}),Me=\"div\",Ge=J.RenderStrategy|J.Static;function ke(e,t){let{transition:o=!1,open:a,...l}=e,i=j(),p=e.hasOwnProperty(\"open\")||i!==null,d=e.hasOwnProperty(\"onClose\");if(!p&&!d)throw new Error(\"You have to provide an `open` and an `onClose` prop to the `Dialog` component.\");if(!p)throw new Error(\"You provided an `onClose` prop to the `Dialog`, but forgot an `open` prop.\");if(!d)throw new Error(\"You provided an `open` prop to the `Dialog`, but forgot an `onClose` prop.\");if(!i&&typeof e.open!=\"boolean\")throw new Error(`You provided an \\`open\\` prop to the \\`Dialog\\`, but the value is not a boolean. Received: ${e.open}`);if(typeof e.onClose!=\"function\")throw new Error(`You provided an \\`onClose\\` prop to the \\`Dialog\\`, but the value is not a function. Received: ${e.onClose}`);return(a!==void 0||o)&&!l.static?n.createElement($,null,n.createElement(Le,{show:a,transition:o,unmount:l.unmount},n.createElement(V,{ref:t,...l}))):n.createElement($,null,n.createElement(V,{ref:t,open:a,...l}))}let we=\"div\";function Be(e,t){let o=M(),{id:a=`headlessui-dialog-panel-${o}`,transition:l=!1,...i}=e,[{dialogState:p,unmount:d},s]=O(\"Dialog.Panel\"),f=G(t,s.panelRef),u=E(()=>({open:p===0}),[p]),P=A(S=>{S.stopPropagation()}),h={ref:f,id:a,onClick:P},R=l?X:N,c=l?{unmount:d}:{},T=L();return n.createElement(R,{...c},T({ourProps:h,theirProps:i,slot:u,defaultTag:we,name:\"Dialog.Panel\"}))}let Ue=\"div\";function He(e,t){let{transition:o=!1,...a}=e,[{dialogState:l,unmount:i}]=O(\"Dialog.Backdrop\"),p=E(()=>({open:l===0}),[l]),d={ref:t,\"aria-hidden\":!0},s=o?X:N,f=o?{unmount:i}:{},u=L();return n.createElement(s,{...f},u({ourProps:d,theirProps:a,slot:p,defaultTag:Ue,name:\"Dialog.Backdrop\"}))}let Ne=\"h2\";function We(e,t){let o=M(),{id:a=`headlessui-dialog-title-${o}`,...l}=e,[{dialogState:i,setTitleId:p}]=O(\"Dialog.Title\"),d=G(t);se(()=>(p(a),()=>p(null)),[a,p]);let s=E(()=>({open:i===0}),[i]),f={ref:d,id:a};return L()({ourProps:f,theirProps:l,slot:s,defaultTag:Ne,name:\"Dialog.Title\"})}let $e=_(ke),je=_(Be),Dt=_(He),Ye=_(We),Pt=K,yt=Object.assign($e,{Panel:je,Title:Ye,Description:K});export{yt as Dialog,Dt as DialogBackdrop,Pt as DialogDescription,je as DialogPanel,Ye as DialogTitle};\n","import{Keys as u}from'../components/keyboard.js';import{useEventListener as i}from'./use-event-listener.js';import{useIsTopLayer as f}from'./use-is-top-layer.js';function a(o,r=typeof document!=\"undefined\"?document.defaultView:null,t){let n=f(o,\"escape\");i(r,\"keydown\",e=>{n&&(e.defaultPrevented||e.key===u.Escape&&t(e))})}export{a as useEscape};\n","import{useState as i}from\"react\";import{useIsoMorphicEffect as s}from'./use-iso-morphic-effect.js';function f(){var t;let[e]=i(()=>typeof window!=\"undefined\"&&typeof window.matchMedia==\"function\"?window.matchMedia(\"(pointer: coarse)\"):null),[o,c]=i((t=e==null?void 0:e.matches)!=null?t:!1);return s(()=>{if(!e)return;function n(r){c(r.matches)}return e.addEventListener(\"change\",n),()=>e.removeEventListener(\"change\",n)},[e]),o}export{f as useIsTouchDevice};\n","import * as React from \"react\";\nfunction ChevronDownIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m19.5 8.25-7.5 7.5-7.5-7.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ChevronDownIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ArrowsRightLeftIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M15.97 2.47a.75.75 0 0 1 1.06 0l4.5 4.5a.75.75 0 0 1 0 1.06l-4.5 4.5a.75.75 0 1 1-1.06-1.06l3.22-3.22H7.5a.75.75 0 0 1 0-1.5h11.69l-3.22-3.22a.75.75 0 0 1 0-1.06Zm-7.94 9a.75.75 0 0 1 0 1.06l-3.22 3.22H16.5a.75.75 0 0 1 0 1.5H4.81l3.22 3.22a.75.75 0 1 1-1.06 1.06l-4.5-4.5a.75.75 0 0 1 0-1.06l4.5-4.5a.75.75 0 0 1 1.06 0Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ArrowsRightLeftIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CreditCardIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M2.25 8.25h19.5M2.25 9h19.5m-16.5 5.25h6m-6 2.25h3m-3.75 3h15a2.25 2.25 0 0 0 2.25-2.25V6.75A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25v10.5A2.25 2.25 0 0 0 4.5 19.5Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CreditCardIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction QrCodeIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M3.75 4.875c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5A1.125 1.125 0 0 1 3.75 9.375v-4.5ZM3.75 14.625c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5a1.125 1.125 0 0 1-1.125-1.125v-4.5ZM13.5 4.875c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5A1.125 1.125 0 0 1 13.5 9.375v-4.5Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6.75 6.75h.75v.75h-.75v-.75ZM6.75 16.5h.75v.75h-.75v-.75ZM16.5 6.75h.75v.75h-.75v-.75ZM13.5 13.5h.75v.75h-.75v-.75ZM13.5 19.5h.75v.75h-.75v-.75ZM19.5 13.5h.75v.75h-.75v-.75ZM19.5 19.5h.75v.75h-.75v-.75ZM16.5 16.5h.75v.75h-.75v-.75Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(QrCodeIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction InformationCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(InformationCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ChevronRightIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m8.25 4.5 7.5 7.5-7.5 7.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ChevronRightIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction FingerPrintIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M7.864 4.243A7.5 7.5 0 0 1 19.5 10.5c0 2.92-.556 5.709-1.568 8.268M5.742 6.364A7.465 7.465 0 0 0 4.5 10.5a7.464 7.464 0 0 1-1.15 3.993m1.989 3.559A11.209 11.209 0 0 0 8.25 10.5a3.75 3.75 0 1 1 7.5 0c0 .527-.021 1.049-.064 1.565M12 10.5a14.94 14.94 0 0 1-3.6 9.75m6.633-4.596a18.666 18.666 0 0 1-2.485 5.33\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(FingerPrintIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ClockIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ClockIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction TrashIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(TrashIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CheckBadgeIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M8.603 3.799A4.49 4.49 0 0 1 12 2.25c1.357 0 2.573.6 3.397 1.549a4.49 4.49 0 0 1 3.498 1.307 4.491 4.491 0 0 1 1.307 3.497A4.49 4.49 0 0 1 21.75 12a4.49 4.49 0 0 1-1.549 3.397 4.491 4.491 0 0 1-1.307 3.497 4.491 4.491 0 0 1-3.497 1.307A4.49 4.49 0 0 1 12 21.75a4.49 4.49 0 0 1-3.397-1.549 4.49 4.49 0 0 1-3.498-1.306 4.491 4.491 0 0 1-1.307-3.498A4.49 4.49 0 0 1 2.25 12c0-1.357.6-2.573 1.549-3.397a4.49 4.49 0 0 1 1.307-3.497 4.49 4.49 0 0 1 3.497-1.307Zm7.007 6.387a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CheckBadgeIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ShieldCheckIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ShieldCheckIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction IdentificationIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M4.5 3.75a3 3 0 0 0-3 3v10.5a3 3 0 0 0 3 3h15a3 3 0 0 0 3-3V6.75a3 3 0 0 0-3-3h-15Zm4.125 3a2.25 2.25 0 1 0 0 4.5 2.25 2.25 0 0 0 0-4.5Zm-3.873 8.703a4.126 4.126 0 0 1 7.746 0 .75.75 0 0 1-.351.92 7.47 7.47 0 0 1-3.522.877 7.47 7.47 0 0 1-3.522-.877.75.75 0 0 1-.351-.92ZM15 8.25a.75.75 0 0 0 0 1.5h3.75a.75.75 0 0 0 0-1.5H15ZM14.25 12a.75.75 0 0 1 .75-.75h3.75a.75.75 0 0 1 0 1.5H15a.75.75 0 0 1-.75-.75Zm.75 2.25a.75.75 0 0 0 0 1.5h3.75a.75.75 0 0 0 0-1.5H15Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(IdentificationIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction DevicePhoneMobileIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M10.5 1.5H8.25A2.25 2.25 0 0 0 6 3.75v16.5a2.25 2.25 0 0 0 2.25 2.25h7.5A2.25 2.25 0 0 0 18 20.25V3.75a2.25 2.25 0 0 0-2.25-2.25H13.5m-3 0V3h3V1.5m-3 0h3m-3 18.75h3\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(DevicePhoneMobileIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction MinusCircleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M15 12H9m12 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(MinusCircleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ArrowRightEndOnRectangleIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M8.25 9V5.25A2.25 2.25 0 0 1 10.5 3h6a2.25 2.25 0 0 1 2.25 2.25v13.5A2.25 2.25 0 0 1 16.5 21h-6a2.25 2.25 0 0 1-2.25-2.25V15M12 9l3 3m0 0-3 3m3-3H2.25\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ArrowRightEndOnRectangleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ShieldCheckIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M12.516 2.17a.75.75 0 0 0-1.032 0 11.209 11.209 0 0 1-7.877 3.08.75.75 0 0 0-.722.515A12.74 12.74 0 0 0 2.25 9.75c0 5.942 4.064 10.933 9.563 12.348a.749.749 0 0 0 .374 0c5.499-1.415 9.563-6.406 9.563-12.348 0-1.39-.223-2.73-.635-3.985a.75.75 0 0 0-.722-.516l-.143.001c-2.996 0-5.717-1.17-7.734-3.08Zm3.094 8.016a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\",\n clipRule: \"evenodd\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ShieldCheckIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CalendarIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CalendarIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction LockClosedIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(LockClosedIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction PencilSquareIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(PencilSquareIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ClipboardDocumentIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M8.25 7.5V6.108c0-1.135.845-2.098 1.976-2.192.373-.03.748-.057 1.123-.08M15.75 18H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08M15.75 18.75v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5A3.375 3.375 0 0 0 6.375 7.5H5.25m11.9-3.664A2.251 2.251 0 0 0 15 2.25h-1.5a2.251 2.251 0 0 0-2.15 1.586m5.8 0c.065.21.1.433.1.664v.75h-6V4.5c0-.231.035-.454.1-.664M6.75 7.5H4.875c-.621 0-1.125.504-1.125 1.125v12c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V16.5a9 9 0 0 0-9-9Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ClipboardDocumentIcon);\nexport default ForwardRef;","import{jsxs as e,jsx as t,Fragment as n}from\"react/jsx-runtime\";import{createStore as r}from\"mipd\";import a,{useMemo as i,useEffect as o,useState as s,useRef as l,useCallback as c,useReducer as d,forwardRef as u,useContext as h,createContext as p}from\"react\";import*as m from\"react-device-detect\";import{isMobile as y,isIOS as f,isSafari as w,isAndroid as v}from\"react-device-detect\";import{getAddress as C,isAddress as E}from\"viem/utils\";import{P as T,f as b,a as A,b as _,c as k,d as I,e as N,u as x,g as S,h as R,i as O,j as M,n as P,k as L,I as D}from\"./internal-context-mSHyF0Gq.mjs\";import{c as U,p as F,a as B,b as z,u as H,f as V,d as $,e as j,g as G,h as q,o as K,i as Y,j as Z,k as J,l as Q,m as X,n as ee,q as te,r as ne,s as re,t as ie,v as oe,w as se,x as le,y as ce,z as de,A as ue,B as he,C as pe,D as me,E as ye,F as ge,G as fe,H as we,I as ve,J as Ce,K as Ee,L as Te,M as be,N as Ae,O as _e,P as ke,Q as Ie,R as Ne,S as xe,T as Se,U as Re,V as Oe,W as We,X as Me,Y as Pe,Z as Le,_ as De,$ as Ue,a0 as Fe,a1 as Be,a2 as ze,a3 as He,a4 as Ve,a5 as $e}from\"./paths-Q47X90aK.mjs\";import{o as je,R as Ge,C as qe,E as Ke,P as Ye,t as Ze,g as Je,a as Qe,B as Xe,d as et,i as tt,W as nt,b as rt,S as at,u as it,M as ot,c as st,A as lt,e as ct,f as dt,s as ut,H as ht,h as pt,F as mt,j as yt,k as gt,l as ft,m as wt,n as vt,p as Ct,T as Et,q as Tt,r as bt,v as At,w as _t,x as kt,y as It,z as Nt,D as xt,G as St,I as Rt,J as Ot,K as Wt,L as Mt,N as Pt,O as Lt,Q as Dt,U as Ut,V as Ft,X as Bt,Y as zt,Z as Ht,_ as Vt,$ as $t,a0 as jt,a1 as Gt,a2 as qt,a3 as Kt,a4 as Yt,a5 as Zt,a6 as Jt,a7 as Qt,a8 as Xt,a9 as en,aa as tn,ab as nn,ac as rn,ad as an,ae as on,af as sn,ag as ln,ah as cn,ai as dn,aj as un,ak as hn,al as pn,am as mn,an as yn,ao as gn,ap as fn,aq as wn,ar as vn,as as Cn,at as En,au as Tn,av as bn,aw as An,ax as _n,ay as kn,az as In,aA as Nn,aB as xn,aC as Sn,aD as Rn,aE as On,aF as Wn,aG as Mn}from\"./useActiveWallet-GrupFUTI.mjs\";export{aK as useActiveWallet,aI as useConnectWallet,aJ as useFundWallet,aH as useLogin}from\"./useActiveWallet-GrupFUTI.mjs\";import*as Pn from\"jose\";import{base64url as Ln}from\"jose\";import{g as Dn,C as Un,H as Fn,O as Bn,S as zn,D as Hn,a as Vn,b as $n,c as jn,d as Gn,V as qn,e as Kn,P as Yn,R as Zn,f as Jn,h as Qn,i as Xn,j as er,k as tr,l as nr,I as rr,m as ar,n as ir,o as or,p as sr,u as lr,M as cr,q as dr,r as ur,s as hr,t as pr,v as mr,w as yr,x as gr,W as fr,y as wr,z as vr,A as Cr,B as Er,E as Tr,F as br,G as Ar,J as _r,K as kr,L as Ir,N as Nr,Q as xr,T as Sr,U as Rr,X as Or,Y as Wr,Z as Mr,_ as Pr,$ as Lr,a0 as Dr,a1 as Ur,a2 as Fr,a3 as Br,a4 as zr,a5 as Hr,a6 as Vr,a7 as $r,a8 as jr,a9 as Gr,aa as qr,ab as Kr}from\"./useWallets-CIsjbJl7.mjs\";export{ac as SUPPORTED_CHAINS,ae as addPrivyRpcToChain,ad as addRpcUrlOverrideToChain}from\"./useWallets-CIsjbJl7.mjs\";import{e as Yr,i as Zr,f as Jr,S as Qr,a as Xr,l as ea,u as ta,C as na,b as ra,c as aa,O as ia,d as oa,g as sa,h as la,P as ca,j as da,k as ua,m as ha,n as pa,p as ma,o as ya,q as ga,r as fa,s as wa,t as va,v as Ca}from\"./prepareFundingModalData-Dv7ze5Ty.mjs\";export{W as WalletConnector}from\"./prepareFundingModalData-Dv7ze5Ty.mjs\";import{v4 as Ea}from\"uuid\";import Ta from\"eventemitter3\";import{CoinbaseWalletSDK as ba}from\"@coinbase/wallet-sdk\";import{isHex as Aa,toHex as _a,createPublicClient as ka,http as Ia,createWalletClient as Na,custom as xa,publicActions as Sa,formatUnits as Ra,parseEther as Oa,encodeFunctionData as Wa,isAddress as Ma,decodeFunctionData as Pa,decodeAbiParameters as La,formatEther as Da,hexToString as Ua}from\"viem\";import{g as Fa,a as Ba}from\"./getPublicClient-wHgCncHx.mjs\";import{ofetch as za}from\"ofetch\";import Ha from\"js-cookie\";import{create as Va}from\"zustand\";import{Turnstile as $a}from\"@marsidev/react-turnstile\";import{styled as ja,css as Ga,createGlobalStyle as qa}from\"styled-components\";import Ka from\"@heroicons/react/24/outline/QuestionMarkCircleIcon\";import Ya from\"@heroicons/react/24/outline/ExclamationTriangleIcon\";import Za from\"@heroicons/react/24/outline/WalletIcon\";import Ja from\"@heroicons/react/24/outline/ExclamationCircleIcon\";import Qa from\"@heroicons/react/24/outline/Square2StackIcon\";import Xa from\"@heroicons/react/24/outline/ArrowTopRightOnSquareIcon\";import ei from\"@heroicons/react/24/solid/DocumentCheckIcon\";import ti from\"@heroicons/react/20/solid/CheckIcon\";import ni from\"@heroicons/react/24/outline/EnvelopeIcon\";import ri from\"@heroicons/react/24/outline/PhoneIcon\";import ai from\"@heroicons/react/24/solid/CheckCircleIcon\";import ii from\"@heroicons/react/24/solid/XCircleIcon\";import oi from\"@heroicons/react/24/outline/CheckCircleIcon\";import si from\"@heroicons/react/24/outline/CloudArrowUpIcon\";import li from\"@heroicons/react/24/outline/NoSymbolIcon\";import ci from\"fast-password-entropy\";import*as di from\"secure-password-utilities\";import{DEFAULT_WORDLIST as ui}from\"secure-password-utilities/wordlists\";import hi from\"@heroicons/react/24/outline/ArrowPathIcon\";import pi from\"@heroicons/react/24/outline/EyeIcon\";import mi from\"@heroicons/react/24/outline/EyeSlashIcon\";import yi from\"@heroicons/react/24/outline/KeyIcon\";import gi from\"@heroicons/react/24/outline/ArrowDownTrayIcon\";import fi from\"@heroicons/react/24/outline/ClipboardDocumentCheckIcon\";import wi from\"@heroicons/react/24/outline/DocumentDuplicateIcon\";import vi from\"@heroicons/react/24/outline/UserCircleIcon\";import Ci from\"@heroicons/react/24/solid/LockClosedIcon\";import{formatWalletAddress as Ei,getCoinbaseOnRampUrl as Ti,chainToMoonpayCurrency as bi,isSupportedChainIdForMoonpay as Ai,isSupportedChainIdForCoinbaseOnramp as _i,formatTokenAmount as ki,formatWeiAmount as Ii,countryCodesAndNumbers as Ni,validatePhoneNumber as xi,phoneNumberTypingFormatter as Si,getPlaceholderPhoneNumber as Ri,getCountryCallingCode as Oi,getPhoneCountryCodeAndNumber as Wi,formatPhoneNumber as Mi,toObjectKeys as Pi,lastFourDigits as Li,SolanaClient as Di,ProviderErrors as Ui}from\"@privy-io/js-sdk-core\";import{Menu as Fi,MenuButton as Bi,MenuItems as zi,MenuItem as Hi,Transition as Vi,Dialog as $i,TransitionChild as ji,DialogPanel as Gi}from\"@headlessui/react\";import qi from\"@heroicons/react/24/outline/ChevronDownIcon\";import Ki from\"@heroicons/react/24/solid/ArrowsRightLeftIcon\";import Yi from\"@heroicons/react/24/outline/CreditCardIcon\";import Zi from\"@heroicons/react/24/outline/QrCodeIcon\";import Ji from\"@heroicons/react/24/outline/InformationCircleIcon\";import Qi from\"@heroicons/react/24/outline/ChevronRightIcon\";import Xi from\"@heroicons/react/24/outline/FingerPrintIcon\";import eo from\"@heroicons/react/24/outline/ClockIcon\";import to from\"@heroicons/react/24/outline/TrashIcon\";import no from\"@heroicons/react/24/solid/CheckBadgeIcon\";import ro from\"@heroicons/react/24/outline/ShieldCheckIcon\";import ao from\"@heroicons/react/24/solid/IdentificationIcon\";import io from\"@heroicons/react/24/outline/DevicePhoneMobileIcon\";import oo from\"@heroicons/react/24/outline/MinusCircleIcon\";import so from\"@heroicons/react/24/outline/ArrowRightEndOnRectangleIcon\";import lo from\"@heroicons/react/24/solid/ShieldCheckIcon\";import co from\"@heroicons/react/24/outline/CalendarIcon\";import uo from\"@heroicons/react/24/outline/GlobeAltIcon\";import ho from\"@heroicons/react/24/outline/LockClosedIcon\";import po from\"@heroicons/react/24/outline/PencilSquareIcon\";import{ChevronDownIcon as mo,ArrowRightIcon as yo}from\"@heroicons/react/24/outline\";import go from\"@heroicons/react/24/outline/ClipboardDocumentIcon\";import{i as fo}from\"./importWallet-CuDZ5ksz.mjs\";export{g as getEmbeddedConnectedWallet}from\"./getEmbeddedConnectedWallet-CSSBWE2p.mjs\";import\"@heroicons/react/24/outline/ArrowLeftIcon\";import\"@heroicons/react/24/outline/ArrowRightIcon\";import\"@heroicons/react/24/outline/XMarkIcon\";import\"@walletconnect/ethereum-provider\";import\"@heroicons/react/24/outline/CheckIcon\";import\"qrcode\";import\"zustand/shallow\";import\"zustand/traditional\";import\"tinycolor2\";class wo{async authenticate(){if(!this.api)throw new T(\"Auth flow has no API instance\");try{return await this.api.post(U,{token:this.meta.token})}catch(e){throw b(e)}}async link(){throw Error(\"Unimplemented\")}constructor(e){this.meta={token:e}}}function vo(e){return e?{\"privy-ui\":\"t\"}:void 0}class Co{async authenticate(){if(!this.api)throw new T(\"Auth flow has no API instance\");if(!this.meta.email||!this.meta.emailCode)throw new T(\"Email and email code must be set prior to calling authenticate.\");try{return await this.api.post(F,{email:this.meta.email,code:this.meta.emailCode,mode:this.meta.disableSignup?\"no-signup\":\"login-or-sign-up\"})}catch(e){throw b(e)}}async link(){if(!this.api)throw new T(\"Auth flow has no API instance\");if(!this.meta.email||!this.meta.emailCode)throw new T(\"Email and email code must be set prior to calling authenticate.\");try{return await this.api.post(B,{email:this.meta.email,code:this.meta.emailCode})}catch(e){throw b(e)}}async sendCodeEmail({email:e,captchaToken:t,withPrivyUi:n}){if(!this.api)throw new T(\"Auth flow has no API instance\");if(e&&(this.meta.email=e),t&&(this.meta.captchaToken=t),!this.meta.email)throw new T(\"Email must be set when initialzing authentication.\");let r=vo(n);try{return await this.api.post(z,{email:this.meta.email,token:this.meta.captchaToken},{headers:{...r}})}catch(e){throw b(e)}}constructor({email:e,captchaToken:t,disableSignup:n}){this.meta={email:e,captchaToken:t,disableSignup:n??!1}}}class Eo extends Co{async link(){if(!this.api)throw new T(\"Auth flow has no API instance\");if(!this.meta.email||!this.meta.emailCode||!this.meta.oldAddress)throw new T(\"Email, email code, and an old email address must be set prior to calling update.\");try{return await this.api.post(H,{oldAddress:this.meta.oldAddress,newAddress:this.meta.email,code:this.meta.emailCode})}catch(e){throw b(e)}}constructor(e,t,n){super({email:t,captchaToken:n}),this.meta={email:t,captchaToken:n,oldAddress:e,disableSignup:!1}}}class To{get meta(){return this._meta}async authenticate(){if(!this.api)throw new T(\"Auth flow has no API instance\");if(!this.meta.channelToken)throw new T(\"Auth flow must be initialized first\");try{let e=await this.api.post(V,{channel_token:this.meta.channelToken,message:this.message,signature:this.signature,fid:this.fid,mode:this.meta.disableSignup?\"no-signup\":\"login-or-sign-up\"});if(!e)throw new T(\"No response from authentication\");return e}catch(e){throw b(e)}}async link(){if(!this.api)throw new T(\"Auth flow has no API instance\");try{return await this.api.post($,{channel_token:this.meta.channelToken,message:this.message,signature:this.signature,fid:this.fid})}catch(e){throw b(e)}}async _startChannelOnce(){if(!this.api)throw new T(\"Auth flow has no API instance\");let e=await this.api.post(j,{token:this.captchaToken});y&&!f&&e.connect_uri&&je(e.connect_uri,\"_blank\"),this._meta={...this._meta,connectUri:e.connect_uri,channelToken:e.channel_token}}async initializeFarcasterConnect(){if(!this.api)throw new T(\"Auth flow has no API instance\");await this.startChannelOnce.execute()}async _pollForReady(){if(!this.api)throw new T(\"Auth flow has no API instance\");if(!this.meta.channelToken)throw new T(\"Auth flow must be initialized first\");let e=await this.api.get(G,{headers:{\"farcaster-channel-token\":this.meta.channelToken}});return\"completed\"===e.state&&(this.message=e.message,this.signature=e.signature,this.fid=e.fid,!0)}constructor(e,t=!1){this._meta={disableSignup:!1},this.captchaToken=e,this.startChannelOnce=new Ge(this._startChannelOnce.bind(this)),this.pollForReady=new Ge(this._pollForReady.bind(this)),this._meta.disableSignup=t}}function bo(e){return crypto.getRandomValues(new Uint8Array(e))}class Ao{getOrCreateGuestCredential(e){let t=Dn(e);if(Yr()){if(Zr.get(t))return Zr.get(t);{let e=Ln.encode(bo(32));return Zr.put(t,e),e}}return Ln.encode(bo(32))}async authenticate(){if(!this.api)throw new T(\"Auth flow has no API instance\");try{return await this.api.post(q,{guest_credential:this.meta.guestCredential})}catch(e){throw b(e)}}async link(){throw Error(\"Linking is not supported for the guest flow\")}constructor(e){this.meta={guestCredential:this.getOrCreateGuestCredential(e)}}}function _o(){return Ln.encode(bo(36))}function ko(){return _o()}async function Io(e,t=\"S256\"){if(\"S256\"!=t)return e;{let t=await async function(e){let t=(new TextEncoder).encode(e);return new Uint8Array(await crypto.subtle.digest(\"SHA-256\",t))}(e);return Ln.encode(t)}}class No{addCaptchaToken(e){this.meta.captchaToken=e}isActive(){return!!(this.meta.authorizationCode&&this.meta.stateCode&&this.meta.provider)}async authenticate(){if(!this.api)throw new T(\"Auth flow has no API instance\");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new T(\"[OAuth AuthFlow] Authorization and state codes code must be set prior to calling authenticate.\");if(\"undefined\"===this.meta.authorizationCode)throw new T(\"User denied confirmation during OAuth flow\");let e=function(){let e=Zr.get(Un);if(!e)throw new T(\"Authentication error.\");return e}();try{let t=await this.api.post(K,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode,code_verifier:e,mode:this.meta.disableSignup?\"no-signup\":\"login-or-sign-up\"});return Zr.del(Un),Zr.del(Fn),Zr.del(Bn),t}catch(e){let t=b(e);if(t.privyErrorCode)throw new T(t.message||\"Invalid code during OAuth flow.\",void 0,t.privyErrorCode);if(\"User denied confirmation during OAuth flow\"===t.message)throw new T(\"Invalid code during oauth flow.\",void 0,A.OAUTH_USER_DENIED);throw new T(\"Invalid code during OAuth flow.\",void 0,A.UNKNOWN_AUTH_ERROR)}}async link(){if(!this.api)throw new T(\"Auth flow has no API instance\");if(!this.meta.authorizationCode||!this.meta.stateCode)throw new T(\"[OAuth AuthFlow] Authorization and state codes code must be set prior to calling link.\");if(\"undefined\"===this.meta.authorizationCode)throw new T(\"User denied confirmation during OAuth flow\");let e=Zr.get(Un);if(!e)throw new T(\"Authentication error.\");try{let t=await this.api.post(Y,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode,code_verifier:e});return Zr.del(Un),t}catch(e){throw b(e)}}async getAuthorizationUrl(){if(!this.api)throw new T(\"Auth flow has no API instance\");if(!this.meta.provider)throw new T(\"Provider must be set when initializing OAuth authentication.\");let e=_o();Zr.put(Un,e);let t=ko();Zr.put(zn,t);let n=await Io(e);this.meta.withPrivyUi||Zr.put(Fn,!0),this.meta.disableSignup&&Zr.put(Bn,!0);let r=vo(this.meta.withPrivyUi);try{return await this.api.post(Z,{provider:this.meta.provider,redirect_to:window.location.href,token:this.meta.captchaToken,code_challenge:n,state_code:t},{headers:{...r}})}catch(e){throw b(e)}}constructor(e){this.meta=e}}function xo(e){return e.charAt(0).toUpperCase()+e.slice(1)}const So=({style:n,...r})=>/*#__PURE__*/e(\"svg\",{version:\"1.1\",xmlns:\"http://www.w3.org/2000/svg\",x:\"0px\",y:\"0px\",viewBox:\"0 0 24 24\",style:{height:\"24px\",...n},...r,children:[/*#__PURE__*/t(\"path\",{d:\"M17.0722 11.6888C17.0471 8.90571 19.3263 7.56847 19.429 7.50274C18.1466 5.60938 16.153 5.35154 15.4417 5.3212C13.7461 5.14678 12.1306 6.32982 11.269 6.32982C10.4074 6.32982 9.08004 5.34648 7.67246 5.37429C5.82158 5.40209 4.11595 6.45874 3.16171 8.13218C1.24068 11.4942 2.6708 16.4817 4.54423 19.2143C5.46091 20.549 6.55041 22.0531 7.98554 21.9975C9.36803 21.9419 9.88905 21.095 11.5571 21.095C13.2251 21.095 13.696 21.9975 15.1537 21.9697C16.6389 21.9393 17.5806 20.6046 18.4897 19.2648C19.5392 17.7153 19.9725 16.2137 19.9975 16.1354C19.965 16.1228 17.1022 15.0155 17.0722 11.6888Z\",fill:\"currentColor\"}),/*#__PURE__*/t(\"path\",{d:\"M14.3295 3.51373C15.0909 2.58347 15.6043 1.28921 15.4641 0C14.3671 0.0455014 13.0396 0.738135 12.2532 1.66838C11.5494 2.48994 10.9307 3.80695 11.0986 5.07089C12.3183 5.16694 13.5681 4.44145 14.3295 3.51373Z\",fill:\"currentColor\"})]}),Ro=({style:n,...r})=>/*#__PURE__*/e(\"svg\",{version:\"1.1\",xmlns:\"http://www.w3.org/2000/svg\",x:\"0px\",y:\"0px\",viewBox:\"0 0 71 55\",style:{height:\"24px\",...n},...r,children:[/*#__PURE__*/t(\"g\",{clipPath:\"url(#clip0)\",children:/*#__PURE__*/t(\"path\",{d:\"M60.1045 4.8978C55.5792 2.8214 50.7265 1.2916 45.6527 0.41542C45.5603 0.39851 45.468 0.440769 45.4204 0.525289C44.7963 1.6353 44.105 3.0834 43.6209 4.2216C38.1637 3.4046 32.7345 3.4046 27.3892 4.2216C26.905 3.0581 26.1886 1.6353 25.5617 0.525289C25.5141 0.443589 25.4218 0.40133 25.3294 0.41542C20.2584 1.2888 15.4057 2.8186 10.8776 4.8978C10.8384 4.9147 10.8048 4.9429 10.7825 4.9795C1.57795 18.7309 -0.943561 32.1443 0.293408 45.3914C0.299005 45.4562 0.335386 45.5182 0.385761 45.5576C6.45866 50.0174 12.3413 52.7249 18.1147 54.5195C18.2071 54.5477 18.305 54.5139 18.3638 54.4378C19.7295 52.5728 20.9469 50.6063 21.9907 48.5383C22.0523 48.4172 21.9935 48.2735 21.8676 48.2256C19.9366 47.4931 18.0979 46.6 16.3292 45.5858C16.1893 45.5041 16.1781 45.304 16.3068 45.2082C16.679 44.9293 17.0513 44.6391 17.4067 44.3461C17.471 44.2926 17.5606 44.2813 17.6362 44.3151C29.2558 49.6202 41.8354 49.6202 53.3179 44.3151C53.3935 44.2785 53.4831 44.2898 53.5502 44.3433C53.9057 44.6363 54.2779 44.9293 54.6529 45.2082C54.7816 45.304 54.7732 45.5041 54.6333 45.5858C52.8646 46.6197 51.0259 47.4931 49.0921 48.2228C48.9662 48.2707 48.9102 48.4172 48.9718 48.5383C50.038 50.6034 51.2554 52.5699 52.5959 54.435C52.6519 54.5139 52.7526 54.5477 52.845 54.5195C58.6464 52.7249 64.529 50.0174 70.6019 45.5576C70.6551 45.5182 70.6887 45.459 70.6943 45.3942C72.1747 30.0791 68.2147 16.7757 60.1968 4.9823C60.1772 4.9429 60.1437 4.9147 60.1045 4.8978ZM23.7259 37.3253C20.2276 37.3253 17.3451 34.1136 17.3451 30.1693C17.3451 26.225 20.1717 23.0133 23.7259 23.0133C27.308 23.0133 30.1626 26.2532 30.1066 30.1693C30.1066 34.1136 27.28 37.3253 23.7259 37.3253ZM47.3178 37.3253C43.8196 37.3253 40.9371 34.1136 40.9371 30.1693C40.9371 26.225 43.7636 23.0133 47.3178 23.0133C50.9 23.0133 53.7545 26.2532 53.6986 30.1693C53.6986 34.1136 50.9 37.3253 47.3178 37.3253Z\",fill:\"#5865F2\"})}),/*#__PURE__*/t(\"defs\",{children:/*#__PURE__*/t(\"clipPath\",{id:\"clip0\",children:/*#__PURE__*/t(\"rect\",{width:\"71\",height:\"55\",fill:\"white\"})})})]}),Oo=({style:e,...n})=>/*#__PURE__*/t(\"svg\",{version:\"1.1\",xmlns:\"http://www.w3.org/2000/svg\",x:\"24\",y:\"24\",viewBox:\"0 0 98 96\",style:{height:\"24px\",...e},...n,children:/*#__PURE__*/t(\"path\",{d:\"M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z\",fill:\"currentColor\"})}),Wo=({style:e})=>/*#__PURE__*/t(uo,{style:{color:\"var(--privy-color-error)\",...e}}),Mo=({style:n,...r})=>/*#__PURE__*/e(\"svg\",{width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",style:{height:\"26px\",width:\"26px\",...n},...r,children:[/*#__PURE__*/t(\"path\",{d:\"M22.56 12.25C22.56 11.47 22.49 10.72 22.36 10H12V14.255H17.92C17.665 15.63 16.89 16.795 15.725 17.575V20.335H19.28C21.36 18.42 22.56 15.6 22.56 12.25Z\",fill:\"#4285F4\"}),/*#__PURE__*/t(\"path\",{d:\"M12 23C14.97 23 17.46 22.015 19.28 20.335L15.725 17.575C14.74 18.235 13.48 18.625 12 18.625C9.13504 18.625 6.71004 16.69 5.84504 14.09H2.17004V16.94C3.98004 20.535 7.70004 23 12 23Z\",fill:\"#34A853\"}),/*#__PURE__*/t(\"path\",{d:\"M5.845 14.09C5.625 13.43 5.5 12.725 5.5 12C5.5 11.275 5.625 10.57 5.845 9.91V7.06H2.17C1.4 8.59286 0.999321 10.2846 1 12C1 13.775 1.425 15.455 2.17 16.94L5.845 14.09Z\",fill:\"#FBBC05\"}),/*#__PURE__*/t(\"path\",{d:\"M12 5.375C13.615 5.375 15.065 5.93 16.205 7.02L19.36 3.865C17.455 2.09 14.965 1 12 1C7.70004 1 3.98004 3.465 2.17004 7.06L5.84504 9.91C6.71004 7.31 9.13504 5.375 12 5.375Z\",fill:\"#EA4335\"})]});function Po(n){/*#__PURE__*/return e(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",xmlnsXlink:\"http://www.w3.org/1999/xlink\",width:26,height:26,viewBox:\"0 0 140 140\",x:\"0px\",y:\"0px\",fill:\"none\",...n,children:[/*#__PURE__*/e(\"defs\",{children:[/*#__PURE__*/e(\"linearGradient\",{id:\"b\",children:[/*#__PURE__*/t(\"stop\",{offset:\"0\",stopColor:\"#3771c8\"}),/*#__PURE__*/t(\"stop\",{stopColor:\"#3771c8\",offset:\".128\"}),/*#__PURE__*/t(\"stop\",{offset:\"1\",stopColor:\"#60f\",stopOpacity:\"0\"})]}),/*#__PURE__*/e(\"linearGradient\",{id:\"a\",children:[/*#__PURE__*/t(\"stop\",{offset:\"0\",stopColor:\"#fd5\"}),/*#__PURE__*/t(\"stop\",{offset:\".1\",stopColor:\"#fd5\"}),/*#__PURE__*/t(\"stop\",{offset:\".5\",stopColor:\"#ff543e\"}),/*#__PURE__*/t(\"stop\",{offset:\"1\",stopColor:\"#c837ab\"})]}),/*#__PURE__*/t(\"radialGradient\",{id:\"c\",cx:\"158.429\",cy:\"578.088\",r:\"65\",xlinkHref:\"#a\",gradientUnits:\"userSpaceOnUse\",gradientTransform:\"matrix(0 -1.98198 1.8439 0 -1031.402 454.004)\",fx:\"158.429\",fy:\"578.088\"}),/*#__PURE__*/t(\"radialGradient\",{id:\"d\",cx:\"147.694\",cy:\"473.455\",r:\"65\",xlinkHref:\"#b\",gradientUnits:\"userSpaceOnUse\",gradientTransform:\"matrix(.17394 .86872 -3.5818 .71718 1648.348 -458.493)\",fx:\"147.694\",fy:\"473.455\"})]}),/*#__PURE__*/t(\"path\",{fill:\"url(#c)\",d:\"M65.03 0C37.888 0 29.95.028 28.407.156c-5.57.463-9.036 1.34-12.812 3.22-2.91 1.445-5.205 3.12-7.47 5.468C4 13.126 1.5 18.394.595 24.656c-.44 3.04-.568 3.66-.594 19.188-.01 5.176 0 11.988 0 21.125 0 27.12.03 35.05.16 36.59.45 5.42 1.3 8.83 3.1 12.56 3.44 7.14 10.01 12.5 17.75 14.5 2.68.69 5.64 1.07 9.44 1.25 1.61.07 18.02.12 34.44.12 16.42 0 32.84-.02 34.41-.1 4.4-.207 6.955-.55 9.78-1.28 7.79-2.01 14.24-7.29 17.75-14.53 1.765-3.64 2.66-7.18 3.065-12.317.088-1.12.125-18.977.125-36.81 0-17.836-.04-35.66-.128-36.78-.41-5.22-1.305-8.73-3.127-12.44-1.495-3.037-3.155-5.305-5.565-7.624C116.9 4 111.64 1.5 105.372.596 102.335.157 101.73.027 86.19 0H65.03z\",transform:\"translate(1.004 1)\"}),/*#__PURE__*/t(\"path\",{fill:\"url(#d)\",d:\"M65.03 0C37.888 0 29.95.028 28.407.156c-5.57.463-9.036 1.34-12.812 3.22-2.91 1.445-5.205 3.12-7.47 5.468C4 13.126 1.5 18.394.595 24.656c-.44 3.04-.568 3.66-.594 19.188-.01 5.176 0 11.988 0 21.125 0 27.12.03 35.05.16 36.59.45 5.42 1.3 8.83 3.1 12.56 3.44 7.14 10.01 12.5 17.75 14.5 2.68.69 5.64 1.07 9.44 1.25 1.61.07 18.02.12 34.44.12 16.42 0 32.84-.02 34.41-.1 4.4-.207 6.955-.55 9.78-1.28 7.79-2.01 14.24-7.29 17.75-14.53 1.765-3.64 2.66-7.18 3.065-12.317.088-1.12.125-18.977.125-36.81 0-17.836-.04-35.66-.128-36.78-.41-5.22-1.305-8.73-3.127-12.44-1.495-3.037-3.155-5.305-5.565-7.624C116.9 4 111.64 1.5 105.372.596 102.335.157 101.73.027 86.19 0H65.03z\",transform:\"translate(1.004 1)\"}),/*#__PURE__*/t(\"path\",{fill:\"#fff\",d:\"M66.004 18c-13.036 0-14.672.057-19.792.29-5.11.234-8.598 1.043-11.65 2.23-3.157 1.226-5.835 2.866-8.503 5.535-2.67 2.668-4.31 5.346-5.54 8.502-1.19 3.053-2 6.542-2.23 11.65C18.06 51.327 18 52.964 18 66s.058 14.667.29 19.787c.235 5.11 1.044 8.598 2.23 11.65 1.227 3.157 2.867 5.835 5.536 8.503 2.667 2.67 5.345 4.314 8.5 5.54 3.054 1.187 6.543 1.996 11.652 2.23 5.12.233 6.755.29 19.79.29 13.037 0 14.668-.057 19.788-.29 5.11-.234 8.602-1.043 11.656-2.23 3.156-1.226 5.83-2.87 8.497-5.54 2.67-2.668 4.31-5.346 5.54-8.502 1.18-3.053 1.99-6.542 2.23-11.65.23-5.12.29-6.752.29-19.788 0-13.036-.06-14.672-.29-19.792-.24-5.11-1.05-8.598-2.23-11.65-1.23-3.157-2.87-5.835-5.54-8.503-2.67-2.67-5.34-4.31-8.5-5.535-3.06-1.187-6.55-1.996-11.66-2.23-5.12-.233-6.75-.29-19.79-.29zm-4.306 8.65c1.278-.002 2.704 0 4.306 0 12.816 0 14.335.046 19.396.276 4.68.214 7.22.996 8.912 1.653 2.24.87 3.837 1.91 5.516 3.59 1.68 1.68 2.72 3.28 3.592 5.52.657 1.69 1.44 4.23 1.653 8.91.23 5.06.28 6.58.28 19.39s-.05 14.33-.28 19.39c-.214 4.68-.996 7.22-1.653 8.91-.87 2.24-1.912 3.835-3.592 5.514-1.68 1.68-3.275 2.72-5.516 3.59-1.69.66-4.232 1.44-8.912 1.654-5.06.23-6.58.28-19.396.28-12.817 0-14.336-.05-19.396-.28-4.68-.216-7.22-.998-8.913-1.655-2.24-.87-3.84-1.91-5.52-3.59-1.68-1.68-2.72-3.276-3.592-5.517-.657-1.69-1.44-4.23-1.653-8.91-.23-5.06-.276-6.58-.276-19.398s.046-14.33.276-19.39c.214-4.68.996-7.22 1.653-8.912.87-2.24 1.912-3.84 3.592-5.52 1.68-1.68 3.28-2.72 5.52-3.592 1.692-.66 4.233-1.44 8.913-1.655 4.428-.2 6.144-.26 15.09-.27zm29.928 7.97c-3.18 0-5.76 2.577-5.76 5.758 0 3.18 2.58 5.76 5.76 5.76 3.18 0 5.76-2.58 5.76-5.76 0-3.18-2.58-5.76-5.76-5.76zm-25.622 6.73c-13.613 0-24.65 11.037-24.65 24.65 0 13.613 11.037 24.645 24.65 24.645C79.617 90.645 90.65 79.613 90.65 66S79.616 41.35 66.003 41.35zm0 8.65c8.836 0 16 7.163 16 16 0 8.836-7.164 16-16 16-8.837 0-16-7.164-16-16 0-8.837 7.163-16 16-16z\"})]})}function Lo({style:e,...n}){/*#__PURE__*/return t(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",xmlnsXlink:\"http://www.w3.org/1999/xlink\",viewBox:\"0,0,256,256\",style:{height:\"26px\",width:\"26px\",...e},...n,children:/*#__PURE__*/t(\"g\",{fill:\"#0077b5\",strokeWidth:\"1\",strokeLinecap:\"butt\",strokeLinejoin:\"miter\",strokeMiterlimit:\"10\",style:{mixBlendMode:\"normal\"},children:/*#__PURE__*/t(\"g\",{transform:\"scale(5.12,5.12)\",children:/*#__PURE__*/t(\"path\",{d:\"M41,4h-32c-2.76,0 -5,2.24 -5,5v32c0,2.76 2.24,5 5,5h32c2.76,0 5,-2.24 5,-5v-32c0,-2.76 -2.24,-5 -5,-5zM17,20v19h-6v-19zM11,14.47c0,-1.4 1.2,-2.47 3,-2.47c1.8,0 2.93,1.07 3,2.47c0,1.4 -1.12,2.53 -3,2.53c-1.8,0 -3,-1.13 -3,-2.53zM39,39h-6c0,0 0,-9.26 0,-10c0,-2 -1,-4 -3.5,-4.04h-0.08c-2.42,0 -3.42,2.06 -3.42,4.04c0,0.91 0,10 0,10h-6v-19h6v2.56c0,0 1.93,-2.56 5.81,-2.56c3.97,0 7.19,2.73 7.19,8.26z\"})})})})}function Do(n){/*#__PURE__*/return e(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 496 512\",...n,children:[/*#__PURE__*/t(\"path\",{fill:\"#1ed760\",d:\"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8Z\"}),/*#__PURE__*/t(\"path\",{d:\"M406.6 231.1c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3zm-31 76.2c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm-26.9 65.6c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4z\"})]})}function Uo(n){/*#__PURE__*/return e(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",fillRule:\"evenodd\",clipRule:\"evenodd\",imageRendering:\"optimizeQuality\",shapeRendering:\"geometricPrecision\",textRendering:\"geometricPrecision\",viewBox:\"0 0 293768 333327\",width:24,height:24,...n,children:[/*#__PURE__*/t(\"path\",{fill:\"#26f4ee\",d:\"M204958 0c5369 45832 32829 78170 77253 81022v43471l-287 27V87593c-44424-2850-69965-30183-75333-76015l-47060-1v192819c6791 86790-60835 89368-86703 56462 30342 18977 79608 6642 73766-68039V0h58365zM78515 319644c-26591-5471-50770-21358-64969-44588-34496-56437-3401-148418 96651-157884v54345l-164 27v-40773C17274 145544 7961 245185 33650 286633c9906 15984 26169 27227 44864 33011z\"}),/*#__PURE__*/t(\"path\",{fill:\"#fb2c53\",d:\"M218434 11587c3505 29920 15609 55386 35948 70259-27522-10602-43651-34934-47791-70262l11843 3zm63489 82463c3786 804 7734 1348 11844 1611v51530c-25770 2537-48321-5946-74600-21749l4034 88251c0 28460 106 41467-15166 67648-34260 58734-95927 63376-137628 35401 54529 22502 137077-4810 136916-103049v-96320c26279 15803 48830 24286 74600 21748V94050zm-171890 37247c5390-1122 11048-1985 16998-2548v54345c-21666 3569-35427 10222-41862 22528-20267 38754 5827 69491 35017 74111-33931 5638-73721-28750-49999-74111 6434-12304 18180-18959 39846-22528v-51797zm64479-119719h1808-1808z\"}),/*#__PURE__*/t(\"path\",{d:\"M206590 11578c5369 45832 30910 73164 75333 76015v51528c-25770 2539-48321-5945-74600-21748v96320c206 125717-135035 135283-173673 72939-25688-41449-16376-141089 76383-155862v52323c-21666 3569-33412 10224-39846 22528-39762 76035 98926 121273 89342-1225V11577l47060 1z\",fill:\"#000000\"})]})}const Fo=({style:e,...n})=>/*#__PURE__*/t(\"svg\",{width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",style:{height:\"24px\",width:\"24px\",...e},...n,children:/*#__PURE__*/t(\"path\",{d:\"M 14.285156 10.171875 L 23.222656 0 L 21.105469 0 L 13.34375 8.832031 L 7.148438 0 L 0 0 L 9.371094 13.355469 L 0 24.019531 L 2.117188 24.019531 L 10.308594 14.691406 L 16.851562 24.019531 L 24 24.019531 M 2.878906 1.5625 L 6.132812 1.5625 L 21.101562 22.535156 L 17.851562 22.535156\",fill:\"currentColor\"})});let Bo={google:{name:\"Google\",component:Mo},discord:{name:\"Discord\",component:Ro},github:{name:\"Github\",component:Oo},linkedin:{name:\"LinkedIn\",component:Lo},twitter:{name:\"Twitter\",component:Fo},spotify:{name:\"Spotify\",component:Do},instagram:{name:\"Instagram\",component:Po},tiktok:{name:\"Tiktok\",component:Uo},apple:{name:\"Apple\",component:So}};const zo=e=>e in Bo?Bo[e]:{name:\"Unknown\",component:Wo};function Ho(){let e=new URLSearchParams(window.location.search),t=e.get(\"privy_oauth_code\"),n=e.get(\"privy_oauth_state\"),r=e.get(\"privy_oauth_provider\");if(!t||!n||!r)return{inProgress:!1};let a=!1;try{a=!!window.opener.location.origin}catch{}return{inProgress:!0,authorizationCode:t,stateCode:n,provider:r,withPrivyUi:!Zr.get(Fn),popupFlow:null!==window.opener&&a,disableSignup:!!Zr.get(Bn)}}function Vo(){let e=new URL(window.location.href);e.searchParams.delete(\"privy_oauth_code\"),e.searchParams.delete(\"privy_oauth_provider\"),e.searchParams.delete(\"privy_oauth_state\"),Zr.del(zn),window.history.replaceState({},\"\",e)}class $o{async initRegisterFlow(e){if(!this.api)throw new T(\"Auth flow has no API instance\");this.authenticateForRegistration=!0,this.meta.initRegisterResponse=await this.initRegisterOnce.execute(e)}async initAuthenticationFlow(e){if(!this.api)throw new T(\"Auth flow has no API instance\");this.authenticateForRegistration=!1,this.meta.initAuthenticateResponse=await this.initAuthenticateOnce.execute(e)}async initLinkFlow(){if(!this.api)throw new T(\"Auth flow has no API instance\");this.meta.initLinkResponse=await this.initLinkOnce.execute()}async register(){let e=await import(\"@simplewebauthn/browser\");if(!this.api)throw new T(\"Auth flow has no API instance\");if(!e.browserSupportsWebAuthn())throw new T(\"WebAuthn is not supported in this browser\");this.meta.initRegisterResponse||(this.meta.initRegisterResponse=await this.initRegisterOnce.execute());try{let t=this.meta.initRegisterResponse.options,n=await e.startRegistration(this._transformInitLinkOptionsToCamelCase(t));return this.meta.setPasskeyAuthState?.({status:\"submitting-response\"}),await this.api.post(J,{relying_party:this.meta.initRegisterResponse.relying_party,authenticator_response:this._transformRegistrationResponseToSnakeCase(n)})}catch(e){if(\"NotAllowedError\"===e.name)throw new T(\"Passkey request timed out or rejected by user.\",void 0,A.PASSKEY_NOT_ALLOWED);throw b(e)}}async authenticate(){if(this.authenticateForRegistration)return this.register();let e=await import(\"@simplewebauthn/browser\");if(!this.api)throw new T(\"Auth flow has no API instance\");if(!e.browserSupportsWebAuthn())throw new T(\"WebAuthn is not supported in this browser\");this.meta.initAuthenticateResponse||(this.meta.initAuthenticateResponse=await this.initAuthenticateOnce.execute());let t=this.meta.allowedCredentialsIds?.map((e=>({type:\"public-key\",id:e})))??this.meta.initAuthenticateResponse.options.allow_credentials;try{let n=await e.startAuthentication(this._transformInitAuthenticateOptionsToCamelCase({...this.meta.initAuthenticateResponse.options,allow_credentials:t}));return this.meta.setPasskeyAuthState?.({status:\"submitting-response\"}),await this.api.post(Q,{relying_party:this.meta.initAuthenticateResponse.relying_party,challenge:this.meta.initAuthenticateResponse.options.challenge,authenticator_response:this._transformAuthenticationResponseToSnakeCase(n)})}catch(e){if(\"NotAllowedError\"===e.name)throw new T(\"Passkey request timed out or rejected by user.\",void 0,A.PASSKEY_NOT_ALLOWED);throw b(e)}}async link(){let e=await import(\"@simplewebauthn/browser\");if(!this.api)throw new T(\"Auth flow has no API instance\");if(!e.browserSupportsWebAuthn())throw new T(\"WebAuthn is not supported in this browser\");this.meta.initLinkResponse||(this.meta.initLinkResponse=await this.initLinkOnce.execute());try{let t=this.meta.initLinkResponse.options,n=await e.startRegistration(this._transformInitLinkOptionsToCamelCase(t));return this.meta.setPasskeyAuthState?.({status:\"submitting-response\"}),await this.api.post(X,{relying_party:this.meta.initLinkResponse.relying_party,authenticator_response:this._transformRegistrationResponseToSnakeCase(n)})}catch(e){if(\"NotAllowedError\"===e.name)throw new T(\"Passkey request timed out or rejected by user.\",void 0,A.PASSKEY_NOT_ALLOWED);throw b(e)}}async _initRegisterOnce(e){if(!this.api)throw new T(\"Auth flow has no API instance\");let t=vo(e);return await this.api.post(ee,{token:this.meta.captchaToken},{headers:{...t}})}async _initAuthenticateOnce(e){if(!this.api)throw new T(\"Auth flow has no API instance\");let t=vo(e);return await this.api.post(te,{token:this.meta.captchaToken},{headers:{...t}})}async _initLinkOnce(){if(!this.api)throw new T(\"Auth flow has no API instance\");return await this.api.post(ne,{})}_transformInitLinkOptionsToCamelCase(e){return{rp:e.rp,user:{id:e.user.id,name:e.user.name,displayName:e.user.display_name},challenge:e.challenge,pubKeyCredParams:e.pub_key_cred_params.map((e=>({type:e.type,alg:e.alg}))),timeout:e.timeout,excludeCredentials:e.exclude_credentials?.map((e=>({id:e.id,type:e.type,transports:e.transports}))),authenticatorSelection:{authenticatorAttachment:e.authenticator_selection?.authenticator_attachment,requireResidentKey:e.authenticator_selection?.require_resident_key,residentKey:e.authenticator_selection?.resident_key,userVerification:e.authenticator_selection?.user_verification},attestation:e.attestation,extensions:{appid:e.extensions?.app_id,credProps:e.extensions?.cred_props?.rk,hmacCreateSecret:e.extensions?.hmac_create_secret}}}_transformRegistrationResponseToSnakeCase(e){return{id:e.id,raw_id:e.rawId,response:{client_data_json:e.response.clientDataJSON,attestation_object:e.response.attestationObject,authenticator_data:e.response.authenticatorData},authenticator_attachment:e.authenticatorAttachment,client_extension_results:{app_id:e.clientExtensionResults.appid,cred_props:e.clientExtensionResults.credProps,hmac_create_secret:e.clientExtensionResults.hmacCreateSecret},type:e.type}}_transformInitAuthenticateOptionsToCamelCase(e){return{rpId:e.rp_id,challenge:e.challenge,allowCredentials:e.allow_credentials?.map((e=>({id:e.id,type:e.type,transports:e.transports})))||[],timeout:e.timeout,extensions:{appid:e.extensions?.app_id,credProps:e.extensions?.cred_props,hmacCreateSecret:e.extensions?.hmac_create_secret},userVerification:e.user_verification}}_transformAuthenticationResponseToSnakeCase(e){return{id:e.id,raw_id:e.rawId,response:{client_data_json:e.response.clientDataJSON,authenticator_data:e.response.authenticatorData,signature:e.response.signature,user_handle:e.response.userHandle},authenticator_attachment:e.authenticatorAttachment,client_extension_results:{app_id:e.clientExtensionResults.appid,cred_props:e.clientExtensionResults.credProps,hmac_create_secret:e.clientExtensionResults.hmacCreateSecret},type:e.type}}constructor({captchaToken:e,setPasskeyAuthState:t}){this.authenticateForRegistration=!1,this.initRegisterOnce=new Ge(this._initRegisterOnce.bind(this)),this.initAuthenticateOnce=new Ge(this._initAuthenticateOnce.bind(this)),this.initLinkOnce=new Ge(this._initLinkOnce.bind(this)),this.meta={captchaToken:e,setPasskeyAuthState:t}}}class jo{async authenticate(){if(!this.api)throw new T(\"Auth flow has no API instance\");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new T(\"phone number and sms code must be set prior to calling authenticate.\");try{return await this.api.post(re,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode,mode:this.meta.disableSignup?\"no-signup\":\"login-or-sign-up\"})}catch(e){throw b(e)}}async link(){if(!this.api)throw new T(\"Auth flow has no API instance\");if(!this.meta.phoneNumber||!this.meta.smsCode)throw new T(\"phone number and sms code must be set prior to calling authenticate.\");try{return await this.api.post(ie,{phoneNumber:this.meta.phoneNumber,code:this.meta.smsCode})}catch(e){throw b(e)}}async sendSmsCode({phoneNumber:e,captchaToken:t,withPrivyUi:n}){if(!this.api)throw new T(\"Auth flow has no API instance\");if(e&&(this.meta.phoneNumber=e),t&&(this.meta.captchaToken=t),!this.meta.phoneNumber)throw new T(\"phone nNumber must be set when initialzing authentication.\");let r=vo(n);try{return await this.api.post(oe,{phoneNumber:this.meta.phoneNumber,token:this.meta.captchaToken},{headers:{...r}})}catch(e){throw b(e)}}constructor({phoneNumber:e,captchaToken:t,disableSignup:n}){this.meta={phoneNumber:e,captchaToken:t,disableSignup:n??!1}}}class Go extends jo{async link(){if(!this.api)throw new T(\"Auth flow has no API instance\");if(!this.meta.phoneNumber||!this.meta.smsCode||!this.meta.oldPhoneNumber)throw new T(\"Phone number, sms code, and an old phone number must be set prior to calling update.\");try{return await this.api.post(se,{old_phone_number:this.meta.oldPhoneNumber,new_phone_number:this.meta.phoneNumber,code:this.meta.smsCode})}catch(e){throw b(e)}}constructor(e,t,n){super({phoneNumber:t,captchaToken:n}),this.meta={phoneNumber:t,captchaToken:n,oldPhoneNumber:e,disableSignup:!1}}}class qo{async authenticate(){if(!this.api)throw new T(\"Auth flow has no API instance\");try{return await this.api.post(le,{captcha_token:this.meta.captchaToken,telegram_auth_result:this.meta.telegramAuthResult,telegram_web_app_data:this.meta.telegramWebAppData,mode:this.meta.disableSignup?\"no-signup\":\"login-or-sign-up\"})}catch(e){throw b(e)}}async link(){if(!this.api)throw new T(\"Auth flow has no API instance\");try{return await this.api.post(ce,{telegram_auth_result:this.meta.telegramAuthResult,telegram_web_app_data:this.meta.telegramWebAppData})}catch(e){throw b(e)}}constructor(e,t=!1){this.meta={disableSignup:!1},this.meta={captchaToken:e,disableSignup:!1},this.meta.disableSignup=t}}function Ko(e){let t={detail:\"\",retryable:!1};return e?.privyErrorCode===A.LINKED_TO_ANOTHER_USER&&(t.detail=\"This account has already been linked to another user.\"),e?.privyErrorCode===A.DISALLOWED_LOGIN_METHOD&&(t.detail=\"Login with Telegram not allowed.\"),e?.privyErrorCode===A.INVALID_DATA&&(t.retryable=!0,t.detail=\"Something went wrong. Try again.\"),e?.privyErrorCode===A.CANNOT_LINK_MORE_OF_TYPE&&(t.retryable=!0,t.detail=\"Something went wrong. Try again.\"),e?.privyErrorCode===A.INVALID_CREDENTIALS&&(t.retryable=!0,t.detail=\"Something went wrong. Try again.\"),e?.privyErrorCode===A.TOO_MANY_REQUESTS&&(t.detail=\"Too many requests. Please wait before trying again.\"),e?.privyErrorCode===A.TOO_MANY_REQUESTS&&e.message.includes(\"rate limit\")&&(t.detail=\"Request limit reached for Telegram. Please wait a moment and try again.\"),e instanceof qe&&(t.retryable=!0,t.detail=\"Something went wrong. Try again.\"),t}function Yo(e){return Object.fromEntries(decodeURIComponent(e).split(\"&\").map((e=>e.split(\"=\").map(decodeURIComponent))))}function Zo(){let e=new URL(window.location.href);e.searchParams.delete(\"id\"),e.searchParams.delete(\"hash\"),e.searchParams.delete(\"auth_date\"),e.searchParams.delete(\"first_name\"),e.searchParams.delete(\"last_name\"),e.searchParams.delete(\"username\"),e.searchParams.delete(\"photo_url\"),e.hash=\"\",window.history.replaceState({},\"\",e)}class Jo{static parse(e){try{return new Jo(e)}catch(e){return null}}static throwIfNotWellFormedJwt(e){return Pn.decodeJwt(e),e}get subject(){return this._decoded.sub}get expiration(){return this._decoded.exp}get issuer(){return this._decoded.iss}get audience(){return this._decoded.aud}isExpired(e=0){return Date.now()>=1e3*(this.expiration-e)}constructor(e){this.value=e,this._decoded=Pn.decodeJwt(e)}}class Qo extends Jo{static parse(e){try{return new Qo(e)}catch(e){return null}}get appId(){return this._decoded.aid?this._decoded.aid:this.audience}}const Xo=({style:n,...r})=>/*#__PURE__*/e(\"svg\",{viewBox:\"0 0 1024 1024\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",style:{height:\"28px\",width:\"28px\",...n},...r,children:[/*#__PURE__*/t(\"rect\",{width:\"1024\",height:\"1024\",fill:\"#0052FF\",rx:100,ry:100}),/*#__PURE__*/t(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M152 512C152 710.823 313.177 872 512 872C710.823 872 872 710.823 872 512C872 313.177 710.823 152 512 152C313.177 152 152 313.177 152 512ZM420 396C406.745 396 396 406.745 396 420V604C396 617.255 406.745 628 420 628H604C617.255 628 628 617.255 628 604V420C628 406.745 617.255 396 604 396H420Z\",fill:\"white\"})]});let es,ts=[1,11155111,137,10,8453,84532,42161,7777777,43114,56],ns=(e,t)=>e.makeWeb3Provider({options:t});class rs extends Ke{async initialize(){await this.syncAccounts(),this.initialized=!0,this.emit(\"initialized\")}async connect(e){return e.showPrompt&&await this.promptConnection(),await this.isConnected()?this.getConnectedWallet():null}disconnect(){this.proxyProvider.walletProvider.disconnect(),this.onDisconnect()}get walletBranding(){return{name:this.displayName,icon:\"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PScwIDAgMTAyNCAxMDI0JyBmaWxsPSdub25lJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHN0eWxlPSdoZWlnaHQ6MjhweDt3aWR0aDoyOHB4Jz48cmVjdCB3aWR0aD0nMTAyNCcgaGVpZ2h0PScxMDI0JyBmaWxsPScjMDA1MkZGJyByeD0nMTAwJyByeT0nMTAwJz48L3JlY3Q+PHBhdGggZmlsbC1ydWxlPSdldmVub2RkJyBjbGlwLXJ1bGU9J2V2ZW5vZGQnIGQ9J00xNTIgNTEyQzE1MiA3MTAuODIzIDMxMy4xNzcgODcyIDUxMiA4NzJDNzEwLjgyMyA4NzIgODcyIDcxMC44MjMgODcyIDUxMkM4NzIgMzEzLjE3NyA3MTAuODIzIDE1MiA1MTIgMTUyQzMxMy4xNzcgMTUyIDE1MiAzMTMuMTc3IDE1MiA1MTJaTTQyMCAzOTZDNDA2Ljc0NSAzOTYgMzk2IDQwNi43NDUgMzk2IDQyMFY2MDRDMzk2IDYxNy4yNTUgNDA2Ljc0NSA2MjggNDIwIDYyOEg2MDRDNjE3LjI1NSA2MjggNjI4IDYxNy4yNTUgNjI4IDYwNFY0MjBDNjI4IDQwNi43NDUgNjE3LjI1NSAzOTYgNjA0IDM5Nkg0MjBaJyBmaWxsPSd3aGl0ZSc+PC9wYXRoPjwvc3ZnPg==\",id:\"com.coinbase.wallet\"}}async promptConnection(){try{let e=await this.proxyProvider.request({method:\"eth_requestAccounts\"});if(!e||0===e.length||!e[0])throw new _(\"Unable to retrieve accounts\");this.connected=!0,await this.syncAccounts([e[0]])}catch(e){throw Jr(e)}}updateConnectionPreference(e){this.connectionOptions=e,this.walletClientType=\"smartWalletOnly\"===e?\"coinbase_smart_wallet\":\"coinbase_wallet\",this.proxyProvider.setWalletProvider(ns(es,this.connectionOptions))}constructor(e,t,n,r,a,i){if(super(\"coinbase_wallet\",e,t,n),this.connectorType=\"coinbase_wallet\",this.displayName=\"Coinbase Wallet\",this.proxyProvider=new Ye(void 0,this.rpcTimeoutDuration),this.subscribeListeners(),this.connectionOptions=r.coinbaseWallet.connectionOptions??\"all\",this.walletClientType=\"smartWalletOnly\"===this.connectionOptions?\"coinbase_smart_wallet\":\"coinbase_wallet\",\"coinbase_smart_wallet\"===this.walletClientType&&(this.displayName=\"Coinbase Smart Wallet\"),!es){let n=[t.id].concat(e.map((e=>e.id))),r=\"eoaOnly\"!==this.connectionOptions?n.filter((e=>!ts.includes(e))):[];r.length>0&&!r.every((e=>Hn.has(e)))&&console.info(`The configured chains are not supported by Coinbase Smart Wallet: ${r.join(\", \")}`),es=new ba({appName:a,appLogoUrl:i,appChainIds:n})}this.proxyProvider.setWalletProvider(ns(es,this.connectionOptions))}}const as=({...e})=>/*#__PURE__*/t(\"svg\",{width:\"15\",height:\"15\",viewBox:\"0 0 15 15\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",...e,children:/*#__PURE__*/t(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M2.37126 11.0323C2.37126 12.696 3.90598 13.4421 5.40654 13.4468C8.91753 13.4468 12.8021 11.2897 12.7819 7.67984C12.7673 5.07728 10.3748 2.86167 7.54357 2.88296C4.8495 2.88296 2.21821 4.6411 2.21803 7.03628C2.21803 7.67951 2.58722 8.30178 3.55231 8.37184C2.74763 9.16826 2.37126 10.1225 2.37126 11.0323ZM7.55283 8.68012C8.11562 8.68012 8.57186 8.13217 8.57186 7.45624C8.57186 6.78032 8.11562 6.23237 7.55283 6.23237C6.99003 6.23237 6.53379 6.78032 6.53379 7.45624C6.53379 8.13217 6.99003 8.68012 7.55283 8.68012ZM10.4747 8.68012C11.0375 8.68012 11.4937 8.13217 11.4937 7.45625C11.4937 6.78032 11.0375 6.23237 10.4747 6.23237C9.91186 6.23237 9.45562 6.78032 9.45562 7.45625C9.45562 8.13217 9.91186 8.68012 10.4747 8.68012Z\",fill:e.color||\"var(--privy-color-foreground-3)\"})});class is extends Ke{async initialize(){await this.syncAccounts(),this.initialized=!0,this.emit(\"initialized\")}async connect(e){return await this.isConnected()?(await this.proxyProvider.request({method:\"wallet_switchEthereumChain\",params:[Ze(e?.chainId||\"0x1\")]}),this.getConnectedWallet()):null}get walletBranding(){return{name:\"Privy Wallet\",icon:as,id:\"io.privy.wallet\"}}disconnect(){this.connected=!1}async promptConnection(){}constructor({provider:e,chains:t,defaultChain:n,rpcConfig:r,imported:a,walletIndex:i}){super(\"privy\",t,n,r),this.connectorType=\"embedded\",this.proxyProvider=e,this.walletIndex=i,a&&(this.connectorType=\"embedded_imported\"),this.subscribeListeners()}}const os=[\"eth_sign\",\"eth_populateTransactionRequest\",\"eth_signTransaction\",\"personal_sign\",\"eth_signTypedData_v4\",\"csw_signUserOperation\",\"secp256k1_sign\"];let ss={0:\"legacy\",1:\"eip2930\",2:\"eip1559\",3:\"eip4844\"};const ls={legacy:0,eip2930:1,eip1559:2,eip4844:3};let cs=e=>void 0!==e?BigInt(e):void 0;function ds(e){let t,{type:n=2,...r}=e;r.accessList&&Array.isArray(r.accessList)?t=r.accessList.map((e=>Array.isArray(e)?{address:e[0],storageKeys:e[1]}:e)):r.accessList&&(t=Object.entries(r.accessList).map((e=>({address:e[0],storageKeys:e[1]}))));let a=Number(r.chainId??1),i=Aa(r.data)?r.data:r.data?_a(Uint8Array.from(r.data)):void 0,o=r.nonce?Number(r.nonce):void 0,s={chainId:a,data:i,nonce:o,value:cs(r.value),gas:cs(r.gas??r.gasLimit)},l=Number(n);if(0===l)return{...r,type:ss[l],...s,gasPrice:cs(r.gasPrice),accessList:void 0,maxFeePerGas:void 0,maxPriorityFeePerGas:void 0};if(1===l)return{...r,type:ss[l],...s,gasPrice:cs(r.gasPrice),accessList:t,maxFeePerGas:void 0,maxPriorityFeePerGas:void 0};if(2===l)return{...r,type:ss[l],...s,nonce:o,accessList:t,maxFeePerGas:cs(r.maxFeePerGas),maxPriorityFeePerGas:cs(r.maxPriorityFeePerGas),gasPrice:void 0,maxFeePerBlobGas:void 0};throw new T(`Unsupported transaction type: ${n}`)}class us extends Error{constructor(e,t,n){super(e),this.code=t,this.data=n}}class hs extends Ta{async handleSendTransaction(e){if(!e.params||!Array.isArray(e.params))throw new us(`Invalid params for ${e.method}`,4200);let t=e.params[0];if(!await ew()||!this.address)throw new us(\"Disconnected\",4900);let{hash:n}=await aw(t,{address:this.address});return n}async handleSignTransaction(e){if(!e.params||!Array.isArray(e.params))throw new us(`Invalid params for ${e.method}`,4200);let t=e.params[0];if(!await ew()||!this.address)throw new us(\"Disconnected\",4900);let{signature:n}=await rw(t,{address:this.address});return n}handleSwitchEthereumChain(e){let t;if(!e.params||!Array.isArray(e.params))throw new us(`Invalid params for ${e.method}`,4200);if(\"string\"==typeof e.params[0])t=e.params[0];else{if(!(\"chainId\"in e.params[0])||\"string\"!=typeof e.params[0].chainId)throw new us(`Invalid params for ${e.method}`,4200);t=e.params[0].chainId}this.chainId=Number(t),this.publicClient=Fa(this.chainId,this.chains,this.rpcConfig,{appId:this.appId}),this.emit(\"chainChanged\",t)}async handlePersonalSign(e){if(!e.params||!Array.isArray(e.params))throw Error(\"Invalid params for personal_sign\");let t=e.params[0],n=e.params[1],{signature:r}=await tw({message:t},{address:n});return r}async handleSignedTypedData(e){if(!e.params||!Array.isArray(e.params))throw Error(\"Invalid params for eth_signTypedData_v4\");let t=e.params[0],n=\"string\"==typeof e.params[1]?JSON.parse(e.params[1]):e.params[1],{signature:r}=await nw(Je(n),{address:t});return r}async handleEstimateGas(e){if(!e.params||!Array.isArray(e.params))throw Error(\"Invalid params for eth_estimateGas\");delete e.params[0].gasPrice,delete e.params[0].maxFeePerGas,delete e.params[0].maxPriorityFeePerGas;let t={...e.params[0],chainId:Ze(this.chainId)};return await this.publicClient.estimateGas({account:t.from??this.address,...ds(t)})}async request(e){switch(console.debug(\"Embedded1193Provider.request() called with args\",e),e.method){case\"eth_accounts\":case\"eth_requestAccounts\":return this.address?[this.address]:[];case\"eth_chainId\":return Ze(this.chainId);case\"eth_estimateGas\":return this.handleEstimateGas(e);case\"eth_sendTransaction\":return this.handleSendTransaction(e);case\"eth_signTransaction\":return this.handleSignTransaction(e);case\"wallet_switchEthereumChain\":return this.handleSwitchEthereumChain(e);case\"personal_sign\":return this.handlePersonalSign(e);case\"eth_signTypedData_v4\":return this.handleSignedTypedData(e)}if(!(e=>os.includes(e))(e.method))return this.publicClient.request({method:e.method,params:e.params});{let t=await ew();if(await iw(),!t||!this.address)throw new us(\"Disconnected\",4900);try{return(await this.walletProxy.rpc({accessToken:t,entropyId:this.entropyId,entropyIdVerifier:this.entropyIdVerifier,chainType:\"ethereum\",hdWalletIndex:this.walletIndex,request:{method:e.method,params:e.params}})).response.data}catch(e){throw console.error(e),new us(\"Disconnected\",4900)}}}constructor({walletProxy:e,address:t,entropyId:n,entropyIdVerifier:r,rpcConfig:a,chains:i,appId:o,chainId:s=1,walletIndex:l}){super(),this.walletProxy=e,this.address=t,this.entropyId=n,this.entropyIdVerifier=r,this.chainId=s,this.rpcConfig=a,this.chains=i,this.publicClient=Fa(s,this.chains,a,{appId:o}),this.rpcTimeoutDuration=Qe(a,\"privy\"),this.appId=o,this.walletIndex=l}}class ps extends Ke{get walletBranding(){return{id:this.id,name:this.name,icon:this.icon}}async initialize(){this.initialized=!0,this.emit(\"initialized\")}async connect(){throw Error(\"connect called for an uninstalled wallet via the EthereumNullConnector\")}disconnect(){throw Error(\"disconnect called for an uninstalled wallet via the EthereumNullConnector\")}promptConnection(e){throw Error(`promptConnection called for an uninstalled wallet via the EthereumNullConnector for ${e}`)}constructor({id:e,name:t,icon:n,walletClientType:r,defaultChain:a}){super(r,[],a,{}),this.connectorType=\"null\",this.proxyProvider=new Ye(void 0,Vn),this.id=e,this.name=t,this.icon=n,this.connectorType=r}}const ms=({style:n,...r})=>/*#__PURE__*/e(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",xmlSpace:\"preserve\",x:0,y:0,viewBox:\"0 0 318.6 318.6\",width:\"28\",height:\"28\",style:{height:\"28px\",width:\"28px\",...n},...r,children:[/*#__PURE__*/t(\"style\",{children:\".s1{stroke-linecap:round;stroke-linejoin:round}.s2{fill:#e4761b;stroke:#e4761b}.s3{fill:#f6851b;stroke:#f6851b}\"}),/*#__PURE__*/t(\"path\",{fill:\"#e2761b\",stroke:\"#e2761b\",className:\"s1\",d:\"m274.1 35.5-99.5 73.9L193 65.8z\"}),/*#__PURE__*/t(\"path\",{d:\"m44.4 35.5 98.7 74.6-17.5-44.3zm193.9 171.3-26.5 40.6 56.7 15.6 16.3-55.3zm-204.4.9L50.1 263l56.7-15.6-26.5-40.6z\",className:\"s1 s2\"}),/*#__PURE__*/t(\"path\",{d:\"m103.6 138.2-15.8 23.9 56.3 2.5-2-60.5zm111.3 0-39-34.8-1.3 61.2 56.2-2.5zM106.8 247.4l33.8-16.5-29.2-22.8zm71.1-16.5 33.9 16.5-4.7-39.3z\",className:\"s1 s2\"}),/*#__PURE__*/t(\"path\",{fill:\"#d7c1b3\",stroke:\"#d7c1b3\",className:\"s1\",d:\"m211.8 247.4-33.9-16.5 2.7 22.1-.3 9.3zm-105 0 31.5 14.9-.2-9.3 2.5-22.1z\"}),/*#__PURE__*/t(\"path\",{fill:\"#233447\",stroke:\"#233447\",className:\"s1\",d:\"m138.8 193.5-28.2-8.3 19.9-9.1zm40.9 0 8.3-17.4 20 9.1z\"}),/*#__PURE__*/t(\"path\",{fill:\"#cd6116\",stroke:\"#cd6116\",className:\"s1\",d:\"m106.8 247.4 4.8-40.6-31.3.9zM207 206.8l4.8 40.6 26.5-39.7zm23.8-44.7-56.2 2.5 5.2 28.9 8.3-17.4 20 9.1zm-120.2 23.1 20-9.1 8.2 17.4 5.3-28.9-56.3-2.5z\"}),/*#__PURE__*/t(\"path\",{fill:\"#e4751f\",stroke:\"#e4751f\",className:\"s1\",d:\"m87.8 162.1 23.6 46-.8-22.9zm120.3 23.1-1 22.9 23.7-46zm-64-20.6-5.3 28.9 6.6 34.1 1.5-44.9zm30.5 0-2.7 18 1.2 45 6.7-34.1z\"}),/*#__PURE__*/t(\"path\",{d:\"m179.8 193.5-6.7 34.1 4.8 3.3 29.2-22.8 1-22.9zm-69.2-8.3.8 22.9 29.2 22.8 4.8-3.3-6.6-34.1z\",className:\"s3\"}),/*#__PURE__*/t(\"path\",{fill:\"#c0ad9e\",stroke:\"#c0ad9e\",className:\"s1\",d:\"m180.3 262.3.3-9.3-2.5-2.2h-37.7l-2.3 2.2.2 9.3-31.5-14.9 11 9 22.3 15.5h38.3l22.4-15.5 11-9z\"}),/*#__PURE__*/t(\"path\",{fill:\"#161616\",stroke:\"#161616\",className:\"s1\",d:\"m177.9 230.9-4.8-3.3h-27.7l-4.8 3.3-2.5 22.1 2.3-2.2h37.7l2.5 2.2z\"}),/*#__PURE__*/t(\"path\",{fill:\"#763d16\",stroke:\"#763d16\",className:\"s1\",d:\"m278.3 114.2 8.5-40.8-12.7-37.9-96.2 71.4 37 31.3 52.3 15.3 11.6-13.5-5-3.6 8-7.3-6.2-4.8 8-6.1zM31.8 73.4l8.5 40.8-5.4 4 8 6.1-6.1 4.8 8 7.3-5 3.6 11.5 13.5 52.3-15.3 37-31.3-96.2-71.4z\"}),/*#__PURE__*/t(\"path\",{d:\"m267.2 153.5-52.3-15.3 15.9 23.9-23.7 46 31.2-.4h46.5zm-163.6-15.3-52.3 15.3-17.4 54.2h46.4l31.1.4-23.6-46zm71 26.4 3.3-57.7 15.2-41.1h-67.5l15 41.1 3.5 57.7 1.2 18.2.1 44.8h27.7l.2-44.8z\",className:\"s3\"})]}),ys=({style:n,...r})=>/*#__PURE__*/e(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"108\",height:\"108\",viewBox:\"0 0 108 108\",fill:\"none\",style:{height:\"28px\",width:\"28px\",...n},...r,children:[/*#__PURE__*/t(\"rect\",{width:\"108\",height:\"108\",rx:\"23\",fill:\"#AB9FF2\"}),/*#__PURE__*/t(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M46.5267 69.9229C42.0054 76.8509 34.4292 85.6182 24.348 85.6182C19.5824 85.6182 15 83.6563 15 75.1342C15 53.4305 44.6326 19.8327 72.1268 19.8327C87.768 19.8327 94 30.6846 94 43.0079C94 58.8258 83.7355 76.9122 73.5321 76.9122C70.2939 76.9122 68.7053 75.1342 68.7053 72.314C68.7053 71.5783 68.8275 70.7812 69.0719 69.9229C65.5893 75.8699 58.8685 81.3878 52.5754 81.3878C47.993 81.3878 45.6713 78.5063 45.6713 74.4598C45.6713 72.9884 45.9768 71.4556 46.5267 69.9229ZM83.6761 42.5794C83.6761 46.1704 81.5575 47.9658 79.1875 47.9658C76.7816 47.9658 74.6989 46.1704 74.6989 42.5794C74.6989 38.9885 76.7816 37.1931 79.1875 37.1931C81.5575 37.1931 83.6761 38.9885 83.6761 42.5794ZM70.2103 42.5795C70.2103 46.1704 68.0916 47.9658 65.7216 47.9658C63.3157 47.9658 61.233 46.1704 61.233 42.5795C61.233 38.9885 63.3157 37.1931 65.7216 37.1931C68.0916 37.1931 70.2103 38.9885 70.2103 42.5795Z\",fill:\"#FFFDF8\"})]});function gs(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(\"attempted to use private field on non-instance\");return e}var fs=0;class ws extends Ke{async initialize(){await this.syncAccounts(),this.initialized=!0,this.emit(\"initialized\")}async connect(e){return e.showPrompt&&await this.promptConnection(),await this.isConnected()?this.getConnectedWallet():null}get walletBranding(){return{name:this.providerDetail.info.name,icon:this.providerDetail.info.icon,id:this.providerDetail.info.rdns}}disconnect(){console.warn(`Programmatic disconnect with ${this.providerDetail.info.name} is not yet supported.`)}async promptConnection(){try{let e=await this.proxyProvider.request({method:\"eth_requestAccounts\"});if(!e||0===e.length||!e[0])throw new _(\"Unable to retrieve accounts\");await this.syncAccounts([e[0]])}catch(e){throw Jr(e)}}constructor(e,t,n,r,a){super(a||\"unknown\",e,t,n),this.connectorType=\"injected\",this.proxyProvider=new Ye(void 0,this.rpcTimeoutDuration),this.subscribeListeners(),this.providerDetail=r;let i=r.provider;this.proxyProvider.setWalletProvider(i)}}var vs=\"__private_\"+fs+++\"__walletBranding\";class Cs extends Ke{async initialize(){await this.syncAccounts(),this.initialized=!0,this.emit(\"initialized\")}async connect(e){return e.showPrompt&&await this.promptConnection(),await this.isConnected()?this.getConnectedWallet():null}get walletBranding(){return gs(this,vs)[vs]??{name:\"Browser Extension\",icon:Xe,id:\"extension\"}}disconnect(){console.warn(\"Programmatic disconnect with browser wallets is not yet supported.\")}async promptConnection(){try{let e=await this.proxyProvider.request({method:\"eth_requestAccounts\"});if(!e||0===e.length||!e[0])throw new _(\"Unable to retrieve accounts\");await this.syncAccounts([e[0]])}catch(e){throw Jr(e)}}constructor(e,t,n,r,a){super(a??\"unknown\",e,t,n),Object.defineProperty(this,vs,{writable:!0,value:void 0}),this.connectorType=\"injected\",this.proxyProvider=new Ye(void 0,this.rpcTimeoutDuration),this.subscribeListeners(),this.proxyProvider.setWalletProvider(r),\"metamask\"===a?gs(this,vs)[vs]={name:\"MetaMask\",icon:ms,id:\"io.metamask\"}:\"phantom\"===a&&(gs(this,vs)[vs]={name:\"Phantom\",icon:ys,id:\"phantom\"})}}class Es extends ws{disconnect(){console.warn(\"MetaMask does not support programmatic disconnect.\")}async promptConnection(){try{y||await this.proxyProvider.request({method:\"wallet_requestPermissions\",params:[{eth_accounts:{}}]});let e=await this.proxyProvider.request({method:\"eth_requestAccounts\"});if(!e||0===e.length||!e[0])throw new _(\"Unable to retrieve accounts\");await this.syncAccounts([e[0]])}catch(e){throw Jr(e)}}}const Ts=[\"metamask\",\"phantom\",\"brave_wallet\",\"rainbow\",\"uniswap_wallet_extension\",\"uniswap_extension\",\"rabby_wallet\",\"bybit_wallet\",\"ronin_wallet\",\"crypto.com_wallet_extension\",\"crypto.com_onchain\",\"coinbase_wallet\",\"coinbase_smart_wallet\",\"metamask\",\"trust\",\"safe\",\"rainbow\",\"uniswap\",\"zerion\",\"argent\",\"spot\",\"omni\",\"cryptocom\",\"blockchain\",\"safepal\",\"bitkeep\",\"zengo\",\"1inch\",\"binance\",\"exodus\",\"mew_wallet\",\"alphawallet\",\"keyring_pro\",\"mathwallet\",\"unstoppable\",\"obvious\",\"ambire\",\"internet_money_wallet\",\"coin98\",\"abc_wallet\",\"arculus_wallet\",\"haha\",\"cling_wallet\",\"broearn\",\"copiosa\",\"burrito_wallet\",\"enjin_wallet\",\"plasma_wallet\",\"avacus\",\"bee\",\"pitaka\",\"pltwallet\",\"minerva\",\"kryptogo\",\"prema\",\"slingshot\",\"kriptonio\",\"timeless\",\"secux\",\"bitizen\",\"blocto\",\"okx_wallet\",\"safemoon\",\"rabby_wallet\",\"bybit_wallet\",\"ronin_wallet\",\"privy\",\"unknown\",\"phantom\",\"solflare\",\"glow\",\"backpack\"],bs=Object.freeze({phantom:{client:\"phantom\",name:\"Phantom\",installLink:m.isFirefox?\"https://addons.mozilla.org/en-US/firefox/addon/phantom-app/\":\"https://chrome.google.com/webstore/detail/phantom/bfnaelmomeimhlpmgjnjophhpkkoljpa?hl=en\",chainTypes:[\"ethereum\",\"solana\"],get isInstalled(){if(\"phantom\"in window){let e=window;if(e?.phantom?.ethereum?.isPhantom&&e?.phantom?.ethereum?.chainId||e?.phantom?.solana?.isPhantom)return!0}return!1},getMobileRedirect({useUniversalLink:e,isSolana:t,connectOnly:n}){let r=_s({client:this.client,isSolana:t,connectOnly:n});return`${e?\"phantom://\":\"https://phantom.app/ul/\"}browse/${r}?ref=${r}`}},solflare:{client:\"solflare\",name:\"Solflare\",installLink:m.isFirefox?\"https://addons.mozilla.org/es/firefox/addon/solflare-wallet/\":\"https://chromewebstore.google.com/detail/solflare-wallet/bhhhlbepdkbapadjdnnojkbgioiodbic\",chainTypes:[\"solana\"],get isInstalled(){return\"solflare\"in window&&!!window?.solflare?.isSolflare},getMobileRedirect({useUniversalLink:e,isSolana:t,connectOnly:n}){let r=_s({client:this.client,isSolana:t,connectOnly:n});return`${e?\"solflare://ul/v1/\":\"https://solflare.com/ul/v1/\"}browse/${r}?ref=${r}`}},backpack:{client:\"backpack\",name:\"Backpack\",installLink:\"https://chromewebstore.google.com/detail/backpack/aflkmfhebedbjioipglgcbcmnbpgliof\",chainTypes:[\"ethereum\",\"solana\"],get isInstalled(){return!(!(\"backpack\"in window)||!window?.backpack?.ethereum?.isBackpack&&!window?.backpack?.solana?.isBackpack)},getMobileRedirect({useUniversalLink:e,isSolana:t,connectOnly:n}){let r=_s({client:this.client,isSolana:t,connectOnly:n});return`${e?\"backpack://ul/v1/\":\"https://backpack.com/ul/v1/\"}browse/${r}?ref=${r}`}},okx_wallet:{client:\"okx_wallet\",name:\"OKX Wallet\",installLink:\"https://chromewebstore.google.com/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge\",chainTypes:[\"solana\"],get isInstalled(){return\"okxwallet\"in window&&!!window?.okxwallet?.isOkxWallet},getMobileRedirect({isSolana:e,connectOnly:t}){return\"https://www.okx.com/download?deeplink=\"+encodeURIComponent(\"okx://wallet/dapp/url?dappUrl=\"+_s({client:this.client,isSolana:e,connectOnly:t}))}}});function As({connectorType:e,walletClientType:t}){for(let n of Ts)if(e===n||t===n)return bs[n]}function _s({client:e,isSolana:t,connectOnly:n}){let r=new URL(window.location.href);return r.searchParams.set(\"privy_connector\",t?\"solana_adapter\":\"injected\"),r.searchParams.set(\"privy_wallet_client\",e),r.searchParams.set(\"privy_connect_only\",String(n)),encodeURIComponent(r.href.replace(/\\/$/g,\"\"))}class ks extends Qr{get walletBranding(){return{id:this.id,name:this.name,icon:this.icon}}async initialize(){this.initialized=!0,this.emit(\"initialized\")}async connect(){throw Error(\"connect called for an uninstalled wallet via the SolanaNullConnector\")}constructor({id:e,name:t,icon:n}){super({name:t},!1),this.connectorType=\"null\",this.proxyProvider=new Ye(void 0,Vn),this.disconnect=async()=>{throw Error(\"disconnect called for an uninstalled wallet via the SolanaNullConnector\")},this.promptConnection=async()=>{throw Error(\"promptConnection called for an uninstalled wallet via the SolanaNullConnector\")},this.id=e,this.name=t,this.icon=n}}class Is extends Ta{get wallets(){let e=new Set,t=this.walletConnectors.flatMap((e=>e.wallets)).sort(((e,t)=>e.connectedAt&&t.connectedAt?t.connectedAt-e.connectedAt:0)).filter((t=>{let n=`${t.address}${t.walletClientType}${t.connectorType}${t.meta.id}`;return!e.has(n)&&(e.add(n),!0)})),n=t.findIndex((e=>e.address===(this.activeWallet?this.activeWallet:\"unknown\")));return n>=0&&t.unshift(t.splice(n,1)[0]),t}async initialize(e){if(this.initialized&&!e)return;e&&this.removeAllConnectors(),Zr.get($n)&&(Zr.getKeys().forEach((e=>{e.startsWith(\"walletconnect\")&&Zr.del(e)})),Zr.del($n));let t=et({store:this.store,walletList:this.walletList,externalWalletConfig:this.externalWalletConfig,walletChainType:this.walletChainType}).then((e=>{e.forEach((({type:e,eip6963InjectedProvider:t,legacyInjectedProvider:n})=>{this.createEthereumWalletConnector({connectorType:\"injected\",walletClientType:e,providers:{eip6963InjectedProvider:t,legacyInjectedProvider:n}})}))}));for(let e of(this.walletList.includes(\"coinbase_wallet\")&&this.createEthereumWalletConnector({connectorType:\"coinbase_wallet\",walletClientType:\"coinbase_wallet\"}),Object.values(bs)))!e.isInstalled&&this.walletList.includes(e.client)&&([\"ethereum-only\",\"ethereum-and-solana\"].includes(this.walletChainType)&&e.chainTypes.includes(\"ethereum\")&&this.createEthereumWalletConnector({connectorType:\"null\",walletClientType:e.client,walletConfig:e}),[\"ethereum-and-solana\",\"solana-only\"].includes(this.walletChainType)&&e.chainTypes.includes(\"solana\")&&this.addSolanaWalletConnector(new ks({id:e.client,name:e.name})));this.externalWalletConfig.walletConnect.enabled&&this.createEthereumWalletConnector({connectorType:\"wallet_connect_v2\",walletClientType:\"unknown\"}),this.externalWalletConfig.solana.connectors?.get().forEach(this.addSolanaWalletConnector),this.externalWalletConfig.solana.connectors?._setOnConnectorsUpdated?.((e=>{e?.forEach(this.addSolanaWalletConnector)})),await t,this.initialized=!0}findWalletConnector(e,t){return\"wallet_connect_v2\"===e?this.walletConnectors.filter(tt).find((t=>t.connectorType===e))??null:this.walletConnectors.filter(tt).find((n=>n.connectorType===e&&n.walletClientType===t))??null}findSolanaWalletConnector(e){return this.walletConnectors.filter(Xr).find((t=>\"unknown\"===t.walletClientType?t.walletBranding.id===e:t.walletClientType===e))??null}findEmbeddedWalletConnectors(){return this.walletConnectors.filter((e=>\"embedded\"===e.connectorType))}onInitialized(e){e.wallets.forEach((e=>{let t=this.storedConnections.find((t=>t.address===e.address&&t.connectorType===e.connectorType&&(\"solana\"===e.type&&\"unknown\"===t.walletClientType&&\"unknown\"===e.walletClientType?e.meta.id===t.id:t.walletClientType===e.walletClientType)));t&&(e.connectedAt=t.connectedAt)})),this.saveConnectionHistory(),this.emit(\"walletsUpdated\"),this.emit(\"connectorInitialized\")}onWalletsUpdated(e){e.initialized&&(this.saveConnectionHistory(),this.emit(\"walletsUpdated\"))}addEmbeddedWalletConnectors({walletProxy:e,rootWallet:t,embeddedWallets:n,defaultChain:r,appId:a}){for(let i of n){let n=this.findEmbeddedWalletConnectors().find((e=>e.walletIndex===i.walletIndex));if(n&&tt(n))n.proxyProvider.walletProxy=e;else{let{entropyId:n,entropyIdVerifier:o}=jn(t),s=new is({provider:new hs({walletProxy:e,address:i.address,entropyId:n,entropyIdVerifier:o,rpcConfig:this.rpcConfig,chains:this.chains,appId:a,chainId:r.id,walletIndex:i.walletIndex}),chains:this.chains,defaultChain:r,rpcConfig:this.rpcConfig,imported:!1,walletIndex:i.walletIndex});this.addWalletConnector(s)}}}addImportedWalletConnector(e,t,n,r){let a=this.findWalletConnector(\"embedded_imported\",\"privy\");if(a&&tt(a))a.proxyProvider.walletProxy=e;else{let a=new is({provider:new hs({walletProxy:e,address:t,entropyId:t,entropyIdVerifier:\"ethereum-address-verifier\",walletIndex:0,rpcConfig:this.rpcConfig,chains:this.chains,appId:r,chainId:n.id}),chains:this.chains,walletIndex:0,defaultChain:n,rpcConfig:this.rpcConfig,imported:!0});this.addWalletConnector(a)}}removeEmbeddedWalletConnectors(){this.walletConnectors=this.walletConnectors.filter((e=>\"embedded\"!==e.connectorType)),this.saveConnectionHistory(),this.storedConnections=ea(),this.emit(\"walletsUpdated\")}removeImportedWalletConnector(){let e=this.findWalletConnector(\"embedded_imported\",\"privy\");if(e){let t=this.walletConnectors.indexOf(e);this.walletConnectors.splice(t,1),this.saveConnectionHistory(),this.storedConnections=ea(),this.emit(\"walletsUpdated\")}}async createEthereumWalletConnector({connectorType:e,walletClientType:t,providers:n,walletConfig:r}){let a=this.findWalletConnector(e,t);if(a&&tt(a))return a instanceof nt&&a.resetConnection(t),a;let i=(()=>\"injected\"!==e?\"coinbase_wallet\"===e?new rs(this.chains,this.defaultChain,this.rpcConfig,this.externalWalletConfig,this.privyAppName,this.privyAppLogo):\"null\"!==e?new nt(this.walletConnectCloudProjectId,this.rpcConfig,this.chains,this.defaultChain,this.shouldEnforceDefaultChainOnConnect,this.privyAppId,this.privyAppName,t):r?new ps({id:r.client,name:r.name,defaultChain:this.defaultChain,walletClientType:r.client}):null:\"metamask\"===t&&n?.eip6963InjectedProvider?new Es(this.chains,this.defaultChain,this.rpcConfig,n?.eip6963InjectedProvider,\"metamask\"):\"metamask\"===t&&n?.legacyInjectedProvider?new Cs(this.chains,this.defaultChain,this.rpcConfig,n?.legacyInjectedProvider,\"metamask\"):\"phantom\"===t&&n?.legacyInjectedProvider?new Cs(this.chains,this.defaultChain,this.rpcConfig,n?.legacyInjectedProvider,\"phantom\"):n?.legacyInjectedProvider&&\"unknown_browser_extension\"===t?new Cs(this.chains,this.defaultChain,this.rpcConfig,n?.legacyInjectedProvider):n?.eip6963InjectedProvider?new ws(this.chains,this.defaultChain,this.rpcConfig,n?.eip6963InjectedProvider,t):void 0)();return i&&this.addWalletConnector(i),i||null}addWalletConnector(e){this.walletConnectors.push(e),e.on(\"initialized\",(()=>this.onInitialized(e))),e.on(\"walletsUpdated\",(()=>this.onWalletsUpdated(e))),e.initialize().catch((e=>{console.debug(\"Failed to initialize connector\",e)}))}saveConnectionHistory(){let e=this.wallets.map((e=>({address:e.address,connectorType:e.connectorType,walletClientType:e.walletClientType,connectedAt:e.connectedAt,id:e.meta.id})));Zr.put(Gn,e)}async activeWalletSign(e){let t=this.wallets,n=t.length>0?t[0]:null;return n&&rt(n)?n.sign(e):null}setActiveWallet(e){this.activeWallet=C(e),this.emit(\"walletsUpdated\")}setWalletList(e){this.walletList=e,this.initialized&&this.initialize(!0).catch(console.error)}removeAllConnectors(){for(let e of this.walletConnectors)e.removeAllListeners();this.walletConnectors=[]}constructor(e,t,n,r,a,i,o,s,l,c,d,u){super(),this.addSolanaWalletConnector=async e=>{let t=this.findSolanaWalletConnector(e.walletClientType);if(!t||\"null\"===t.connectorType){if(\"null\"===t?.connectorType){let e=this.walletConnectors.indexOf(t);this.walletConnectors.splice(e,1)}this.addWalletConnector(e)}},this.getEthereumProvider=()=>{let e=this.wallets[0],t=this.walletConnectors.find((t=>t.wallets.find((t=>t.address===e?.address))));return e&&t?t.proxyProvider:new Ye},this.privyAppId=e,this.walletConnectCloudProjectId=t,this.rpcConfig=n,this.chains=r,this.defaultChain=a,this.walletConnectors=[],this.initialized=!1,this.store=i,this.walletList=o,this.shouldEnforceDefaultChainOnConnect=s,this.externalWalletConfig=l,this.privyAppName=c,this.privyAppLogo=d,this.walletChainType=u||\"ethereum-only\",this.storedConnections=ea()}}let Ns=[de,ue,he];class xs{async get(e,t){try{return await this.baseFetch(e,t)}catch(e){throw b(e)}}async post(e,t,n){try{return await this.baseFetch(e,{method:\"POST\",...t?{body:t}:{},...n})}catch(e){throw b(e)}}async delete(e,t){try{return await this.baseFetch(e,{method:\"DELETE\",...t})}catch(e){throw b(e)}}constructor({appId:e,appClientId:t,client:n,defaults:r}){this.appId=e,this.appClientId=t,this.clientAnalyticsId=n.clientAnalyticsId,this.sdkVersion=qn,this.client=n,this.defaults=r,this.fallbackApiUrl=n.fallbackApiUrl,this.baseFetch=za.create({baseURL:this.defaults.baseURL,timeout:this.defaults.timeout,retry:3,retryDelay:500,retryStatusCodes:[408,409,425,500,502,503,504],credentials:\"include\",onRequest:async({request:e,options:t})=>{let n=new Headers(t.headers);n.set(\"privy-app-id\",this.appId),this.appClientId&&n.set(\"privy-client-id\",this.appClientId),n.set(\"privy-ca-id\",this.clientAnalyticsId||\"\"),n.set(\"privy-client\",`react-auth:${this.sdkVersion}`);let r=Ns.includes(e.toString());if(!n.has(\"authorization\")){let e=await this.client.getAccessToken({disableAutoRefresh:r});null!==e&&n.set(\"authorization\",`Bearer ${e}`)}t.headers=n,t.retryDelay&&\"number\"==typeof t.retryDelay&&(t.retryDelay=3*t.retryDelay)},onRequestError:({error:e})=>{if(e instanceof DOMException&&\"AbortError\"===e.name)throw new k}})}}let Ss=/paymaster\\.biconomy\\.io\\/api/i,Rs={mode:\"SPONSORED\",calculateGasLimits:!0,expiryDuration:300,sponsorshipInfo:{webhookData:{},smartAccountInfo:{name:\"BICONOMY\",version:\"2.0.0\"}}};const Os=(e,t)=>e&&Ss.test(e)?Rs:t&&t.policy_id?{policyId:t.policy_id}:void 0;function Ws(){return!(w&&window.location.origin.startsWith(\"http://localhost\"))}const Ms=Va((()=>({identityToken:null})));function Ps(){let{identityToken:e}=Ms();return{identityToken:e}}var Ls,Ds=((Ls={}).PRIVY=\"privy_access_token\",Ls.CUSTOMER=\"customer_access_token\",Ls);class Us{get token(){return this.privyAccessToken||this.customerAccessToken}getToken(e){return\"privy_access_token\"===e?this.privyAccessToken:this.customerAccessToken}get customerAccessToken(){return this._getToken(Kn)}get privyAccessToken(){return this._getToken(Yn)}_getToken(e){try{let t=Zr.get(e);return\"string\"==typeof t?Jo.throwIfNotWellFormedJwt(t):null}catch(e){return console.error(e),this.destroyLocalState(),null}}get refreshToken(){try{let e=Zr.get(Zn);return\"string\"==typeof e?e:null}catch(e){return console.error(e),this.destroyLocalState(),null}}getProviderAccessToken(e){try{let t=Zr.get(Jn(e));if(\"string\"!=typeof t)return null;{let n=new Jo(t);return n.isExpired()?(Zr.del(Jn(e)),null):n.value}}catch(e){return console.error(e),null}}get mightHaveServerCookies(){try{let e=Ha.get(Qn);return void 0!==e&&e.length>0}catch(e){console.error(e)}return!1}hasRefreshCredentials(e=\"privy_access_token\"){let t=\"string\"==typeof this.getToken(e),n=\"string\"==typeof this.refreshToken&&this.refreshToken!==Xn;return this.mightHaveServerCookies||t&&n}hasActiveAccessToken(e){let t=Jo.parse(this.getToken(e));return null!==t&&!t.isExpired(30)}authenticate(e){return this.authenticateOnce.execute(e)}link(e){return this.linkOnce.execute(e)}refresh(){return this.refreshOnce.execute()}destroy(){return this.destroyOnce.execute()}storeProviderAccessToken(e,t){\"string\"==typeof t?Zr.put(Jn(e),t):Zr.del(Jn(e))}updateIdentityToken(e){\"string\"==typeof e?this.storeIdentityToken(e):this.clearIdentityToken()}async _authenticate(e){try{let t=await e.authenticate(),{user:n,is_new_user:r,oauth_tokens:a}=t;this.handleTokenResponse(t);let i=a?{provider:a.provider,accessToken:a.access_token,accessTokenExpiresInSeconds:a.access_token_expires_in_seconds,refreshToken:a.refresh_token,refreshTokenExpiresInSeconds:a.refresh_token_expires_in_seconds,scopes:a.scopes}:void 0;return this._trackAuthenticateEvents(e,r),{user:er(n),isNewUser:r,oAuthTokens:i}}catch(e){throw console.warn(\"Error authenticating session\"),I(e)}}_trackAuthenticateEvents(e,t){let n=function(e){return e instanceof Co?\"email\":e instanceof jo?\"sms\":e instanceof at?\"siwe\":e instanceof Ao?\"guest\":e instanceof wo?\"custom_auth\":e instanceof No?e.meta.provider:null}(e);n&&this.client&&this.client.createAnalyticsEvent({eventName:\"sdk_authenticate\",payload:{method:n,isNewUser:t}}),\"siwe\"===n&&this.client&&this.client.createAnalyticsEvent({eventName:\"sdk_authenticate_siwe\",payload:{connectorType:e.meta.connectorType,walletClientType:e.meta.walletClientType}})}async _link(e){try{let t=await e.link(),n=t.oauth_tokens,r=n?{provider:n.provider,accessToken:n.access_token,accessTokenExpiresInSeconds:n.access_token_expires_in_seconds,refreshToken:n.refresh_token,refreshTokenExpiresInSeconds:n.refresh_token_expires_in_seconds,scopes:n.scopes}:void 0;return{user:er(t),oAuthTokens:r}}catch(e){throw console.warn(\"Error linking account\"),I(e)}}async _refresh(){if(!this.api)throw new T(\"Session has no API instance\");if(!this.client)throw new T(\"Session has no PrivyClient instance\");await this.client.getAccessToken({disableAutoRefresh:!0});let e=this.token,t=this.refreshToken;if(this.client.useServerCookies&&!this.mightHaveServerCookies&&this.token&&window.location.origin===this.client.apiUrl)return this.destroyLocalState(),null;try{let n;if(!(e&&t||this.mightHaveServerCookies))return null;{let r={};e&&(r.authorization=`Bearer ${e}`),n=await this.api.post(de,t?{refresh_token:t}:{},{headers:r})}return this.handleTokenResponse(n),er(n.user)}catch(e){if(e instanceof N&&e.privyErrorCode===A.MISSING_OR_INVALID_TOKEN)return console.warn(\"Unable to refresh tokens - token is missing or no longer valid\"),this.destroyLocalState(),null;throw I(e)}}handleTokenResponse(e){e.session_update_action&&\"set\"!==e.session_update_action?\"clear\"===e.session_update_action?this.destroyLocalState():\"ignore\"===e.session_update_action&&(e.token&&(this.storeCustomerAccessToken(e.token),this.storePrivyAccessToken(e.privy_access_token)),e.identity_token&&this.storeIdentityToken(e.identity_token)):this._storeAllTokens(e)}_storeAllTokens(e){this.storeRefreshToken(e.refresh_token),this.storeCustomerAccessToken(e.token),this.storePrivyAccessToken(e.privy_access_token),e.identity_token&&this.storeIdentityToken(e.identity_token)}async _destroy(){try{await(this.api?.post(ue,{refresh_token:this.refreshToken}))}catch(e){console.warn(\"Error destroying session\")}this.destroyLocalState()}destroyLocalState(){this.storeRefreshToken(null),this.storeCustomerAccessToken(null),this.storePrivyAccessToken(null),this.clearIdentityToken()}storeCustomerAccessToken(e){if(\"string\"==typeof e){let t=Zr.get(Kn);if(Zr.put(Kn,e),!this.client?.useServerCookies){let t=Jo.parse(e)?.expiration;Ha.set(tr,e,{sameSite:\"Strict\",secure:Ws(),expires:t?new Date(1e3*t):void 0})}t!==e&&this.client?.onStoreCustomerAccessToken?.(e)}else Zr.del(Kn),Ha.remove(tr),this.client?.onDeleteCustomerAccessToken?.()}storeRefreshToken(e){\"string\"==typeof e?(Zr.put(Zn,e),this.client?.useServerCookies||Ha.set(Qn,\"t\",{sameSite:\"Strict\",secure:Ws(),expires:30})):(Zr.del(Zn),Ha.remove(nr),Ha.remove(Qn))}storePrivyAccessToken(e){\"string\"==typeof e?Zr.put(Yn,e):Zr.del(Yn)}storeIdentityToken(e){if(Ms.setState({identityToken:e}),this.client?.useServerCookies)return;Zr.put(rr,e);let t=Jo.parse(e)?.expiration;Ha.set(ar,e,{sameSite:\"Strict\",secure:Ws(),expires:t?new Date(1e3*t):void 0})}clearIdentityToken(){Zr.del(rr),Ms.setState({identityToken:null}),Ha.remove(ar)}constructor(){this.authenticateOnce=new Ge((async e=>this._authenticate(e))),this.linkOnce=new Ge((async e=>this._link(e))),this.refreshOnce=new Ge(this._refresh.bind(this)),this.destroyOnce=new Ge(this._destroy.bind(this))}}let Fs;var Bs=0,zs=\"__private_\"+Bs+++\"__getOrGenerateClientAnalyticsId\";class Hs{initializeConnectorManager({walletConnectCloudProjectId:e,rpcConfig:t,chains:n,defaultChain:r,store:a,walletList:i,shouldEnforceDefaultChainOnConnect:o,externalWalletConfig:s,appName:l,walletChainType:c}){this.connectors||(this.connectors=new Is(this.appId,e,t,n,r,a,i,o,s,l,void 0,c))}generateApi(){let e=new xs({appId:this.appId,appClientId:this.appClientId,client:this,defaults:{baseURL:this.apiUrl,timeout:this.timeout}});return this.session.api=e,e}updateApiUrl(e){this.apiUrl=e||this.fallbackApiUrl,this.api=this.generateApi(),e&&(this.useServerCookies=!0)}authenticate(){if(!this.authFlow)throw new T(\"No auth flow in progress.\");return this.session.authenticate(this.authFlow)}async link(){if(!this.authFlow)throw new T(\"No auth flow in progress.\");let{oAuthTokens:e}=await this.session.link(this.authFlow);return{user:await this.getAuthenticatedUser(),oAuthTokens:e}}storeProviderAccessToken(e,t){this.session.storeProviderAccessToken(e,t)}getProviderAccessToken(e){return this.session.getProviderAccessToken(e)}async logout(){await this.session.destroy(),this.authFlow=void 0}clearProviderAcccessTokens(e){e.linkedAccounts.filter((e=>\"cross_app\"===e.type)).forEach((e=>{this.storeProviderAccessToken(e.providerApp.id,null)}))}startAuthFlow(e){return e.api=this.api,this.authFlow=e,this.authFlow}async initMfaSmsVerification(){try{await this.api.post(pe,{action:\"verify\"})}catch(e){throw b(e)}}async initMfaPasskeyVerification(){try{return(e=>({rpId:e.rp_id,challenge:e.challenge,allowCredentials:e.allow_credentials?.map((e=>({id:e.id,type:e.type,transports:e.transports})))||[],timeout:e.timeout,extensions:{appid:e.extensions?.app_id,credProps:e.extensions?.cred_props,hmacCreateSecret:e.extensions?.hmac_create_secret},userVerification:e.user_verification}))((await this.api.post(me,{})).options)}catch(e){throw b(e)}}async getCrossAppProviderDetails(e){try{return this._cachedProviderAppDetails[e]||(this._cachedProviderAppDetails[e]=await this.api.get(`/api/v1/apps/${e}/cross-app/details`)),this._cachedProviderAppDetails[e]}catch(e){console.error(\"Error fetching cross app provider details\",e)}}async acceptTerms(){try{let e=await this.api.post(ye,{});return er(e)}catch(e){throw I(e)}}async unlinkEmail(e){try{let t=await this.api.post(ge,{address:e});return await this.getAuthenticatedUser()??er(t)}catch(e){throw I(e)}}async unlinkPhone(e){try{let t=await this.api.post(fe,{phoneNumber:e});return await this.getAuthenticatedUser()??er(t)}catch(e){throw I(e)}}async unlinkEthereumWallet(e){try{let t=await this.api.post(we,{address:e});return await this.getAuthenticatedUser()??er(t)}catch(e){throw I(e)}}async unlinkSolanaWallet(e){try{let t=await this.api.post(ve,{address:e});return await this.getAuthenticatedUser()??er(t)}catch(e){throw I(e)}}async unlinkOAuth(e,t){try{let n=await this.api.post(Ce,{provider:e,subject:t});return await this.getAuthenticatedUser()??er(n)}catch(e){throw I(e)}}async unlinkFarcaster(e){try{let t=await this.api.post(Ee,{fid:e});return await this.getAuthenticatedUser()??er(t)}catch(e){throw I(e)}}async unlinkTelegram(e){try{let t=await this.api.post(Te,{telegram_user_id:e});return await this.getAuthenticatedUser()??er(t)}catch(e){throw I(e)}}async revokeDelegatedWallet(){try{await this.api.post(be,{})}catch(e){throw I(e)}}async createAnalyticsEvent({eventName:e,payload:t,timestamp:n,options:r}){if(\"undefined\"!=typeof window)try{this.clientAnalyticsId||console.warn(\"No client analytics id set, refusing to send analytics event\"),await this.api.post(he,{event_name:e,client_id:this.clientAnalyticsId,payload:{...t||{},clientTimestamp:n?n.toISOString():(new Date).toISOString()}},{retry:-1,keepalive:r?.keepAlive??!1})}catch(e){console.log(\"Unable to submit event. This is not an issue.\")}}async signMoonpayOnRampUrl(e){try{return this.api.post(Ae,e)}catch(e){throw I(e)}}async initCoinbaseOnRamp(e){try{return this.api.post(_e,e)}catch(e){throw I(e)}}async getCoinbaseOnRampStatus({partnerUserId:e}){try{return this.api.get(`${ke}?partnerUserId=${e}`)}catch(e){throw I(e)}}async getAuthenticatedUser(){return this.session.hasRefreshCredentials()?this.session.refresh():null}async getAccessToken(e){return await this.getPrivyAccessToken(e)||await this.getCustomerAccessToken(e)}async getCustomerAccessToken(e){return await this._getToken(Ds.CUSTOMER,e)}async getPrivyAccessToken(e){return await this._getToken(Ds.PRIVY,e)}async _getToken(e,t){return this.session.getToken(e)?this.session.hasActiveAccessToken(e)?this.session.hasRefreshCredentials(e)?Qo.parse(this.session.getToken(e))?.appId!==this.appId?(await this.logout(),null):this.session.getToken(e):(this.session.destroyLocalState(),null):!t?.disableAutoRefresh&&this.session.hasRefreshCredentials(e)?(await this.session.refresh(),this.session.getToken(e)):null:null}async getSmartWalletsConfig(){try{let e={},t=this.session.token;t&&(e.authorization=`Bearer ${t}`);let n=await this.api.get(`/api/v1/apps/${this.appId}/smart_wallets`,{baseURL:this.fallbackApiUrl,headers:e});return n.enabled?{enabled:n.enabled,smartWalletType:n.smart_wallet_type,configuredNetworks:n.configured_networks.map((e=>({chainId:e.chain_id,bundlerUrl:e.bundler_url,paymasterUrl:e.paymaster_url,paymasterContext:Os(e.paymaster_url,e.paymaster_context)})))}:{enabled:n.enabled}}catch(e){throw I(e)}}async getServerConfig(){try{let e={},t=this.session.token;t&&(e.authorization=`Bearer ${t}`);let n=await this.api.get(`/api/v1/apps/${this.appId}`,{baseURL:this.fallbackApiUrl,headers:e}),r=n.telegram_auth_config?{botId:n.telegram_auth_config.bot_id,botName:n.telegram_auth_config.bot_name,linkEnabled:n.telegram_auth_config.link_enabled,seamlessAuthEnabled:n.telegram_auth_config.seamless_auth_enabled}:void 0,a=n.funding_config?{methods:n.funding_config.methods,options:n.funding_config.options,defaultRecommendedAmount:n.funding_config.default_recommended_amount,defaultRecommendedCurrency:n.funding_config.default_recommended_currency,promptFundingOnWalletCreation:n.funding_config.prompt_funding_on_wallet_creation,crossChainBridgingEnabled:n.funding_config.cross_chain_bridging_enabled}:void 0;return{id:n.id,name:n.name,verificationKey:n.verification_key,logoUrl:n.logo_url||void 0,accentColor:n.accent_color||void 0,showWalletLoginFirst:n.show_wallet_login_first,allowlistConfig:{errorTitle:n.allowlist_config.error_title,errorDetail:n.allowlist_config.error_detail,errorCtaText:n.allowlist_config.cta_text,errorCtaLink:n.allowlist_config.cta_link},walletAuth:n.wallet_auth,solanaWalletAuth:n.solana_wallet_auth,emailAuth:n.email_auth,smsAuth:n.sms_auth,googleOAuth:n.google_oauth,twitterOAuth:n.twitter_oauth,discordOAuth:n.discord_oauth,githubOAuth:n.github_oauth,spotifyOAuth:n.spotify_oauth,instagramOAuth:n.instagram_oauth,tiktokOAuth:n.tiktok_oauth,linkedinOAuth:n.linkedin_oauth,appleOAuth:n.apple_oauth,farcasterAuth:n.farcaster_auth,passkeyAuth:n.passkey_auth,passkeysForSignupEnabled:n.passkeys_for_signup_enabled,telegramAuth:n.telegram_auth,disablePlusEmails:n.disable_plus_emails,termsAndConditionsUrl:n.terms_and_conditions_url,embeddedWalletConfig:{createOnLogin:n.embedded_wallet_config?.create_on_login,userOwnedRecoveryOptions:n.embedded_wallet_config.user_owned_recovery_options,requireUserOwnedRecoveryOnCreate:n.embedded_wallet_config.require_user_owned_recovery_on_create},privacyPolicyUrl:n.privacy_policy_url,requireUsersAcceptTerms:n.require_users_accept_terms,customApiUrl:n.custom_api_url,walletConnectCloudProjectId:n.wallet_connect_cloud_project_id,fiatOnRampEnabled:n.fiat_on_ramp_enabled,captchaEnabled:n.captcha_enabled,captchaSiteKey:n.captcha_site_key,createdAt:new Date(1e3*n.created_at),updatedAt:new Date(1e3*n.updated_at),mfaMethods:n.mfa_methods,enforceWalletUis:n.enforce_wallet_uis,legacyWalletUiConfig:n.legacy_wallet_ui_config,telegramAuthConfiguration:r,fundingConfig:a}}catch(e){throw I(e)}}async getUsdTokenPrice(e){try{return(await this.api.get(`/api/v1/token_price?chainId=${e.id}&tokenSymbol=${e.nativeCurrency.symbol}`)).usd}catch(t){return void console.error(`Unable to fetch token price for chain with id ${e.id}`)}}async getUsdPriceForSol(){try{return(await this.api.get(\"/api/v1/token_price?chainId=0&tokenSymbol=SOL\")).usd}catch(e){return void console.error(\"Unable to fetch token price for SOL\")}}async getSplTokenMetadata({mintAddress:e,cluster:t}){try{return await this.api.get(`/api/v1/spl_token_info?mint_address=${e}&cluster=${t}`)}catch(n){return void console.error(`Unable to fetch token metadata for ${t}:${e}`)}}async requestFarcasterSignerStatus(e){try{return await this.api.post(\"/api/v1/farcaster/signer/status\",{ed25519_public_key:e})}catch(e){throw console.error(\"Unable to fetch Farcaster signer status\"),e}}async generateSiweNonce({address:e,captchaToken:t}){try{return(await this.api.post(Ie,{address:e,token:t})).nonce}catch(e){throw I(e)}}async authenticateWithSiweInternal({message:e,signature:t,chainId:n,walletClientType:r,connectorType:a,mode:i}){return await this.api.post(Ne,{message:e,signature:t,chainId:n,walletClientType:r,connectorType:a,mode:i})}async linkWithSiweInternal({message:e,signature:t,chainId:n,walletClientType:r,connectorType:a}){return await this.api.post(xe,{message:e,signature:t,chainId:n,walletClientType:r,connectorType:a})}async linkSmartWallet({message:e,signature:t,smartWalletType:n}){try{let r=await this.api.post(Se,{message:e,signature:t,smart_wallet_type:n});return er(r)}catch(e){throw I(e)}}async linkWithSiwe({message:e,signature:t,chainId:n,walletClientType:r,connectorType:a}){try{let i=await this.linkWithSiweInternal({message:e,signature:t,chainId:n,walletClientType:r,connectorType:a});return er(i)}catch(e){throw I(e)}}async generateSiwsNonce({address:e,captchaToken:t}){try{return(await this.api.post(Re,{address:e,token:t})).nonce}catch(e){throw I(e)}}async authenticateWithSiwsInternal({message:e,signature:t,walletClientType:n,connectorType:r,mode:a}){return await this.api.post(Oe,{message:e,signature:t,walletClientType:n,connectorType:r,mode:a})}async sendAccountTransferRequest({nonce:e,account:t,accountType:n,externalWalletMetadata:r,telegramAuthResult:a,telegramWebAppData:i,farcasterEmbeddedAddress:o,oAuthUserInfo:s}){try{let l,c;switch(n){case\"email\":l=Ue,c={nonce:e,email:t};break;case\"sms\":l=De,c={nonce:e,phoneNumber:t};break;case\"siwe\":if(l=Le,!r)throw Error(\"Wallet parameters must be defined\");c={nonce:e,address:t,...r};break;case\"farcaster\":l=Pe,c={nonce:e,farcaster_id:t,farcaster_embedded_address:o};break;case\"telegram\":l=Me,c={nonce:e,telegram_auth_result:a,telegram_web_app_data:i};break;case\"custom\":case\"guest\":case\"passkey\":throw Error(\"Invalid transfer account type\");default:l=We,c={nonce:e,userInfo:s}}let d=await this.api.post(l,c);return await this.getAuthenticatedUser()??er(d)}catch(e){throw I(e)}}async linkWithSiwsInternal({message:e,signature:t,walletClientType:n,connectorType:r}){return await this.api.post(Fe,{message:e,signature:t,walletClientType:n,connectorType:r})}async linkWithSiws({message:e,signature:t,walletClientType:n,connectorType:r}){try{let a=await this.linkWithSiwsInternal({message:e,signature:t,walletClientType:n,connectorType:r});return er(a)}catch(e){throw I(e)}}async updateUserAndIdToken(){try{let e=await this.api.get(Be);return this.session.updateIdentityToken(e.identity_token),er(e.user)}catch(e){throw I(e)}}async scanTransaction(e){try{return await this.api.post(ze,e)}catch(e){throw I(e)}}constructor({apiUrl:e=ir,appId:t,appClientId:n,timeout:r=or}){Object.defineProperty(this,zs,{value:Vs}),this._cachedProviderAppDetails={},this.apiUrl=e,this.fallbackApiUrl=this.apiUrl,this.useServerCookies=e!==ir&&e.startsWith(\"https://privy.\"),this.timeout=r,this.appId=t,this.appClientId=n,this.clientAnalyticsId=function(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(\"attempted to use private field on non-instance\");return e}(this,zs)[zs](),Fs||(Fs=new Us),this.session=Fs,this.api=this.generateApi(),this.session.client=this}}function Vs(){if(\"undefined\"==typeof window)return null;try{let e=Zr.get(sr);if(\"string\"==typeof e&&e.length>0)return e}catch(e){}let e=Ea();try{return Zr.put(sr,e),e}catch(t){return e}}const $s=e=>{let{enabled:n,siteKey:r,appId:a,setError:s,setToken:l,setExecuting:c,ref:d}=it(),[,u]=i((()=>r?.split(\"t:\")||[]),[r]);if(o((()=>d.current?.remove),[]),!n)return null;if(!u)throw Error(\"Unsupported captcha site key\");/*#__PURE__*/return t(\"div\",{className:\"hidden h-0 w-0\",children:/*#__PURE__*/t($a,{...e,ref:d,siteKey:u,options:{action:a,size:\"invisible\",...e.delayedExecution?{appearance:\"execute\",execution:\"execute\"}:{appearance:\"always\",execution:\"render\"}},onUnsupported:()=>{e.onUnsupported?.(),console.warn(\"Browser does not support Turnstile.\")},onError:()=>{e.onError?.(),s(\"Captcha failed\"),c(!1)},onSuccess:t=>{e.onSuccess?.(t),l(t),c(!1)},onExpire:()=>{e.onExpire?.();try{d.current?.reset(),s(void 0),l(void 0)}catch(e){s(\"expired_and_failed_reset\")}}})})};function js(e){ta(\"configureMfa\",e)}const Gs=/*#__PURE__*/ja.span.withConfig({displayName:\"CircleBackground\",componentId:\"sc-c9f33cd-0\"})([\"&&{width:82px;height:82px;border-width:4px;border-style:solid;border-color:\",\";background-color:\",\";border-radius:50%;display:inline-block;box-sizing:border-box;}\"],(e=>e.color??\"var(--privy-color-accent)\"),(e=>e.color??\"var(--privy-color-accent)\"));let qs=/*#__PURE__*/ja.div.withConfig({displayName:\"StackedContainer\",componentId:\"sc-f7e7d474-0\"})([\"display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:82px;> div{position:relative;}> div > span{position:absolute;left:-41px;top:-41px;}> div > :last-child{position:absolute;left:-19px;top:-19px;}\"]);const Ks=/*#__PURE__*/ja.div.withConfig({displayName:\"Grow\",componentId:\"sc-ddbf22b4-0\"})([\"text-align:left;flex-grow:1;\"]),Ys=/*#__PURE__*/ja.div.withConfig({displayName:\"AlignBottom\",componentId:\"sc-ddbf22b4-1\"})([\"display:flex;flex-direction:column;justify-content:flex-end;flex-grow:1;\"]),Zs=/*#__PURE__*/ja.div.withConfig({displayName:\"LoginMethodContainer\",componentId:\"sc-ddbf22b4-2\"})([\"display:flex;flex-direction:column;gap:12px;-ms-overflow-style:none;scrollbar-width:none;&::-webkit-scrollbar{display:none;}\"]),Js=/*#__PURE__*/ja(Zs).withConfig({displayName:\"LoginMethodContainerWithScrollShadows\",componentId:\"sc-ddbf22b4-3\"})([\"\",\" background-repeat:no-repeat;background-size:100% 32px,100% 16px;background-attachment:local,scroll;max-height:400px;overflow-y:auto;scrollbar-width:none;padding:2px;\"],(e=>\"light\"===e.$colorScheme?\"background: linear-gradient(var(--privy-color-background), var(--privy-color-background) 70%) bottom, linear-gradient(rgba(0, 0, 0, 0) 20%, rgba(0, 0, 0, 0.06)) bottom;\":\"dark\"===e.$colorScheme?\"background: linear-gradient(var(--privy-color-background), var(--privy-color-background) 70%) bottom, linear-gradient(rgba(255, 255, 255, 0) 20%, rgba(255, 255, 255, 0.06)) bottom;\":void 0));let Qs=/*#__PURE__*/Ga([\"&&{width:100%;font-size:16px;line-height:24px;@media (min-width:440px){font-size:14px;}display:flex;gap:12px;align-items:center;padding:12px 16px;border:1px solid var(--privy-color-foreground-4) !important;border-radius:var(--privy-border-radius-mdlg);transition:background-color 200ms ease;cursor:pointer;&:hover{background-color:var(--privy-color-background-2);}&:disabled{cursor:pointer;background-color:var(--privy-color-background-2);}svg{height:24px;max-height:24px;max-width:24px;}}\"]);const Xs=/*#__PURE__*/ja.div.withConfig({displayName:\"Subtitle\",componentId:\"sc-ddbf22b4-4\"})([\"text-align:center;font-size:14px;margin-bottom:24px;\"]),el=/*#__PURE__*/ja.button.attrs({className:\"login-method-button\"}).withConfig({displayName:\"LoginMethodButton\",componentId:\"sc-ddbf22b4-5\"})([\"\",\"\"],Qs),tl=/*#__PURE__*/ja.a.withConfig({displayName:\"LoginMethodButtonLink\",componentId:\"sc-ddbf22b4-6\"})([\"\",\"\"],Qs),nl=/*#__PURE__*/ja.div.withConfig({displayName:\"Hide\",componentId:\"sc-ddbf22b4-7\"})([\"width:100%;height:100%;min-height:inherit;display:flex;flex-direction:column;\",\"\"],(e=>e.$if?\"display: none;\":\"\")),rl=/*#__PURE__*/ja.div.withConfig({displayName:\"EmptyWalletState\",componentId:\"sc-ddbf22b4-8\"})([\"width:100%;height:100%;padding:\",\";\"],(e=>e.$withPadding?\"64px 0px\":\"0px\")),al=/*#__PURE__*/ja.div.withConfig({displayName:\"Header\",componentId:\"sc-ddbf22b4-9\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;margin-bottom:32px;gap:12px;& h3{font-size:18px;font-style:normal;font-weight:600;line-height:24px;}& p{max-width:300px;font-size:14px;font-style:normal;font-weight:400;line-height:20px;}\"]);let il=/*#__PURE__*/ja.div.withConfig({displayName:\"ConnectContainer\",componentId:\"sc-a3e74b9e-0\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;padding-bottom:16px;margin-top:24px;\"]),ol=/*#__PURE__*/ja.div.withConfig({displayName:\"GappedContainer\",componentId:\"sc-a3e74b9e-1\"})([\"display:flex;flex-direction:column;gap:8px;\"]);const sl=/*#__PURE__*/ja.span.withConfig({displayName:\"CircleBorder\",componentId:\"sc-9056b8b8-0\"})([\"&&{width:82px;height:82px;border-width:4px;border-style:solid;border-color:\",\";border-bottom-color:transparent;border-radius:50%;display:inline-block;box-sizing:border-box;animation:rotation 1.2s linear infinite;transition:border-color 800ms;border-bottom-color:\",\";}\"],(e=>e.color??\"var(--privy-color-accent)\"),(e=>e.color??\"var(--privy-color-accent)\"));function ll(n){/*#__PURE__*/return e(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",...n,children:[/*#__PURE__*/t(\"circle\",{cx:\"12\",cy:\"12\",r:\"10\"}),/*#__PURE__*/t(\"line\",{x1:\"12\",x2:\"12\",y1:\"8\",y2:\"12\"}),/*#__PURE__*/t(\"line\",{x1:\"12\",x2:\"12.01\",y1:\"16\",y2:\"16\"})]})}const cl=({onTransfer:e,isTransferring:n,transferSuccess:r})=>/*#__PURE__*/t(st,{...r?{success:!0,children:\"Success!\"}:{warn:!0,loading:n,onClick:e,children:\"Transfer and delete account\"}}),dl=/*#__PURE__*/ja.div.withConfig({displayName:\"ConnectContainer\",componentId:\"sc-aa2e65ff-0\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:100%;padding-bottom:16px;\"]),ul=/*#__PURE__*/ja.div.withConfig({displayName:\"GappedContainer\",componentId:\"sc-aa2e65ff-1\"})([\"display:flex;flex-direction:column;&& p{font-size:14px;}width:100%;gap:16px;\"]),hl=/*#__PURE__*/ja.div.withConfig({displayName:\"DisclosedAccountContainer\",componentId:\"sc-aa2e65ff-2\"})([\"display:flex;cursor:pointer;align-items:center;width:100%;border:1px solid var(--privy-color-foreground-4) !important;border-radius:var(--privy-border-radius-md);padding:8px 10px;font-size:14px;font-weight:500;gap:8px;\"]),pl=/*#__PURE__*/ja(Ja).withConfig({displayName:\"StyledExclamationCircleIcon\",componentId:\"sc-aa2e65ff-3\"})([\"position:relative;width:\",\";height:\",\";color:var(--privy-color-foreground-3);margin-left:auto;\"],(e=>`${e.iconSize}px`),(e=>`${e.iconSize}px`)),ml=/*#__PURE__*/ja(Qa).withConfig({displayName:\"StyledCopyIcon\",componentId:\"sc-aa2e65ff-4\"})([\"position:relative;width:15px;height:15px;color:var(--privy-color-foreground-3);margin-left:auto;\"]),yl=/*#__PURE__*/ja.ol.withConfig({displayName:\"ListContainer\",componentId:\"sc-aa2e65ff-5\"})([\"display:flex;flex-direction:column;font-size:14px;width:100%;text-align:left;\"]),gl=/*#__PURE__*/ja.li.withConfig({displayName:\"ListItem\",componentId:\"sc-aa2e65ff-6\"})([\"font-size:14px;list-style-type:auto;list-style-position:outside;margin-left:1rem;margin-bottom:0.5rem;&:last-child{margin-bottom:0;}\"]),fl=/*#__PURE__*/ja.div.withConfig({displayName:\"CircleContainer\",componentId:\"sc-aa2e65ff-7\"})([\"position:relative;width:60px;height:60px;margin:10px;display:flex;justify-content:center;align-items:center;\"]);let wl=()=>/*#__PURE__*/t(fl,{children:/*#__PURE__*/t(pl,{iconSize:60})});const vl=({address:r,onClose:a,onRetry:i,onTransfer:o,isTransferring:s,transferSuccess:l})=>{let{defaultChain:c}=dr(),d=c.blockExplorers?.default.url??\"https://etherscan.io\";/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{onClose:a,backFn:i}),/*#__PURE__*/e(dl,{children:[/*#__PURE__*/t(wl,{}),/*#__PURE__*/e(ul,{children:[/*#__PURE__*/t(\"h3\",{children:\"Check account assets before transferring\"}),/*#__PURE__*/t(\"p\",{children:\"Before transferring, ensure there are no assets in the other account. Assets in that account will not transfer automatically and may be lost.\"}),/*#__PURE__*/e(yl,{children:[/*#__PURE__*/t(\"p\",{children:\" To check your balance, you can:\"}),/*#__PURE__*/t(gl,{children:\"Log out and log back into the other account, or \"}),/*#__PURE__*/e(gl,{children:[\"Copy your wallet address and use a\",\" \",/*#__PURE__*/t(\"u\",{children:/*#__PURE__*/t(\"a\",{target:\"_blank\",href:d,children:\"block explorer\"})}),\" \",\"to see if the account holds any assets.\"]})]}),/*#__PURE__*/e(hl,{onClick:()=>navigator.clipboard.writeText(r).catch(console.error),children:[/*#__PURE__*/t(Za,{color:\"var(--privy-color-foreground-1)\",strokeWidth:2,height:\"28px\",width:\"28px\"}),/*#__PURE__*/t(lt,{address:r,showCopyIcon:!1}),/*#__PURE__*/t(ml,{})]}),/*#__PURE__*/t(cl,{onTransfer:o,isTransferring:s,transferSuccess:l})]})]}),/*#__PURE__*/t(ct,{})]})},Cl=({onClose:r,onContinue:a,onInfo:i,onTransfer:o,transferSuccess:s,isTransferring:l,data:c})=>{if(!c?.accountTransfer?.linkMethod||!c?.accountTransfer?.displayName)return;let d={method:c?.accountTransfer?.linkMethod,handle:c?.accountTransfer?.displayName,disclosedAccount:c?.accountTransfer?.embeddedWalletAddress?{type:\"wallet\",handle:c?.accountTransfer?.embeddedWalletAddress}:void 0};/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{closeable:!0}),/*#__PURE__*/e(dl,{children:[/*#__PURE__*/t(qs,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(sl,{color:\"var(--privy-color-error)\"}),/*#__PURE__*/t(Ya,{height:38,width:38,stroke:\"var(--privy-color-error)\"})]})}),/*#__PURE__*/e(ul,{children:[/*#__PURE__*/e(\"h3\",{children:[function(e){switch(e){case\"sms\":return\"Phone number\";case\"email\":return\"Email address\";case\"siwe\":return\"Wallet address\";case\"linkedin\":return\"LinkedIn profile\";case\"google\":case\"apple\":case\"discord\":case\"github\":case\"instagram\":case\"spotify\":case\"tiktok\":case\"twitter\":case\"telegram\":case\"farcaster\":return`${xo(e.replace(\"_oauth\",\"\"))} profile`;default:return e}}(d.method),\" is associated with another account\"]}),/*#__PURE__*/e(\"p\",{children:[\"Do you want to transfer\",/*#__PURE__*/t(\"b\",{children:d.handle?` ${d.handle}`:\"\"}),\" to this account instead? This will delete your other account.\"]}),/*#__PURE__*/t(El,{onClick:i,disclosedAccount:d.disclosedAccount})]}),/*#__PURE__*/e(ul,{style:{gap:12,marginTop:12},children:[c?.accountTransfer?.embeddedWalletAddress?/*#__PURE__*/t(st,{onClick:a,children:\"Continue\"}):/*#__PURE__*/t(cl,{onTransfer:o,transferSuccess:s,isTransferring:l}),/*#__PURE__*/t(dt,{onClick:r,children:\"No thanks\"})]})]}),/*#__PURE__*/t(ct,{})]})};function El({disclosedAccount:n,onClick:r}){return n?/*#__PURE__*/e(hl,{onClick:r,children:[/*#__PURE__*/t(Za,{color:\"var(--privy-color-foreground-1)\",strokeWidth:2,height:\"28px\",width:\"28px\"}),/*#__PURE__*/t(lt,{address:n.handle,showCopyIcon:!1}),/*#__PURE__*/t(ll,{width:15,height:15,color:\"var(--privy-color-foreground-3)\",style:{marginLeft:\"auto\"}})]}):null}const Tl=/*#__PURE__*/ja.div.withConfig({displayName:\"AppLogoContainer\",componentId:\"sc-a63b1990-0\"})([\"display:flex;flex-direction:column;align-items:center;padding:0px 0px 30px;@media (max-width:440px){padding:10px 10px 20px;}\"]),bl=/*#__PURE__*/ja.div.withConfig({displayName:\"Title\",componentId:\"sc-a63b1990-1\"})([\"font-size:18px;line-height:30px;text-align:center;font-weight:600;margin-bottom:10px;\"]),Al=/*#__PURE__*/ja.div.withConfig({displayName:\"SubTitle\",componentId:\"sc-a63b1990-2\"})([\"font-size:0.875rem;text-align:center;\"]),_l=/*#__PURE__*/ja.div.withConfig({displayName:\"Container\",componentId:\"sc-a63b1990-3\"})([\"display:flex;flex-direction:column;align-items:center;gap:10px;flex-grow:1;padding:20px 0;@media (max-width:440px){padding:10px 10px 20px;}\"]),kl=/*#__PURE__*/ja.div.withConfig({displayName:\"List\",componentId:\"sc-a63b1990-4\"})([\"display:flex;flex-direction:column;align-items:stretch;gap:0.75rem;padding:1rem 0rem 0rem;flex-grow:1;width:100%;\"]),Il=/*#__PURE__*/ja.div.withConfig({displayName:\"ListItemIcon\",componentId:\"sc-a63b1990-5\"})([\"width:25px;display:flex;align-items:center;justify-content:flex-start;> svg{z-index:2;height:25px !important;width:25px !important;color:var(--privy-color-accent);}\"]),Nl=/*#__PURE__*/ja.div.withConfig({displayName:\"ListItem\",componentId:\"sc-a63b1990-6\"})([\"display:flex;align-items:center;gap:10px;font-size:0.875rem;line-height:1rem;text-align:left;\"]),xl=/*#__PURE__*/ja.div.withConfig({displayName:\"BottomSection\",componentId:\"sc-a63b1990-7\"})([\"display:flex;flex-direction:column;gap:10px;padding-top:20px;\"]),Sl=/*#__PURE__*/ja.div.withConfig({displayName:\"MethodList\",componentId:\"sc-a63b1990-8\"})([\"display:flex;flex-direction:column;align-items:stretch;gap:1rem;padding:1rem 0rem 0rem;flex-grow:1;width:100%;\"]),Rl=/*#__PURE__*/ja.div.withConfig({displayName:\"MethodListItem\",componentId:\"sc-a63b1990-9\"})([\"display:flex;gap:5px;width:100%;position:relative;\"]),Ol=/*#__PURE__*/ja.button.withConfig({displayName:\"RemoveMethodButton\",componentId:\"sc-a63b1990-10\"})([\"&&{background-color:transparent;color:var(--privy-color-foreground-3);padding:0 0.75rem;display:flex;align-items:center;height:100%;> svg{z-index:2;height:20px !important;width:20px !important;}}&&:hover{color:var(--privy-color-error);}\"]),Wl=/*#__PURE__*/ja.div.withConfig({displayName:\"MethodText\",componentId:\"sc-a63b1990-11\"})([\"display:flex;align-items:center;gap:0.5rem;> svg{z-index:2;height:20px !important;width:20px !important;}\"]),Ml=/*#__PURE__*/ja.div.withConfig({displayName:\"ExtraText\",componentId:\"sc-a63b1990-12\"})([\"display:flex;align-items:center;gap:6px;font-weight:400 !important;color:\",\";> svg{z-index:2;height:18px !important;width:18px !important;display:flex !important;align-items:flex-end;}\"],(e=>e.isAccent?\"var(--privy-color-accent)\":\"var(--privy-color-foreground-3)\")),Pl=/*#__PURE__*/ja.div.withConfig({displayName:\"SmsInsecureText\",componentId:\"sc-a63b1990-13\"})([\"width:100%;display:flex;justify-content:space-between;\"]),Ll=/*#__PURE__*/ja.p.withConfig({displayName:\"TermsText\",componentId:\"sc-a63b1990-14\"})([\"text-align:left;width:100%;color:var(--privy-color-foreground-3) !important;\"]),Dl=/*#__PURE__*/ja.button.withConfig({displayName:\"PrimaryTextButton\",componentId:\"sc-a63b1990-15\"})([\"display:flex;flex-direction:row;align-items:center;justify-content:center;user-select:none;&{width:100%;cursor:pointer;border-radius:var(--privy-border-radius-md);font-size:0.875rem;line-height:1rem;font-style:normal;font-weight:500;line-height:22px;letter-spacing:-0.016px;}&&{color:\",\";background-color:transparent;padding:0.5rem 0px;}&:hover{text-decoration:underline;}\"],(e=>\"dark\"===e.theme?\"var(--privy-color-foreground-2)\":\"var(--privy-color-accent)\")),Ul=/*#__PURE__*/ja.div.withConfig({displayName:\"IconWrapper\",componentId:\"sc-a63b1990-16\"})([\"display:flex;align-items:center;justify-content:center;color:var(--privy-color-accent);width:100%;> svg{z-index:2;width:3rem;height:3rem;}\"]),Fl=/*#__PURE__*/ja.div.withConfig({displayName:\"ErrorMessage\",componentId:\"sc-a63b1990-17\"})([\"color:var(--privy-color-error);\"]),Bl=({termsAndConditionsUrl:r,privacyPolicyUrl:a,onAccept:i,onDecline:o})=>/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{closeable:!1}),/*#__PURE__*/t(ei,{width:56,height:56,fill:\"var(--privy-color-accent)\",style:{margin:\"auto\"}}),/*#__PURE__*/t(bl,{style:{marginTop:24},children:\"One last step\"}),/*#__PURE__*/t(Al,{children:\"By signing up, you agree to our terms and privacy policy.\"}),/*#__PURE__*/e(Zs,{style:{marginTop:24},children:[r&&/*#__PURE__*/e(tl,{target:\"_blank\",href:r,children:[\"View Terms \",/*#__PURE__*/t(Xa,{style:{marginLeft:\"auto\"}})]}),a&&/*#__PURE__*/e(tl,{target:\"_blank\",href:a,children:[\"View Privacy Policy \",/*#__PURE__*/t(Xa,{style:{marginLeft:\"auto\"}})]})]}),/*#__PURE__*/e(zl,{style:{marginTop:24},children:[/*#__PURE__*/t(dt,{onClick:o,children:\"No thanks\"}),/*#__PURE__*/t(st,{onClick:i,children:\"Accept\"})]}),/*#__PURE__*/t(ct,{})]});let zl=/*#__PURE__*/ja.div.withConfig({displayName:\"ButtonsContainer\",componentId:\"sc-d601b243-0\"})([\"display:flex;gap:10px;\"]);const Hl=({style:e,...n})=>/*#__PURE__*/t(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",fill:\"none\",viewBox:\"0 0 24 24\",strokeWidth:\"1.5\",stroke:\"currentColor\",style:{height:\"1.5rem\",width:\"1.5rem\",...e},...n,children:/*#__PURE__*/t(\"path\",{fillRule:\"evenodd\",d:\"M12 1.5a5.25 5.25 0 00-5.25 5.25v3a3 3 0 00-3 3v6.75a3 3 0 003 3h10.5a3 3 0 003-3v-6.75a3 3 0 00-3-3v-3c0-2.9-2.35-5.25-5.25-5.25zm3.75 8.25v-3a3.75 3.75 0 10-7.5 0v3h7.5z\",clipRule:\"evenodd\"})});let Vl=/*#__PURE__*/ja.div.withConfig({displayName:\"ConnectContainer\",componentId:\"sc-ed4ecf-0\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;padding-bottom:16px;\"]),$l=/*#__PURE__*/ja.div.withConfig({displayName:\"GappedContainer\",componentId:\"sc-ed4ecf-1\"})([\"display:flex;flex-direction:column;gap:8px;\"]);const jl=({title:r,description:a,children:i,...o})=>\n/*#__PURE__*/t(Kl,{...o,children:/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(\"h3\",{children:r}),\"string\"==typeof a?/*#__PURE__*/t(\"p\",{children:a}):a,i]})}),Gl=/*#__PURE__*/ja(jl).withConfig({displayName:\"PaddedScreenHeader\",componentId:\"sc-523a75d6-0\"})([\"margin-bottom:24px;\"]),ql=({title:n,description:r,icon:a,children:i,...o})=>/*#__PURE__*/e(Yl,{...o,children:[a||null,/*#__PURE__*/t(\"h3\",{children:n}),r&&\"string\"==typeof r?/*#__PURE__*/t(\"p\",{children:r}):r,i]});let Kl=/*#__PURE__*/ja.div.withConfig({displayName:\"StyledSection\",componentId:\"sc-523a75d6-1\"})([\"display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;text-align:left;gap:8px;width:100%;margin-bottom:24px;&& h3{font-size:17px;color:var(--privy-color-foreground);}&& p{color:var(--privy-color-foreground-2);font-size:14px;}\"]),Yl=/*#__PURE__*/ja(Kl).withConfig({displayName:\"CenteredStyledSection\",componentId:\"sc-523a75d6-2\"})([\"align-items:center;text-align:center;gap:16px;h3{margin-bottom:24px;}\"]),Zl=Array(6).fill(\"\");var Jl,Ql,Xl=((Jl=Xl||{})[Jl.RESET_AFTER_DELAY=0]=\"RESET_AFTER_DELAY\",Jl[Jl.CLEAR_ON_NEXT_VALID_INPUT=1]=\"CLEAR_ON_NEXT_VALID_INPUT\",Jl),ec=((Ql=ec||{})[Ql.EMAIL=0]=\"EMAIL\",Ql[Ql.SMS=1]=\"SMS\",Ql);let tc=/*#__PURE__*/ja.div.withConfig({displayName:\"PasswordlessCodeContainer\",componentId:\"sc-bf1e04a-0\"})([\"display:flex;flex-direction:column;align-items:flex-start;justify-content:center;margin:auto;gap:16px;flex-grow:1;\"]),nc=/*#__PURE__*/ja.div.withConfig({displayName:\"CodeInput\",componentId:\"sc-bf1e04a-1\"})([\"display:flex;flex-direction:column;width:100%;gap:8px;> div:last-child{display:flex;justify-content:center;gap:0.5rem;width:100%;border-radius:var(--privy-border-radius-md);> input{border:1px solid var(--privy-color-foreground-4);background:var(--privy-color-background);border-radius:var(--privy-border-radius-md);padding:8px 10px;height:58px;width:46px;text-align:center;font-size:18px;}> input:focus{border:1px solid var(--privy-color-accent);}> input:invalid{border:1px solid var(--privy-color-error);}> input.success{border:1px solid var(--privy-color-success);}> input.fail{border:1px solid var(--privy-color-error);animation:shake 180ms;animation-iteration-count:2;}}@keyframes shake{0%{transform:translate(1px,0px);}33%{transform:translate(-1px,0px);}67%{transform:translate(-1px,0px);}100%{transform:translate(1px,0px);}}\"]),rc=/*#__PURE__*/ja.div.withConfig({displayName:\"InputHelp\",componentId:\"sc-bf1e04a-2\"})([\"line-height:20px;height:20px;font-size:13px;color:\",\";display:flex;justify-content:flex-end;width:100%;\"],(e=>e.$success?\"var(--privy-color-success)\":e.$fail?\"var(--privy-color-error)\":\"var(--privy-color-foreground-3)\")),ic=/*#__PURE__*/ja.div.withConfig({displayName:\"HelpText\",componentId:\"sc-bf1e04a-3\"})([\"font-size:13px;color:var(--privy-color-foreground);display:flex;gap:8px;align-items:center;width:100%;margin-top:16px;padding-bottom:32px;\"]),oc=/*#__PURE__*/ja.div.withConfig({displayName:\"ResendButtonContainer\",componentId:\"sc-bf1e04a-4\"})([\"color:var(--privy-color-accent);padding:2px 0;> button{text-decoration:underline;}\"]),sc=/*#__PURE__*/ja.div.withConfig({displayName:\"Badge\",componentId:\"sc-bf1e04a-5\"})([\"display:flex;align-items:center;justify-content:center;border-radius:var(--privy-border-radius-sm);padding:2px 8px;gap:4px;background:var(--privy-color-background-2);color:var(--privy-color-foreground-2);\"]),lc=/*#__PURE__*/ja.span.withConfig({displayName:\"BoldWrappingSpan\",componentId:\"sc-bf1e04a-6\"})([\"font-weight:500;word-break:break-all;\"]);const cc=({icon:r})=>/*#__PURE__*/t(n,{children:/*#__PURE__*/t(dc,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(pt,{}),\"string\"==typeof r?\n/*#__PURE__*/t(\"span\",{style:{background:`url('${r}')`,height:\"38px\",width:\"38px\",borderRadius:\"6px\",margin:\"auto\",backgroundSize:\"cover\"}}):r?/*#__PURE__*/t(r,{style:{width:\"38px\",height:\"38px\"}}):\n/*#__PURE__*/t(\"span\",{})]})})});let dc=/*#__PURE__*/ja.div.withConfig({displayName:\"StackedContainer\",componentId:\"sc-26c1d9b9-0\"})([\"display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:82px;> div{position:relative;}> div > span{position:absolute;left:-41px;top:-41px;}> div > :last-child{position:absolute;left:-19px;top:-19px;}\"]);let uc=/*#__PURE__*/ja.div.withConfig({displayName:\"CaptchaContainer\",componentId:\"sc-9afcf974-0\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;\"]);const hc=({chainType:n,withPadding:r})=>{let a=\"\";return a=\"ethereum-only\"===n||\"ethereum-and-solana\"===n?\"Rainbow, Phantom, or Coinbase Wallet\":\"Phantom or Solflare\",/*#__PURE__*/t(rl,{$withPadding:r,children:/*#__PURE__*/e(al,{children:[/*#__PURE__*/t(Ka,{style:{color:\"var(--privy-color-warn)\",height:48,width:48}}),/*#__PURE__*/t(\"h3\",{children:\"No wallets available\"}),/*#__PURE__*/e(\"p\",{children:[\"Please download an external wallet provider, like \",a,\".\"]})]})},\"empty-wallet-state\")},pc=({icon:e,name:n})=>\"string\"==typeof e?/*#__PURE__*/t(\"img\",{alt:`${n||\"wallet\"} logo`,src:e,style:{height:24,width:24,borderRadius:4}}):void 0===e?/*#__PURE__*/t(Za,{}):e?/*#__PURE__*/t(e,{}):null;function mc(e){let t=e.toLowerCase();return!!window?.webkit?.messageHandlers?.ReactNativeWebView||!!window?.ReactNativeWebView||[\"fbav\",\"fban\",\"instagram\",\"snapchat\",\"linkedinapp\"].some((e=>t.includes(e)))}const yc=({provider:n,displayName:r,logo:a,connectOnly:i,connector:o})=>{let s,{navigate:l,setModalData:c}=lr(),{connectWallet:d}=x(),u=gt(),h=ft(n),p=\"wallet_connect_v2\"===o.connectorType?n:o.walletClientType,m=window.matchMedia(\"(display-mode: standalone)\").matches,g=As({connectorType:o.connectorType,walletClientType:p});s=g&&g.chainTypes.includes(o.chainType)?()=>{g.isInstalled||\"solana\"===o.chainType&&\"isInstalled\"in o&&o.isInstalled?(d(o,p),l(i?cr.AWAITING_CONNECT_ONLY_CONNECTION:cr.AWAITING_CONNECTION)):y?(c({installWalletModalData:{walletConfig:g,chainType:o.chainType,connectOnly:i}}),l(cr.WALLET_INTERSTITIAL_SCREEN)):(c({installWalletModalData:{walletConfig:g,chainType:o.chainType,connectOnly:i}}),l(cr.INSTALL_WALLET_SCREEN))}:\"coinbase_wallet\"!==o.connectorType||\"eoaOnly\"!==o.connectionOptions||!y||m||wt()?()=>{(!mc(window.navigator.userAgent)||event?.isTrusted)&&(d(o,p),l(i?cr.AWAITING_CONNECT_ONLY_CONNECTION:cr.AWAITING_CONNECTION))}:()=>{window.location.href=`https://go.cb-w.com/dapp?cb_url=${encodeURI(window.location.href)}`};let f=r||h?.metadata?.shortName||h?.name||o.walletClientType;/*#__PURE__*/return e(gc,{onClick:s,children:[/*#__PURE__*/t(pc,{icon:a||h?.image_url?.md,name:f}),/*#__PURE__*/t(\"span\",{children:f}),/*#__PURE__*/e(wc,{id:\"chip-container\",children:[u?.walletClientType===p&&u?.chainType===o.chainType?/*#__PURE__*/t(fc,{color:\"gray\",children:\"Recent\"}):/*#__PURE__*/t(\"span\",{id:\"connect-text\",children:\"Connect\"}),\"solana\"===o.chainType&&/*#__PURE__*/t(fc,{color:\"gray\",children:\"Solana\"})]})]})};let gc=/*#__PURE__*/ja(el).withConfig({displayName:\"ConnectWalletButton\",componentId:\"sc-c6a554d4-0\"})([\"> #chip-container > #connect-text{font-weight:500;color:var(--privy-color-accent);opacity:0;transition:opacity 0.1s ease-out;}:hover > #chip-container > #connect-text{opacity:1;}@media (max-width:440px){> #chip-container > #connect-text{display:none;}}\"]),fc=/*#__PURE__*/ja(vt).withConfig({displayName:\"StyledChip\",componentId:\"sc-c6a554d4-1\"})([\"margin-left:auto;\"]),wc=/*#__PURE__*/ja.div.withConfig({displayName:\"ChipContainer\",componentId:\"sc-c6a554d4-2\"})([\"display:flex;flex-wrap:wrap;gap:8px;margin-left:auto;\"]);const vc=[\"coinbase_wallet\"];let Cc=[\"metamask\",\"okx_wallet\",\"rainbow\",\"uniswap\",\"bybit_wallet\",\"ronin_wallet\",\"uniswap_extension\",\"zerion\",\"rabby_wallet\",\"cryptocom\"];const Ec=[\"safe\"],Tc=[\"phantom\",\"backpack\",\"solflare\",\"universal_profile\"],bc=({wallets:e})=>{let{app:r}=lr();return 0===e.length?/*#__PURE__*/t(hc,{chainType:r.appearance.walletChainType,withPadding:!0}):/*#__PURE__*/t(n,{children:e})},Ac=({walletList:e,walletChainType:n,connectors:r,connectOnly:a,ignore:i,walletConnectEnabled:o,forceWallet:s})=>{let l=[],c=[],d=[],u=r.filter((e=>\"ethereum-only\"===n?\"ethereum\"===e.chainType:\"solana-only\"!==n||\"solana\"===e.chainType)),h=u.find((e=>\"wallet_connect_v2\"===e.connectorType));for(let[r,p]of(s?[s.wallet]:e).entries()){if(\"detected_ethereum_wallets\"===p||\"detected_wallets\"===p)for(let[e,n]of u.filter((({chainType:e,connectorType:t,walletClientType:n})=>\"solana\"!==e&&(\"uniswap_wallet_extension\"===n||\"uniswap_extension\"===n?!i.includes(\"uniswap\"):\"crypto.com_wallet_extension\"===n||\"crypto.com_onchain\"===n?!i.includes(\"cryptocom\"):\"injected\"===t&&!i.includes(n)))).entries()){let{walletClientType:i,walletBranding:o,chainType:s}=n;(\"unknown\"===i?c:l).push(/*#__PURE__*/t(yc,{connectOnly:a,provider:i,logo:o.icon,displayName:o.name,connector:n},`${r}-${p}-${i}-${s}-${e}`))}if(\"detected_solana_wallets\"===p||\"detected_wallets\"===p)for(let[e,o]of u.filter((({chainType:e,walletClientType:t})=>{if(\"solana\"===e)return\"ethereum-only\"!==n&&!i.includes(t)})).entries()){let{walletClientType:n,walletBranding:i,chainType:s}=o;(\"unknown\"===n?c:l).push(/*#__PURE__*/t(yc,{connectOnly:a,provider:n,logo:i.icon,displayName:i.name,connector:o},`${r}-${p}-${n}-${s}-${e}`))}if(Tc.includes(p)){let e=u.find((e=>\"injected\"===e.connectorType&&e.walletClientType===p||e.connectorType===p));if(e&&l.push(/*#__PURE__*/t(yc,{connectOnly:a,provider:p,connector:e},`${r}-${p}`)),\"solana-only\"===n||\"ethereum-and-solana\"===n){let e=u.find((({chainType:e,walletClientType:t})=>\"solana\"===e&&t===p));e&&l.push(/*#__PURE__*/t(yc,{connectOnly:a,provider:p,connector:e},`${p}-solana`))}}else if(Cc.includes(p)){let e=u.find((e=>\"uniswap\"===p?\"uniswap_wallet_extension\"===e.walletClientType||\"uniswap_extension\"===e.walletClientType:\"cryptocom\"===p?\"crypto.com_wallet_extension\"===e.walletClientType||\"crypto.com_onchain\"===e.walletClientType:\"injected\"===e.connectorType&&e.walletClientType===p));if(o&&!e&&(e=h),e&&l.push(/*#__PURE__*/t(yc,{connectOnly:a,provider:p,connector:e,logo:\"injected\"===e.connectorType?e.walletBranding.icon:void 0,displayName:\"injected\"===e.connectorType?e.walletBranding.name:void 0},`${r}-${p}`)),\"solana-only\"===n||\"ethereum-and-solana\"===n){let e=u.find((({chainType:e,walletClientType:t})=>\"solana\"===e&&t===p));e&&l.push(/*#__PURE__*/t(yc,{connectOnly:a,provider:p,connector:e},`${p}-solana`))}}else if(vc.includes(p)){let e=u.find((({connectorType:e})=>e===p));e&&l.push(/*#__PURE__*/t(yc,{connectOnly:a,provider:p,connector:e},`${r}-${p}`))}else if(Ec.includes(p))h&&d.push(/*#__PURE__*/t(yc,{connectOnly:a,provider:p,connector:h},`${r}-${p}`));else if(\"wallet_connect\"===p)h&&d.push(/*#__PURE__*/t(yc,{connectOnly:a,provider:p,connector:h,logo:h.walletBranding.icon,displayName:\"Wallet Connect\"},`${r}-${p}`));else if(p===s?.wallet){let n=\"ethereum\"===s.chainType&&e.includes(\"detected_ethereum_wallets\"),i=\"solana\"===s.chainType&&e.includes(\"detected_solana_wallets\");if(e.includes(\"detected_wallets\")||n||i){let e=u.find((({walletClientType:e})=>e===p));e&&l.push(/*#__PURE__*/t(yc,{connectOnly:a,provider:p,displayName:e.walletBranding?.name,logo:e.walletBranding?.icon,connector:e},`${r}-${p}`))}}}return[...c,...l,...d]};let _c=/*#__PURE__*/ja.div.withConfig({displayName:\"ConnectContainer\",componentId:\"sc-4475d7d5-0\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;\"]);const kc=({name:e,logoUrl:n,size:r=\"38px\"})=>\"string\"==typeof n?/*#__PURE__*/t(\"img\",{src:n,alt:`${e??\"Provider app\"} logo`,style:{width:r,height:r,maxHeight:\"90px\",maxWidth:\"180px\",borderRadius:\"8px\"}}):\n/*#__PURE__*/t(\"span\",{});let Ic=/*#__PURE__*/ja.div.withConfig({displayName:\"ConnectContainer\",componentId:\"sc-128f2a0d-0\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;margin-left:27px;margin-right:27px;gap:24px;\"]);let Nc=/*#__PURE__*/ja.div.withConfig({displayName:\"ButtonsContainer\",componentId:\"sc-b99bc0c0-0\"})([\"display:flex;gap:10px;\"]),xc=/*#__PURE__*/ja(Nt).withConfig({displayName:\"StyledWalletInfoCard\",componentId:\"sc-b99bc0c0-1\"})([\"margin-top:1.5rem;\"]);let Sc=/*#__PURE__*/ja.div.withConfig({displayName:\"ButtonsContainer\",componentId:\"sc-8ff214d7-0\"})([\"display:flex;gap:10px;\"]);const Rc=()=>/*#__PURE__*/t(Oc,{children:/*#__PURE__*/e(Wc,{children:[/*#__PURE__*/t(Mc,{}),/*#__PURE__*/t(Pc,{})]})});let Oc=/*#__PURE__*/ja.div.withConfig({displayName:\"LoadingContainer\",componentId:\"sc-85b54ede-0\"})([\"display:flex;justify-content:center;align-items:center;flex-grow:1;margin:12px;padding:16px;@media all and (display-mode:standalone){margin-bottom:30px;}\"]),Wc=/*#__PURE__*/ja.div.withConfig({displayName:\"SpinnerContainer\",componentId:\"sc-85b54ede-1\"})([\"position:relative;height:140px;width:140px;opacity:1;animation:fadein 200ms ease;\"]),Mc=/*#__PURE__*/ja.div.withConfig({displayName:\"CircleFixed\",componentId:\"sc-85b54ede-2\"})([\"position:absolute;top:0;right:0;bottom:0;left:0;width:140px;height:140px;&&{border:4px solid var(--privy-color-accent-light);border-radius:50%;}\"]),Pc=/*#__PURE__*/ja.div.withConfig({displayName:\"CircleRotate\",componentId:\"sc-85b54ede-3\"})([\"position:absolute;top:0;right:0;bottom:0;left:0;width:140px;height:140px;animation:spin 1200ms linear infinite;&&{border:4px solid;border-color:var(--privy-color-accent) transparent transparent transparent;border-radius:50%;}@keyframes spin{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}\"]);const Lc=[\"error\",\"invalid_request_arguments\",\"wallet_not_on_device\",\"invalid_recovery_pin\",\"insufficient_funds\",\"missing_or_invalid_mfa\",\"mfa_verification_max_attempts_reached\",\"mfa_timeout\",\"twilio_verification_failed\"];class Dc extends Error{constructor(e,t){super(t),this.type=e}}function Uc(e){let t=e.type;return\"string\"==typeof t&&Lc.includes(t)}function Fc(e){return Uc(e)&&\"wallet_not_on_device\"===e.type}function Bc(e){return!!Uc(e)&&\"mfa_timeout\"===e.type}function zc(e){return!!Uc(e)&&\"missing_or_invalid_mfa\"===e.type}function Hc(e){return!!Uc(e)&&\"mfa_verification_max_attempts_reached\"===e.type}function Vc(e){return!(!Uc(e)||!e.message.includes(\"code 429\"))}function $c(e){return!!function(e){let t=e.type;return\"string\"==typeof t&&\"client_error\"===t}(e)&&\"MFA canceled\"===e.message}function jc({isCreatingWallet:e,skipSplashScreen:t}){return e?cr.EMBEDDED_WALLET_PASSWORD_CREATE_SCREEN:t?cr.EMBEDDED_WALLET_PASSWORD_UPDATE_SCREEN:cr.EMBEDDED_WALLET_PASSWORD_UPDATE_SPLASH_SCREEN}function Gc({walletAction:e,availableRecoveryMethods:t,legacySetWalletPasswordFlow:n,isResettingPassword:r,showAutomaticRecovery:a}){return a?cr.EMBEDDED_WALLET_SET_AUTOMATIC_RECOVERY_SCREEN:n||1===t.length?jc({isCreatingWallet:\"create\"===e,skipSplashScreen:r}):cr.EMBEDDED_WALLET_RECOVERY_SELECTION_SCREEN}function qc(e){switch(e){case\"user-passcode\":return cr.EMBEDDED_WALLET_PASSWORD_RECOVERY_SCREEN;case\"google-drive\":case\"icloud\":return cr.EMBEDDED_WALLET_RECOVERY_OAUTH_SCREEN;default:throw Error(\"Recovery method not supported\")}}async function Kc({api:e,provider:t}){let n=_o(),r=ko(),a=await Io(n);try{return\"icloud\"===t?{url:(await e.post(He,{client_type:\"web\"})).url}:{url:(await e.post(Ve,{redirect_to:window.location.href,code_challenge:a,state_code:r})).url,codeVerifier:n,stateCode:r,provider:t}}catch(e){throw b(e)}}async function Yc({api:e,provider:t,stateCode:n,codeVerifier:r,authorizationCode:a}){if(!a||!n)throw new T(\"[OAuth AuthFlow] Authorization and state codes code must be set prior to calling authenicate.\");if(\"undefined\"===a)throw new T(\"User denied confirmation during OAuth flow\");try{return(await e.post($e,{authorization_code:a,state_code:n,code_verifier:r,provider:t})).access_token}catch(e){let t=b(e);if(t.privyErrorCode)throw new T(t.message||\"Invalid code during OAuth flow.\",void 0,t.privyErrorCode);if(\"User denied confirmation during OAuth flow\"===t.message)throw new T(\"Invalid code during oauth flow.\",void 0,A.OAUTH_USER_DENIED);throw new T(\"Invalid code during OAuth flow.\",void 0,A.UNKNOWN_AUTH_ERROR)}}let Zc=/*#__PURE__*/ja.div.withConfig({displayName:\"BottomSpacing\",componentId:\"sc-55d2f85e-0\"})([\"height:44px;\"]);const Jc=({children:n,theme:r})=>/*#__PURE__*/e(Qc,{$theme:r,children:[/*#__PURE__*/t(Ya,{width:\"1.25rem\",color:\"dark\"===r?\"#FDE68A\":\"var(--privy-color-warn)\"}),n]});let Qc=/*#__PURE__*/ja.div.withConfig({displayName:\"Container\",componentId:\"sc-97f152b3-0\"})([\"display:flex;gap:0.5rem;background-color:\",\";\",\" align-items:flex-start;text-align:left;padding:0.5rem 0.75rem;font-size:0.8125rem;font-weight:400;line-height:1.125rem;padding:0.75rem;&&{border-radius:var(--privy-border-radius-sm);}\"],(e=>\"dark\"===e.$theme?\"var(--privy-color-background-2)\":\"var(--privy-color-warn-light)\"),(e=>\"dark\"===e.$theme?\"color: #FDE68A;\":\"\"));function Xc(n){let[r,a]=s(n.dimensions.width),[i,c]=s(void 0),d=l(null);o((()=>{if(d.current&&void 0===r){let{width:e}=d.current.getBoundingClientRect();a(e)}let e=getComputedStyle(document.documentElement);c({background:e.getPropertyValue(\"--privy-color-background\"),background2:e.getPropertyValue(\"--privy-color-background-2\"),foreground3:e.getPropertyValue(\"--privy-color-foreground-3\"),foregroundAccent:e.getPropertyValue(\"--privy-color-foreground-accent\"),accent:e.getPropertyValue(\"--privy-color-accent\"),accentDark:e.getPropertyValue(\"--privy-color-accent-dark\"),success:e.getPropertyValue(\"--privy-color-success\")})}),[]);let u=\"ethereum\"===n.walletToExport.chainType&&!n.walletToExport.imported;/*#__PURE__*/return t(\"div\",{ref:d,children:r&&\n/*#__PURE__*/e(td,{children:[/*#__PURE__*/t(\"iframe\",{style:{position:\"absolute\",zIndex:1},width:r,height:n.dimensions.height,allow:\"clipboard-write self *\",src:Ot(n.origin,`/apps/${n.appId}/embedded-wallets/export`,{client_id:n.appClientId,primaryAddress:n.primaryWallet.address,address:n.walletToExport.address,walletIndex:n.walletToExport.walletIndex,width:`${r}px`,caid:n.clientAnalyticsId,phrase_export:u,...i},{token:n.accessToken})}),/*#__PURE__*/t(nd,{children:\"Loading...\"}),u&&/*#__PURE__*/t(nd,{children:\"Loading...\"})]})})}let ed=/*#__PURE__*/ja.div.withConfig({displayName:\"EmbeddedWalletScreenContainer\",componentId:\"sc-eaab13a9-0\"})([\"display:flex;flex-direction:column;gap:1.25rem;text-align:left;\"]),td=/*#__PURE__*/ja.div.withConfig({displayName:\"ButtonContainer\",componentId:\"sc-eaab13a9-1\"})([\"overflow:visible;position:relative;overflow:none;height:44px;display:flex;gap:12px;\"]),nd=/*#__PURE__*/ja.div.withConfig({displayName:\"LoadingButton\",componentId:\"sc-eaab13a9-2\"})([\"display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:16px;font-weight:500;border-radius:var(--privy-border-radius-md);background-color:var(--privy-color-background-2);color:var(--privy-color-foreground-3);\"]);function rd(){let{getAccessToken:e}=ur(),{refreshSessionAndUser:t,createAnalyticsEvent:n,initializeWalletProxy:r}=x(),a=l(!1);return{createWallet:c((async({user:i,recoveryPassword:o})=>{let s=await e();if(!s)throw n({eventName:\"embedded_wallet_creation_failed\",payload:{error:\"Missing access token for user.\"}}),Error(\"An error has occured, please login again.\");try{n({eventName:\"embedded_wallet_creation_started\"});let e=await r(fr);if(!e)throw Error(\"walletProxy does not exist.\");let l=new Promise(((e,t)=>{setTimeout((()=>{t(Error(\"walletProxy.create timed out.\"))}),2e4)})),c=gr(i);if(!await Promise.race([e.create({accessToken:s,recoveryPassword:o,recoveryMethod:o?\"user-passcode\":void 0,solanaAddress:c?.address}),l]))throw Error(\"walletProxy.create did not send a response.\");let d=await t();if(!d)throw Error(\"Failed to refresh user.\");let u=yr(d);if(!u)throw Error(\"Updated user is missing embedded wallet.\");return n({eventName:\"embedded_wallet_creation_completed\",payload:{walletAddress:u.address}}),a.current=!0,u}catch(i){if(a.current)return;throw n({eventName:\"embedded_wallet_creation_failed\",payload:{error:i.toString()}}),console.warn(i),i}}),[])}}let id=/*#__PURE__*/ja.div.withConfig({displayName:\"BottomSpacing\",componentId:\"sc-e97c5a7e-0\"})([\"height:44px;\"]),od=/*#__PURE__*/Ga([\"font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:-0.008px;text-align:left;transition:color 0.1s ease-in;\"]);const sd=/*#__PURE__*/ja.span.withConfig({displayName:\"StatusText\",componentId:\"sc-3f6866a9-0\"})([\"\",\" transition:color 0.1s ease-in;color:\",\";text-transform:\",\";&[aria-hidden='true']{visibility:hidden;}\"],od,(({error:e})=>e?\"var(--privy-color-error)\":\"var(--privy-color-foreground-3)\"),(({error:e})=>e?\"\":\"capitalize\")),ld=/*#__PURE__*/ja.div.withConfig({displayName:\"EmbeddedWalletScreenContainer\",componentId:\"sc-3f6866a9-1\"})([\"display:flex;flex-direction:column;justify-content:center;flex-grow:1;\"]),cd=/*#__PURE__*/ja(st).withConfig({displayName:\"NoAnimationPrimaryButton\",componentId:\"sc-3f6866a9-2\"})([\"\",\"\"],(e=>e.hideAnimations&&/*#__PURE__*/Ga([\"&&{transition:none;}\"])));let dd=/*#__PURE__*/Ga([\"&&{width:100%;border-width:1px;border-radius:var(--privy-border-radius-md);border-color:var(--privy-color-foreground-3);background:var(--privy-color-background);color:var(--privy-color-foreground);padding:12px;font-size:16px;font-style:normal;font-weight:300;line-height:22px;}\"]);const ud=/*#__PURE__*/ja.input.withConfig({displayName:\"PasswordInput\",componentId:\"sc-3f6866a9-3\"})([\"\",\" &::placeholder{color:var(--privy-color-foreground-3);font-style:italic;font-size:14px;}overflow:hidden;text-overflow:ellipsis;white-space:nowrap;\"],dd),hd=/*#__PURE__*/ja.div.withConfig({displayName:\"PasswordDisplay\",componentId:\"sc-3f6866a9-4\"})([\"\",\"\"],dd),pd=/*#__PURE__*/ja.div.withConfig({displayName:\"PasswordContainer\",componentId:\"sc-3f6866a9-5\"})([\"position:relative;width:100%;display:flex;align-items:center;justify-content:\",\";\"],(({centered:e})=>e?\"center\":\"space-between\")),md=/*#__PURE__*/ja.div.withConfig({displayName:\"Header\",componentId:\"sc-3f6866a9-6\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;margin:32px 0;gap:4px;& h3{font-size:18px;font-style:normal;font-weight:600;line-height:24px;}& p{max-width:300px;font-size:14px;font-style:normal;font-weight:400;line-height:20px;}\"]),yd=/*#__PURE__*/ja.div.withConfig({displayName:\"Details\",componentId:\"sc-3f6866a9-7\"})([\"display:flex;flex-direction:column;gap:10px;padding-bottom:1rem;\"]),gd=/*#__PURE__*/ja.div.withConfig({displayName:\"DetailItem\",componentId:\"sc-3f6866a9-8\"})([\"display:flex;text-align:left;align-items:center;gap:8px;max-width:300px;font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:-0.008px;margin:0 8px;color:var(--privy-color-foreground-2);> :first-child{min-width:24px;}\"]),fd=/*#__PURE__*/ja(Pt).withConfig({displayName:\"ExportButton\",componentId:\"sc-3f6866a9-10\"})([\"display:flex;flex:1;gap:4px;justify-content:center;&&{background:var(--privy-color-background);border-radius:var(--privy-border-radius-md);border-color:var(--privy-color-foreground-3);border-width:1px;}\"]),wd=/*#__PURE__*/ja.div.withConfig({displayName:\"InputRightIcons\",componentId:\"sc-3f6866a9-11\"})([\"position:absolute;right:0.5rem;display:flex;flex-direction:row;justify-content:space-around;align-items:center;\"]),vd=/*#__PURE__*/ja(hi).withConfig({displayName:\"RegenerateIcon\",componentId:\"sc-3f6866a9-12\"})([\"height:1.25rem;width:1.25rem;stroke:var(--privy-color-accent);cursor:pointer;:active{stroke:var(--privy-color-accent-light);}\"]),Cd=/*#__PURE__*/ja(mi).withConfig({displayName:\"HiddenIcon\",componentId:\"sc-3f6866a9-13\"})([\"height:1.25rem;width:1.25rem;stroke:var(--privy-color-accent);cursor:pointer;:active{stroke:var(--privy-color-accent-light);}\"]),Ed=/*#__PURE__*/ja(pi).withConfig({displayName:\"ShownIcon\",componentId:\"sc-3f6866a9-14\"})([\"height:1.25rem;width:1.25rem;stroke:var(--privy-color-accent);cursor:pointer;:active{stroke:var(--privy-color-accent-light);}\"]),Td=/*#__PURE__*/ja.progress.withConfig({displayName:\"StrengthMeter\",componentId:\"sc-3f6866a9-15\"})([\"height:4px;width:100%;margin:8px 0;::-webkit-progress-bar{border-radius:8px;background:var(--privy-color-foreground-4);}::-webkit-progress-value{border-radius:8px;transition:all 0.1s ease-out;background:\",\";}\"],(({label:e})=>(\"Strong\"===e?\"#78dca6\":\"Medium\"===e&&\"var(--privy-color-warn)\")||\"var(--privy-color-error)\")),bd=({buttonHideAnimations:r,buttonLoading:a,password:i,onSubmit:l,onBack:c})=>{let[d,u]=s(!0),[h,p]=s(!1),[m,y]=s(\"\"),g=i===m;return o((()=>{m&&!h&&p(!0)}),[m]),/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{closeable:!1,backFn:c}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(ld,{children:[/*#__PURE__*/e(md,{children:[/*#__PURE__*/t(Ya,{height:48,width:48,stroke:\"var(--privy-color-background)\",fill:\"var(--privy-color-accent)\"}),/*#__PURE__*/t(\"h3\",{style:{color:\"var(--privy-color-foreground)\"},children:\"Confirm your password\"}),/*#__PURE__*/t(\"p\",{style:{color:\"var(--privy-color-foreground-2)\"},children:\"Please re-enter your password below to continue.\"})]}),/*#__PURE__*/e(pd,{children:[/*#__PURE__*/t(ud,{value:m,onChange:e=>y(e.target.value),onKeyUp:e=>{\"Enter\"===e.key&&l()},onBlur:()=>p(!0),placeholder:\"confirm your password\",type:d?\"password\":\"text\",style:{paddingRight:\"2.3rem\"}}),/*#__PURE__*/t(wd,{style:{right:\"0.75rem\"},children:d?/*#__PURE__*/t(Cd,{onClick:()=>u(!1)}):/*#__PURE__*/t(Ed,{onClick:()=>u(!0)})})]}),\n/*#__PURE__*/t(sd,{\"aria-hidden\":!h||g,error:!0,children:\"Passwords do not match\"})]}),/*#__PURE__*/t(cd,{onClick:l,loading:a,disabled:!g,hideAnimations:r,children:\"Continue\"}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]})},Ad=({className:n,checked:r,color:a=\"var(--privy-color-accent)\",...i})=>/*#__PURE__*/t(\"label\",{children:/*#__PURE__*/e(_d,{className:n,children:[/*#__PURE__*/t(Id,{checked:r,...i}),/*#__PURE__*/t(Nd,{color:a,checked:r,children:/*#__PURE__*/t(kd,{viewBox:\"0 0 24 24\",children:/*#__PURE__*/t(\"polyline\",{points:\"20 6 9 17 4 12\"})})})]})});let _d=/*#__PURE__*/ja.div.withConfig({displayName:\"CheckboxContainer\",componentId:\"sc-db51b935-1\"})([\"display:inline-block;vertical-align:middle;\"]),kd=/*#__PURE__*/ja.svg.withConfig({displayName:\"Icon\",componentId:\"sc-db51b935-2\"})([\"fill:none;stroke:white;stroke-width:3px;\"]),Id=/*#__PURE__*/ja.input.attrs({type:\"checkbox\"}).withConfig({displayName:\"HiddenCheckbox\",componentId:\"sc-db51b935-3\"})([\"border:0;clip:rect(0 0 0 0);clippath:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px;\"]),Nd=/*#__PURE__*/ja.div.withConfig({displayName:\"StyledCheckbox\",componentId:\"sc-db51b935-4\"})([\"display:inline-block;width:18px;height:18px;transition:all 150ms;cursor:pointer;border-color:\",\";border-radius:3px;background:\",\";&&{border-width:1px;}\",\":focus + &{box-shadow:0 0 0 1px \",\";}\",\"{visibility:\",\";}\"],(e=>e.color),(e=>e.checked?e.color:\"var(--privy-color-background)\"),Id,(e=>e.color),kd,(e=>e.checked?\"visible\":\"hidden\"));const xd=({buttonHideAnimations:r,buttonLoading:a,onSubmit:i,onBack:o,config:l})=>{let[c,d]=s(!1);/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{closeable:!1,backFn:o}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(ld,{children:[/*#__PURE__*/e(md,{children:[/*#__PURE__*/t(Ya,{height:48,width:48,stroke:\"var(--privy-color-background)\",fill:\"var(--privy-color-error)\"}),/*#__PURE__*/t(\"h3\",{style:{color:\"var(--privy-color-foreground)\"},children:\"Confirm you have saved\"}),/*#__PURE__*/t(\"p\",{style:{color:\"var(--privy-color-foreground-2)\"},children:\"Losing access to your password means you will lose access to your account.\"})]}),/*#__PURE__*/t(yd,{children:/*#__PURE__*/e(gd,{style:{color:\"var(--privy-color-error)\",cursor:\"pointer\"},onClick:e=>{e.preventDefault(),d((e=>!e))},children:[/*#__PURE__*/t(Ad,{color:\"var(--privy-color-error)\",readOnly:!0,checked:c}),/*#__PURE__*/t(n,{children:\"I understand that if I lose my password and device, I will lose access to my account and my assets.\"})]})})]}),/*#__PURE__*/e(Sd,{children:[\"user\"===l.initiatedBy&&/*#__PURE__*/t(dt,{onClick:l.onCancel,disabled:a,children:\"Cancel\"}),/*#__PURE__*/t(cd,{onClick:i,loading:a,hideAnimations:r,disabled:!c,children:\"Set Password\"})]}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]})};let Sd=/*#__PURE__*/ja.div.withConfig({displayName:\"ButtonsContainer\",componentId:\"sc-eb601350-0\"})([\"display:flex;gap:10px;\"]),Rd=/[a-z]/,Od=/[A-Z]/,Wd=/[0-9]/,Md=\"!@#$%^&*()\\\\-_+.\",Pd=`a-zA-Z0-9${Md}`,Ld=RegExp(`[${Md}]`),Dd=RegExp(`[${Pd}]`);const Ud=RegExp(`^[${Pd}]{6,}$`),Fd=()=>di.generatePassphrase(4,ui);function Bd(e){return e>.9?\"Strong\":e>.5?\"Medium\":\"Weak\"}function zd(e=\"\"){return(.3*function(e){if(e.length<8)return 0;let t=0;return Rd.test(e)&&(t+=1),Od.test(e)&&(t+=1),Wd.test(e)&&(t+=1),Ld.test(e)&&(t+=1),Math.max(0,Math.min(1,t/3))}(e)+ci(e)/95)/2}const Hd=({buttonHideAnimations:r,buttonLoading:a,password:l=\"\",config:c,isResettingPassword:d,onSubmit:u,onClose:h,onBack:p,onPasswordChange:m,onPasswordGenerate:y})=>{let[g,f]=s(!1),[w,v]=s(!1);o((()=>{l&&!w&&v(!0)}),[l]);let C=i((()=>w?6>(l?.length||0)?\"Password must be at least 6 characters\":Ud.test(l||\"\")?null:`Invalid characters used ( ${((e=\"\")=>[...new Set(e.split(\"\").filter((e=>!Dd.test(e))).map((e=>e.replace(\" \",\"SPACE\"))))])(l).join(\" \")} )`:null),[l,w]),E=i((()=>C?{value:0,label:\"Weak\"}:function(e=\"\"){let t=zd(e);return{value:t,label:Bd(t)}}(l)),[l,C]),T=i((()=>!l?.length||!!C),[C,l]);/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{onClose:h,closeable:\"user\"===c.initiatedBy,backFn:p}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(ld,{children:[/*#__PURE__*/e(md,{children:[/*#__PURE__*/t(yi,{height:48,width:48,stroke:\"var(--privy-color-accent)\"}),/*#__PURE__*/e(\"h3\",{style:{color:\"var(--privy-color-foreground)\"},children:[d?\"Reset\":\"Set\",\" your password\"]}),/*#__PURE__*/t(\"p\",{style:{color:\"var(--privy-color-foreground-2)\"},children:\"Select a strong, memorable password to secure your account.\"})]}),/*#__PURE__*/e(pd,{children:[/*#__PURE__*/t(ud,{value:l,onChange:e=>m(e.target.value),onKeyUp:e=>{\"Enter\"===e.key&&u()},placeholder:\"enter or generate a strong password\",type:g?\"password\":\"text\",style:{paddingRight:\"3.8rem\"}}),/*#__PURE__*/e(wd,{style:{width:\"3.5rem\"},children:[g?/*#__PURE__*/t(Cd,{onClick:()=>f(!1)}):/*#__PURE__*/t(Ed,{onClick:()=>f(!0)}),/*#__PURE__*/t(vd,{onClick:y})]})]}),/*#__PURE__*/t(Td,{value:0===E.value?.01:E.value,label:E.label}),/*#__PURE__*/t(sd,{error:!!C,children:C||`Password Strength: ${w?E.label:\"--\"}`}),/*#__PURE__*/e($d,{children:[/*#__PURE__*/t(Vd,{children:/*#__PURE__*/e(yd,{children:[/*#__PURE__*/e(gd,{children:[/*#__PURE__*/t(ai,{width:24,height:24,fill:\"var(--privy-color-accent)\"}),\"This password is used to secure your account.\"]}),/*#__PURE__*/e(gd,{children:[/*#__PURE__*/t(ai,{width:24,height:24,fill:\"var(--privy-color-accent)\"}),\"Use it to log in on a new environment, like another browser or device.\"]})]})}),/*#__PURE__*/t(cd,{onClick:u,loading:a,disabled:T,hideAnimations:r,children:\"Continue\"})]})]}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]})};let Vd=/*#__PURE__*/ja(yd).withConfig({displayName:\"DetailsContainer\",componentId:\"sc-7b3b7727-0\"})([\"flex:1;padding-top:1rem;\"]),$d=/*#__PURE__*/ja.div.withConfig({displayName:\"LowerContainer\",componentId:\"sc-7b3b7727-1\"})([\"display:flex;flex-direction:column;height:100%;\"]);const jd=({buttonHideAnimations:r,buttonLoading:a,appName:i,password:o,onSubmit:l,onBack:d})=>{let[u,h]=s(!1),[p,m]=s(!0),y=c((()=>{h(!0),o&&navigator.clipboard.writeText(o)}),[o]),g=c((()=>{let e=document.createElement(\"a\"),t=i.toLowerCase().replace(/[^a-z\\s]/g,\"\").replace(/\\s/g,\"-\"),n=new Blob([Gd(i,o)],{type:\"text/plain\"}),r=URL.createObjectURL(n);e.href=r,e.target=\"_blank\",e.download=`${t}-privy-wallet-recovery.txt`,document.body.appendChild(e),e.click(),setTimeout((()=>{e.remove(),URL.revokeObjectURL(r)}),5e3)}),[o]);/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{backFn:d,closeable:!1}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(ld,{children:[/*#__PURE__*/e(md,{children:[/*#__PURE__*/t(Ya,{height:48,width:48,stroke:\"var(--privy-color-background)\",fill:\"var(--privy-color-accent)\"}),/*#__PURE__*/t(\"h3\",{style:{color:\"var(--privy-color-foreground)\"},children:\"Save your password\"}),/*#__PURE__*/t(\"p\",{style:{color:\"var(--privy-color-foreground-2)\"},children:\"For your security, this password cannot be reset, so keep it somewhere safe.\"})]}),/*#__PURE__*/e(pd,{centered:!0,children:[/*#__PURE__*/t(hd,{children:p?\"•\".repeat(o.length):o}),/*#__PURE__*/t(wd,{style:{right:\"0.75rem\"},children:p?/*#__PURE__*/t(Cd,{onClick:()=>m(!1)}):/*#__PURE__*/t(Ed,{onClick:()=>m(!0)})})]}),/*#__PURE__*/e(\"div\",{style:{display:\"flex\",margin:\"12px 0\",gap:\"12px\"},children:[/*#__PURE__*/t(fd,{onClick:y,children:/*#__PURE__*/e(n,u?{children:[/*#__PURE__*/t(fi,{style:{width:24,height:24},stroke:\"var(--privy-color-accent)\"}),\"Copied\"]}:{children:[/*#__PURE__*/t(wi,{style:{width:24,height:24},stroke:\"var(--privy-color-accent)\"}),\"Copy\"]})}),/*#__PURE__*/e(fd,{onClick:g,children:[/*#__PURE__*/t(gi,{style:{width:24,height:24},stroke:\"var(--privy-color-accent)\"}),\"Download\"]})]})]}),/*#__PURE__*/t(cd,{onClick:l,loading:a,hideAnimations:r,children:\"Continue\"}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]})};let Gd=(e,t)=>`Your wallet recovery password for ${e} is\\n\\n${t}\\n\\nYou will need this password to access your ${e} wallet on a new device. Please keep it somewhere safe.`;const qd=({error:r,onClose:a})=>/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{closeable:!1}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(xt,r?{children:[/*#__PURE__*/t(ii,{fill:\"var(--privy-color-error)\",width:\"64px\",height:\"64px\"}),/*#__PURE__*/t(ql,{title:\"Something went wrong\",description:r})]}:{children:[/*#__PURE__*/t(ai,{fill:\"var(--privy-color-success)\",width:\"64px\",height:\"64px\"}),/*#__PURE__*/t(ql,{title:\"Success\"})]}),/*#__PURE__*/t(st,{onClick:a,children:\"Close\"}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]});let Kd=(e,t)=>{switch(e){case\"creating\":return\"back\"===t?e:\"saving\";case\"saving\":return\"back\"===t?\"creating\":\"confirming\";case\"confirming\":return\"back\"===t?\"saving\":\"finalizing\";case\"finalizing\":return\"back\"===t?\"confirming\":\"done\";default:return e}};const Yd=({onSubmit:e,...n})=>{let{lastScreen:r,navigate:a}=lr(),{send:i,state:s}=(()=>{let[e,t]=d(Kd,\"creating\");return{send:t,state:e}})(),l=c((async()=>{\"finalizing\"===s&&await e(),i(\"next\")}),[s,i,e]);o((()=>{let e;return\"done\"===s&&\"automatic\"===n.config.initiatedBy&&(e=setTimeout((()=>n.onClose?.()),hr)),()=>{e&&clearTimeout(e)}}),[s,n.config.initiatedBy,n.onClose]);let u=c((()=>{i(\"back\")}),[i]),h=c((()=>{a(cr.EMBEDDED_WALLET_RECOVERY_SELECTION_SCREEN)}),[r,a]);return\"creating\"===s?/*#__PURE__*/t(Hd,{...n,onSubmit:l,onBack:r===cr.EMBEDDED_WALLET_RECOVERY_SELECTION_SCREEN?h:void 0}):\"saving\"===s?/*#__PURE__*/t(jd,{...n,onSubmit:l,onBack:u}):\"confirming\"===s?/*#__PURE__*/t(bd,{...n,onSubmit:l,onBack:u}):\"finalizing\"===s?/*#__PURE__*/t(xd,{...n,onSubmit:l,onBack:u}):\"done\"===s?/*#__PURE__*/t(qd,{...n,onSubmit:l}):null};let Zd=\"0x0000000000000000000000000000000000000000\";const Jd=({destinationCurrency:e,...t})=>({tradeType:\"EXPECTED_OUTPUT\",originCurrency:Zd,destinationCurrency:e??Zd,...t});let Qd=\"https://api.relay.link\",Xd=\"https://api.testnets.relay.link\";const eu=async({input:e,isTestnet:t})=>{let n=await fetch((t?Xd:Qd)+\"/quote\",{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(e)}),r=await n.json();if(!(n.ok||\"string\"==typeof r.message&&r.message.startsWith(\"Invalid address\")))throw console.error(\"Relay error:\",r),Error(r.message??\"Error fetching quote from relay\");return r},tu=e=>{let t=e.steps[0]?.items?.[0];if(t)return{from:t.data.from,to:t.data.to,value:Number(t.data.value),chainId:Number(t.data.chainId),data:t.data.data}};function nu({transactionHash:e,wallet:t,isTestnet:n,bridgingStatus:r,setBridgingStatus:a,onSuccess:i,onFailure:s}){o((()=>{if(e&&t&&r){if([\"delayed\",\"waiting\",\"pending\"].includes(r)){let t=setInterval((async()=>{try{let t=await async function({transactionHash:e,isTestnet:t}){let n=await fetch((t?Xd:Qd)+\"/requests/v2?hash=\"+e),r=await n.json();if(!n.ok){if(\"message\"in r&&\"string\"==typeof r.message)throw Error(r.message);throw Error(\"Error fetching request from relay\")}return r.requests.at(0)?.status??\"pending\"}({transactionHash:e,isTestnet:n});a(t)}catch(e){console.error(e)}}),1e3);return()=>clearInterval(t)}\"success\"===r?i({transactionHash:e,wallet:t}):[\"refund\",\"failure\"].includes(r)&&s({error:new ru(e,n)})}}),[r,e,n,t])}class ru extends T{constructor(e,t){super(\"We were unable to complete the bridging transaction. Funds will be refunded on your wallet.\",void 0,A.TRANSACTION_FAILURE),this.relayLink=t?`https://testnets.relay.link/transaction/${e}`:`https://relay.link/transaction/${e}`}}const au=({error:r,backFn:a,onClick:i})=>{let{reset:o}=it(),{app:s}=lr(),l=((r,a)=>{let i=/*#__PURE__*/t(Ya,{height:38,width:38,stroke:\"var(--privy-color-error)\"});if(r instanceof ru)return{title:\"Transaction failed\",detail:/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(\"p\",{children:r.message}),/*#__PURE__*/e(\"p\",{children:[\"Check the\",\" \",/*#__PURE__*/t(su,{href:r.relayLink,target:\"_blank\",children:\"refund status\"}),\".\"]})]}),ctaText:\"Try again\",icon:i};if(r instanceof T)switch(r.privyErrorCode){case A.CLIENT_REQUEST_TIMEOUT:return{title:\"Timed out\",detail:r.message,ctaText:\"Try again\",icon:i};case A.INSUFFICIENT_BALANCE:return{title:\"Insufficient balance\",detail:r.message,ctaText:\"Try again\",icon:i};case A.TRANSACTION_FAILURE:return{title:\"Transaction failure\",detail:r.message,ctaText:\"Try again\",icon:i};default:return{title:\"Something went wrong\",detail:\"Try again later\",ctaText:\"Try again\",icon:i}}else{if(r instanceof Dc&&\"twilio_verification_failed\"===r.type)return{title:\"Something went wrong\",detail:r.message,ctaText:\"Try again\",icon:/*#__PURE__*/t(ri,{height:38,width:38,stroke:\"var(--privy-color-error)\"})};if(!(r instanceof M))return r instanceof N&&r.status&&[400,422].includes(r.status)?{title:\"Something went wrong\",detail:r.message,ctaText:\"Try again\",icon:i}:{title:\"Something went wrong\",detail:\"Try again later\",ctaText:\"Try again\",icon:i};switch(r.privyErrorCode){case A.INVALID_CAPTCHA:return{title:\"Something went wrong\",detail:\"Please try again.\",ctaText:\"Try again\",icon:i};case A.DISALLOWED_LOGIN_METHOD:return{title:\"Not allowed\",detail:r.message,ctaText:\"Try another method\",icon:i};case A.ALLOWLIST_REJECTED:return{title:a.errorTitle||\"You don't have access to this app\",detail:a.errorDetail||\"Have you been invited?\",ctaText:a.errorCtaText||\"Try another account\",icon:/*#__PURE__*/t(Hl,{style:{width:\"38px\",height:\"38px\",strokeWidth:\"1\",stroke:\"var(--privy-color-accent)\",fill:\"var(--privy-color-accent)\"}})};case A.CAPTCHA_FAILURE:return{title:\"Something went wrong\",detail:\"You did not pass CAPTCHA. Please try again.\",ctaText:\"Try again\",icon:/*#__PURE__*/t(\"span\",{})};case A.CAPTCHA_TIMEOUT:return{title:\"Something went wrong\",detail:\"Something went wrong! Please try again later.\",ctaText:\"Try again\",icon:/*#__PURE__*/t(\"span\",{})};case A.LINKED_TO_ANOTHER_USER:return{title:\"Authentication failed\",detail:\"This account has already been linked to another user.\",ctaText:\"Try again\",icon:i};case A.NOT_SUPPORTED:return{title:\"This region is not supported\",detail:\"SMS authentication from this region is not available\",ctaText:\"Try another method\",icon:i};case A.TOO_MANY_REQUESTS:return{title:\"Request failed\",detail:\"Too many attempts.\",ctaText:\"Try again later\",icon:i};default:return{title:\"Something went wrong\",detail:\"Try again later\",ctaText:\"Try again\",icon:i}}}})(r,s.allowlistConfig);/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{backFn:a}),/*#__PURE__*/e(iu,{children:[/*#__PURE__*/t(qs,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(sl,{color:\"var(--privy-color-error)\"}),l.icon]})}),/*#__PURE__*/e(ou,{children:[/*#__PURE__*/t(\"h3\",{children:l.title}),\"string\"==typeof l.detail?/*#__PURE__*/t(\"p\",{children:l.detail}):l.detail]}),/*#__PURE__*/t(st,{color:\"var(--privy-color-error)\",onClick:()=>{r instanceof M&&(r.privyErrorCode===A.INVALID_CAPTCHA&&o(),r.privyErrorCode===A.ALLOWLIST_REJECTED&&s.allowlistConfig.errorCtaLink)?window.location.href=s.allowlistConfig.errorCtaLink:i?.()},children:l.ctaText})]})]})};let iu=/*#__PURE__*/ja.div.withConfig({displayName:\"ConnectContainer\",componentId:\"sc-f1b9e2cb-0\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;padding-bottom:16px;\"]),ou=/*#__PURE__*/ja.div.withConfig({displayName:\"GappedContainer\",componentId:\"sc-f1b9e2cb-1\"})([\"display:flex;flex-direction:column;gap:8px;\"]),su=/*#__PURE__*/ja.a.withConfig({displayName:\"Link\",componentId:\"sc-f1b9e2cb-2\"})([\"color:var(--privy-color-accent) !important;font-weight:600;\"]);const lu=({style:e,color:n,...r})=>/*#__PURE__*/t(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",fill:\"none\",viewBox:\"0 0 24 24\",strokeWidth:\"1.5\",stroke:n||\"currentColor\",style:{height:\"1.5rem\",width:\"1.5rem\",...e},...r,children:/*#__PURE__*/t(\"path\",{strokeLinecap:\"round\",strokeLinejoin:\"round\",d:\"M4.5 12.75l6 6 9-13.5\"})}),cu=n=>{let[r,a]=s(!1);/*#__PURE__*/return e(du,{color:n.color,onClick:()=>{a(!0),navigator.clipboard.writeText(n.text),setTimeout((()=>a(!1)),1500)},$justCopied:r,children:[r?/*#__PURE__*/t(lu,{style:{height:\"14px\",width:\"14px\"},strokeWidth:\"2\"}):/*#__PURE__*/t(Ut,{style:{height:\"14px\",width:\"14px\"}}),r?\"Copied\":\"Copy\",\" \",n.itemName?n.itemName:\"to Clipboard\"]})};let du=/*#__PURE__*/ja.button.withConfig({displayName:\"StyledCopytoClipboardButton\",componentId:\"sc-46f4187f-0\"})([\"display:flex;align-items:center;gap:6px;&&{margin:8px 2px;font-size:14px;color:\",\";font-weight:\",\";transition:color 350ms ease;:focus,:active{background-color:transparent;border:none;outline:none;box-shadow:none;}:hover{color:\",\";}:active{color:'var(--privy-color-foreground)';font-weight:medium;}@media (max-width:440px){margin:12px 2px;}}svg{width:14px;height:14px;}\"],(e=>e.$justCopied?\"var(--privy-color-foreground)\":e.color||\"var(--privy-color-foreground-3)\"),(e=>e.$justCopied?\"medium\":\"normal\"),(e=>e.$justCopied?\"var(--privy-color-foreground)\":\"var(--privy-color-foreground-2)\"));const uu=e=>{let[n,r]=s(!1);/*#__PURE__*/return t(hu,{color:e.color,href:e.url,target:\"_blank\",rel:\"noreferrer noopener\",onClick:()=>{r(!0),setTimeout((()=>r(!1)),1500)},justOpened:n,children:e.text})};let hu=/*#__PURE__*/ja.a.withConfig({displayName:\"StyledOpenLinkButton\",componentId:\"sc-4e695c83-0\"})([\"display:flex;align-items:center;gap:6px;&&{margin:8px 2px;font-size:14px;color:\",\";font-weight:\",\";transition:color 350ms ease;:focus,:active{background-color:transparent;border:none;outline:none;box-shadow:none;}:hover{color:\",\";}:active{color:'var(--privy-color-foreground)';font-weight:medium;}@media (max-width:440px){margin:12px 2px;}}svg{width:14px;height:14px;}\"],(e=>e.justOpened?\"var(--privy-color-foreground)\":e.color||\"var(--privy-color-foreground-3)\"),(e=>e.justOpened?\"medium\":\"normal\"),(e=>e.justOpened?\"var(--privy-color-foreground)\":\"var(--privy-color-foreground-2)\"));const pu=({style:n,...r})=>/*#__PURE__*/e(\"svg\",{width:\"1000\",height:\"1000\",viewBox:\"0 0 1000 1000\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",style:{height:\"24px\",...n},...r,children:[/*#__PURE__*/t(\"rect\",{width:\"1000\",height:\"1000\",rx:\"200\",fill:\"#855DCD\"}),/*#__PURE__*/t(\"path\",{d:\"M257.778 155.556H742.222V844.444H671.111V528.889H670.414C662.554 441.677 589.258 373.333 500 373.333C410.742 373.333 337.446 441.677 329.586 528.889H328.889V844.444H257.778V155.556Z\",fill:\"white\"}),/*#__PURE__*/t(\"path\",{d:\"M128.889 253.333L157.778 351.111H182.222V746.667C169.949 746.667 160 756.616 160 768.889V795.556H155.556C143.283 795.556 133.333 805.505 133.333 817.778V844.444H382.222V817.778C382.222 805.505 372.273 795.556 360 795.556H355.556V768.889C355.556 756.616 345.606 746.667 333.333 746.667H306.667V253.333H128.889Z\",fill:\"white\"}),/*#__PURE__*/t(\"path\",{d:\"M675.556 746.667C663.283 746.667 653.333 756.616 653.333 768.889V795.556H648.889C636.616 795.556 626.667 805.505 626.667 817.778V844.444H875.556V817.778C875.556 805.505 865.606 795.556 853.333 795.556H848.889V768.889C848.889 756.616 838.94 746.667 826.667 746.667V351.111H851.111L880 253.333H702.222V746.667H675.556Z\",fill:\"white\"})]});let mu=\"#8a63d2\";let yu=/*#__PURE__*/ja.div.withConfig({displayName:\"ConnectContainer\",componentId:\"sc-d15a94a3-0\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;margin-left:27px;margin-right:27px;gap:24px;\"]),gu=/*#__PURE__*/ja.div.withConfig({displayName:\"ConnectContainerButton\",componentId:\"sc-d15a94a3-1\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;\"]),fu=\"#8a63d2\";let wu=/*#__PURE__*/ja.div.withConfig({displayName:\"ConnectContainer\",componentId:\"sc-6e2c96cd-0\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;margin-left:27px;margin-right:27px;gap:24px;\"]),vu=/*#__PURE__*/ja.div.withConfig({displayName:\"ConnectContainerButton\",componentId:\"sc-6e2c96cd-1\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;\"]);function Cu({title:e}){let{currentScreen:n,navigateBack:r,navigate:a,data:i,setModalData:o}=lr();/*#__PURE__*/return t(ot,{title:e,backFn:n===cr.FUNDING_MANUAL_TRANSFER_SCREEN?r:n===i?.funding?.methodScreen?i.funding.comingFromSendTransactionScreen?()=>a(cr.EMBEDDED_WALLET_SEND_TRANSACTION_SCREEN):void 0:i?.funding?.methodScreen?()=>{let e=i.funding;e.usingDefaultFundingMethod&&(e.usingDefaultFundingMethod=!1),o({funding:e}),a(e.methodScreen)}:void 0})}const Eu=({size:n})=>/*#__PURE__*/t(Tu,{$size:n,children:/*#__PURE__*/e(bu,{children:[/*#__PURE__*/t(Au,{}),/*#__PURE__*/t(_u,{})]})});let Tu=/*#__PURE__*/ja.div.withConfig({displayName:\"LoadingContainer\",componentId:\"sc-3ddaba1c-0\"})([\"--spinner-size:\",\";display:flex;justify-content:center;align-items:center;flex-grow:1;@media all and (display-mode:standalone){margin-bottom:30px;}\"],(e=>e.$size?e.$size:\"96px\")),bu=/*#__PURE__*/ja.div.withConfig({displayName:\"SpinnerContainer\",componentId:\"sc-3ddaba1c-1\"})([\"position:relative;height:var(--spinner-size);width:var(--spinner-size);opacity:1;animation:fadein 200ms ease;\"]),Au=/*#__PURE__*/ja.div.withConfig({displayName:\"CircleFixed\",componentId:\"sc-3ddaba1c-2\"})([\"position:absolute;top:0;right:0;bottom:0;left:0;width:var(--spinner-size);height:var(--spinner-size);&&{border:4px solid #f1f2f9;border-radius:50%;}\"]),_u=/*#__PURE__*/ja.div.withConfig({displayName:\"CircleRotate\",componentId:\"sc-3ddaba1c-3\"})([\"position:absolute;top:0;right:0;bottom:0;left:0;width:var(--spinner-size);height:var(--spinner-size);animation:spin 1200ms linear infinite;&&{border:4px solid;border-color:#cbcde1 transparent transparent transparent;border-radius:50%;}@keyframes spin{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}\"]);const ku=({enabled:e=!0}={})=>{let{showFiatPrices:t,getUsdPriceForSol:n}=x(),[r,a]=s(!0),[i,l]=s(void 0),[c,d]=s(void 0);return o((()=>{(async()=>{if(t&&e)try{a(!0);let e=await n();e?d(e):l(Error(\"Unable to fetch SOL price\"))}catch(e){l(e)}finally{a(!1)}else a(!1)})()}),[]),{solPrice:c,isSolPriceLoading:r,solPriceError:i}};function Iu(e){let{tokenPrice:t,isTokenPriceLoading:n,tokenPriceError:r}=(e=>{let{showFiatPrices:t,getUsdTokenPrice:n,chains:r}=x(),[a,i]=s(!0),[l,c]=s(void 0),[d,u]=s(void 0);return o((()=>{e||=Cr;let a=vr(r).find((t=>t.id===Number(e)));(async()=>{if(t){if(!a)return i(!1),void c(Error(`Unable to fetch token price on chain id ${e}`));try{i(!0);let e=await n(a);e?u(e):c(Error(`Unable to fetch token price on chain id ${a.id}`))}catch(e){c(e)}finally{i(!1)}}else i(!1)})()}),[e]),{tokenPrice:d,isTokenPriceLoading:a,tokenPriceError:l}})(\"solana\"===e?-1:e),{solPrice:a,isSolPriceLoading:i,solPriceError:l}=ku({enabled:\"solana\"===e});return\"solana\"===e?{tokenPrice:a,isTokenPriceLoading:i,tokenPriceError:l}:{tokenPrice:t,isTokenPriceLoading:n,tokenPriceError:r}}const Nu=(e,t=0)=>{let n=e[t],r=e[t+7];if(!n||!r)throw Error(`Buffer offset out of range: first: ${n}, last: ${r}.`);return(BigInt(e[t+4]+256*e[t+5]+65536*e[t+6]+(r<<24))<<32n)+BigInt(n+256*e[++t]+65536*e[++t]+16777216*e[++t])};async function xu(e){try{return await e}catch{}}let Su=new Intl.NumberFormat(void 0,{style:\"currency\",currency:\"USD\",maximumFractionDigits:2});function Ru(e,t=6,n=!1,r=!1){let a=(parseFloat(e.toString())/1e9).toFixed(t).replace(/0+$/,\"\").replace(/\\.$/,\"\"),i=r?\"\":\" SOL\";return n?`${a}${i}`:`${\"0\"===a?\"<0.001\":a}${i}`}function Ou(e,t){let n=parseFloat(e.toString())/1e9,r=Su.format(t*n);return\"$0.00\"===r?\"<$0.01\":r}function Wu({amount:e,fee:t,tokenPrice:n}){let r=BigInt(1e9*parseFloat(e)),a=r+t;return{fundingAmountInBaseUnit:r,fundingAmountInUsd:n?Ou(r,n):void 0,totalPriceInUsd:n?Ou(a,n):void 0,totalPriceInNativeCurrency:Ru(a),feePriceInNativeCurrency:Ru(t),feePriceInUsd:n?Ou(t,n):void 0}}function Mu(e){return\"version\"in e}function Pu(e,t,n){return{signature:e,parsedTransaction:n??null,signedTransaction:t,fees:BigInt(n?.meta?.fee||0)}}async function Lu({tx:e,connection:t,client:n}){let r=Mu(e)?e.message:e.compileMessage(),a=r.staticAccountKeys[0]?.toBase58()??\"\",i=await async function(e,t){return BigInt((Mu(e)?(await t.getFeeForMessage(e.message)).value:await e.getEstimatedFee(t))??0)}(e,t),o={},s={},l=[];for(let e of r.compiledInstructions){let a=r.staticAccountKeys[e.programIdIndex]?.toBase58()||\"\";if(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"!==a&&\"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"!==a)if(\"11111111111111111111111111111111\"!==a)if(\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"!==a)l.push({type:\"unknown\",program:a});else{let t=await xu(function(e,t){let[n,r,a,i]=e.accountKeyIndexes.map((e=>t.staticAccountKeys[e]));if(!(n&&r&&a&&i))throw Error(\"Failed to parse ATA creation instruction\");return{type:\"ata-creation\",payer:n.toBase58(),ata:r.toBase58(),owner:a.toBase58(),mint:i.toBase58()}}(e,r));if(!t)continue;l.push(t),s[t.ata]={owner:t.owner,mint:t.mint}}else{let t=await xu(Fu(e,r));if(!t)continue;l.push(t)}else{let a=await xu(Uu(e,r,t,n,o,s));if(!a)continue;l.push(a),o[a.token.address]=a.token,s[a.fromAta]??={owner:a.fromAccount,mint:a.token.address},a.toAccount&&(s[a.toAta]??={owner:a.toAccount,mint:a.token.address})}}let c=l.filter((({type:e})=>[\"spl-transfer\",\"sol-transfer\"].includes(e)));return{spender:a,fee:i,instructions:c.length?c:l}}function Du(e,t){try{return function(e,t=0){let n=0n;for(let r=0;r<8;r++)n|=BigInt(e[t+r])<<BigInt(8*r);return n}(e,t)}catch{}try{return e.readBigInt64LE(t)}catch{}let n=Buffer.from(e);try{return Nu(n)}catch{}try{return n.subarray(t).readBigInt64LE()}catch{}try{return n.readBigInt64LE(t)}catch{}return 0n}async function Uu(e,t,n,r,a,i){let o,s,[l,c,d]=e.accountKeyIndexes.map((e=>t.staticAccountKeys[e]));if(!l||!c||!d)throw Error(\"Failed to parse SPL transfer instruction\");let u=\"\",h=i[c.toBase58()];if(h)o=h.owner,u=h.mint;else{let e=await n.getParsedAccountInfo(c,\"confirmed\"),t=e.value?.data;o=t?.parsed?.info?.owner,u=t?.parsed?.info?.mint??\"\",s=t?.parsed?.info?.tokenAmount?.decimals}if(!u){let e=await n.getParsedAccountInfo(l,\"confirmed\"),t=e.value?.data;u=t?.parsed?.info?.mint??\"\"}let p=a[u];if(u&&!p){let e=await r.getSplTokenMetadata({mintAddress:u,cluster:Er(n.rpcEndpoint)});e&&(p={address:u,symbol:e.symbol,decimals:e.decimals})}let m=p?.symbol??\"\";s??=p?.decimals??9;let y=Du(e.data,1);return{type:\"spl-transfer\",fromAta:l.toBase58(),fromAccount:d.toBase58(),toAta:c.toBase58(),toAccount:o,value:y,token:{symbol:m,decimals:s,address:u}}}async function Fu(e,t){let[n,r]=e.accountKeyIndexes.map((e=>t.staticAccountKeys[e]));if(!n||!r)throw Error(\"Failed to parse SOL transfer instruction\");let a=Du(e.data,4);return{type:\"sol-transfer\",fromAccount:n.toBase58(),toAccount:r.toBase58(),value:a,token:{symbol:\"SOL\",decimals:9}}}const Bu=({chains:e,appId:t,address:n,rpcConfig:r})=>Promise.all(e.map((async e=>{let a=ka({chain:e,transport:Ia(Ba(e,r,t))});return{balance:await a.getBalance({address:n}).catch((()=>0n)),chain:e}}))),zu=/*#__PURE__*/ja.span.withConfig({displayName:\"LabelSm\",componentId:\"sc-6c002d6-0\"})([\"color:var(--privy-color-foreground-3);font-size:0.875rem;font-weight:400;line-height:1.375rem;\"]),Hu=/*#__PURE__*/ja(zu).withConfig({displayName:\"LabelSmPrimary\",componentId:\"sc-6c002d6-1\"})([\"color:var(--privy-color-accent);\"]),Vu=/*#__PURE__*/ja.span.withConfig({displayName:\"Value\",componentId:\"sc-72aa026-0\"})([\"color:var(--privy-color-foreground);font-size:0.875rem;font-weight:500;line-height:1.375rem;word-break:break-all;text-align:right;\",\"\"],Vt),$u=({balance:e,className:n,chain:r})=>/*#__PURE__*/t($t,{className:n,$state:void 0,children:/*#__PURE__*/t(ju,{balance:e,chain:r})}),ju=({balance:r,chain:a})=>/*#__PURE__*/e(n,{children:[/*#__PURE__*/e(Gu,{children:[/*#__PURE__*/t(Ku,{chainId:\"id\"in a?a.id:\"solana\"}),/*#__PURE__*/t(Vu,{children:a.name})]}),/*#__PURE__*/e(vt,{isLoading:!1,isPulsing:!1,color:\"gray\",children:[/*#__PURE__*/t(qu,{children:/*#__PURE__*/t(Za,{})}),r]})]});let Gu=/*#__PURE__*/ja.div.withConfig({displayName:\"Container\",componentId:\"sc-6d3c340d-0\"})([\"display:flex;align-items:center;\"]),qu=/*#__PURE__*/ja.div.withConfig({displayName:\"IconContainer\",componentId:\"sc-6d3c340d-1\"})([\"height:0.75rem;width:0.75rem;margin-right:0.2rem;\"]),Ku=/*#__PURE__*/ja(jt).withConfig({displayName:\"StyledNetworkIcon\",componentId:\"sc-6d3c340d-2\"})([\"height:1.25rem;width:1.25rem;display:inline-block;margin-right:0.5rem;border-radius:4px;\"]);const Yu=({options:n,onSelect:r,selected:a,className:i})=>/*#__PURE__*/e(Fi,{as:Zu,children:[/*#__PURE__*/e(Bi,{as:eh,children:[/*#__PURE__*/t(ju,{balance:a.balance,chain:a.chain}),/*#__PURE__*/t(Xu,{height:16})]}),/*#__PURE__*/t(zi,{as:Ju,className:i,children:n.map(((e,n)=>/*#__PURE__*/t(Hi,{as:Qu,onClick:()=>r(n),children:/*#__PURE__*/t(ju,{balance:e.balance,chain:e.chain})},n)))})]});let Zu=/*#__PURE__*/ja.div.withConfig({displayName:\"Wrapper\",componentId:\"sc-7924b61-0\"})([\"width:100%;position:relative;\"]),Ju=/*#__PURE__*/ja.div.withConfig({displayName:\"Popover\",componentId:\"sc-7924b61-1\"})([\"width:100%;margin-top:0.5rem;position:absolute;background-color:var(--privy-color-background);border-radius:var(--privy-border-radius-md);overflow-x:hidden;overflow-y:auto;box-shadow:0px 1px 2px 0px rgba(16,24,40,0.05);max-height:11.75rem;&&{border:solid 1px var(--privy-color-foreground-4);}z-index:1;\"]),Qu=/*#__PURE__*/ja.button.withConfig({displayName:\"Button\",componentId:\"sc-7924b61-2\"})([\"width:100%;display:flex;justify-content:space-between;&&{padding:1rem;}:not(:last-child){border-bottom:solid 1px var(--privy-color-foreground-4);}:hover{background:var(--privy-color-background-2);}\"]),Xu=/*#__PURE__*/ja(qi).withConfig({displayName:\"StyledChevronIcon\",componentId:\"sc-7924b61-3\"})([\"height:1rem;margin-left:0.5rem;\"]),eh=/*#__PURE__*/ja.button.withConfig({displayName:\"StyledMenuButton\",componentId:\"sc-7924b61-4\"})([\"\",\" span{margin-left:auto;}\",\"{transition:rotate 100ms ease-in;}&[aria-expanded='true']{\",\"{rotate:-180deg;}}\"],Gt,Xu,Xu);const th=({style:e,...n})=>/*#__PURE__*/t(\"svg\",{x:0,y:0,width:\"65\",height:\"64\",viewBox:\"0 0 65 64\",style:{height:\"64px\",width:\"65px\",...e},fill:\"currentColor\",xmlns:\"http://www.w3.org/2000/svg\",...n,children:/*#__PURE__*/t(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M3.71369 17.5625V10.375C3.71369 6.44625 6.85845 3.25 10.7238 3.25H17.7953C18.6783 3.25 19.3941 2.52244 19.3941 1.625C19.3941 0.727562 18.6783 0 17.7953 0H10.7238C5.09529 0 0.516113 4.65419 0.516113 10.375V17.5625C0.516113 18.4599 1.23194 19.1875 2.1149 19.1875C2.99787 19.1875 3.71369 18.4599 3.71369 17.5625ZM17.7953 60.7501C18.6783 60.7501 19.3941 61.4777 19.3941 62.3751C19.3941 63.2726 18.6783 64.0001 17.7953 64.0001H10.7238C5.09529 64.0001 0.516113 59.3459 0.516113 53.6251V46.4376C0.516113 45.5402 1.23194 44.8126 2.1149 44.8126C2.99787 44.8126 3.71369 45.5402 3.71369 46.4376V53.6251C3.71369 57.5538 6.85845 60.7501 10.7238 60.7501H17.7953ZM63.4839 46.4376V53.6251C63.4839 59.3459 58.9048 64.0001 53.2763 64.0001H46.2047C45.3217 64.0001 44.6059 63.2726 44.6059 62.3751C44.6059 61.4777 45.3217 60.7501 46.2047 60.7501H53.2763C57.1416 60.7501 60.2864 57.5538 60.2864 53.6251V46.4376C60.2864 45.5402 61.0022 44.8126 61.8851 44.8126C62.7681 44.8126 63.4839 45.5402 63.4839 46.4376ZM63.4839 10.375V17.5625C63.4839 18.4599 62.7681 19.1875 61.8851 19.1875C61.0022 19.1875 60.2864 18.4599 60.2864 17.5625V10.375C60.2864 6.44625 57.1416 3.25 53.2763 3.25H46.2047C45.3217 3.25 44.6059 2.52244 44.6059 1.625C44.6059 0.727562 45.3217 0 46.2047 0H53.2763C58.9048 0 63.4839 4.65419 63.4839 10.375ZM43.0331 47.3022C43.7067 46.6698 43.7483 45.6022 43.1262 44.9176C42.5039 44.233 41.4536 44.1906 40.78 44.823C38.3832 47.0732 35.265 48.3125 31.9997 48.3125C28.7344 48.3125 25.6162 47.0732 23.2194 44.823C22.5457 44.1906 21.4955 44.233 20.8732 44.9176C20.251 45.6022 20.2927 46.6698 20.9663 47.3022C23.9784 50.1301 27.8968 51.6875 31.9997 51.6875C36.1026 51.6875 40.021 50.1301 43.0331 47.3022ZM35.3207 24.1249V36.1249C35.3207 38.5029 33.4173 40.4374 31.0777 40.4374H29.7249C28.8079 40.4374 28.0646 39.6819 28.0646 38.7499C28.0646 37.8179 28.8079 37.0624 29.7249 37.0624H31.0777C31.5863 37.0624 32.0001 36.6419 32.0001 36.1249V24.1249C32.0001 23.1929 32.7434 22.4374 33.6604 22.4374C34.5774 22.4374 35.3207 23.1929 35.3207 24.1249ZM46.7581 28.8437V24.0312C46.7581 23.151 46.056 22.4374 45.19 22.4374C44.324 22.4374 43.622 23.151 43.622 24.0312V28.8437C43.622 29.7239 44.324 30.4374 45.19 30.4374C46.056 30.4374 46.7581 29.7239 46.7581 28.8437ZM17.6109 28.8437C17.6109 29.7239 18.313 30.4374 19.1789 30.4374C20.0449 30.4374 20.747 29.7239 20.747 28.8437V24.0312C20.747 23.151 20.0449 22.4374 19.1789 22.4374C18.313 22.4374 17.6109 23.151 17.6109 24.0312V28.8437Z\"})}),nh=({style:n,...r})=>/*#__PURE__*/e(\"svg\",{x:0,y:0,width:\"65\",height:\"64\",viewBox:\"0 0 65 64\",style:{height:\"64px\",width:\"65px\",...n},xmlns:\"http://www.w3.org/2000/svg\",...r,children:[/*#__PURE__*/e(\"g\",{clipPath:\"url(#clip0_113_33841)\",children:[/*#__PURE__*/t(\"path\",{d:\"M39.1193 0.943398C34.636 -0.174912 29.9185 -0.334713 25.328 0.656273C24.9732 0.732859 24.7477 1.08253 24.8243 1.43729C24.9009 1.79205 25.2506 2.01756 25.6053 1.94097C30.0015 0.991934 34.53 1.14842 38.8375 2.22802C49.1385 4.80983 57.7129 12.5548 60.9786 22.6718C62.2416 26.5843 62.7781 30.7505 62.8855 35.1167C62.8945 35.4795 63.1958 35.7664 63.5586 35.7575C63.9215 35.7485 64.2083 35.4472 64.1994 35.0843C64.0905 30.6582 63.5477 26.3849 62.2536 22.3432C58.8621 11.7515 49.9005 3.63265 39.1193 0.943398Z\"}),/*#__PURE__*/t(\"path\",{d:\"M21.9931 2.93163C22.343 2.83511 22.5484 2.47325 22.4518 2.12339C22.3553 1.77352 21.9935 1.56815 21.6436 1.66466C16.8429 2.98903 10.0898 7.56519 5.91628 13.6786C5.91465 13.681 5.91304 13.6834 5.91145 13.6858C2.24684 19.2083 -0.0503572 26.1484 0.591012 32.8828C0.591623 32.8892 0.592328 32.8956 0.593127 32.902C0.746837 34.1317 1.00488 35.3591 1.26323 36.5879C1.80735 39.1761 2.35282 41.7706 1.92765 44.4064C1.86986 44.7647 2.11347 45.102 2.47177 45.1598C2.83007 45.2176 3.16738 44.974 3.22518 44.6157C3.66961 41.8605 3.11776 39.173 2.56581 36.4851C2.31054 35.2419 2.05525 33.9987 1.89847 32.7486C1.29525 26.3851 3.46802 19.7466 7.00418 14.416C11.0189 8.5373 17.5201 4.16562 21.9931 2.93163Z\"}),/*#__PURE__*/t(\"path\",{d:\"M30.6166 4.39985C38.8671 3.89603 47.1159 7.26314 52.6556 13.7139C52.8921 13.9893 52.8605 14.4042 52.5852 14.6406C52.3099 14.8771 51.895 14.8455 51.6585 14.5702C46.3904 8.43576 38.541 5.23144 30.6927 5.71195C30.6899 5.71212 30.6871 5.71227 30.6843 5.71241C20.7592 6.19265 11.4643 12.9257 8.04547 22.3603C7.92183 22.7016 7.54498 22.8779 7.20375 22.7543C6.86253 22.6306 6.68616 22.2538 6.80981 21.9126C10.4114 11.9735 20.1717 4.90702 30.6166 4.39985Z\"}),/*#__PURE__*/t(\"path\",{d:\"M54.6576 16.5848C54.4553 16.2836 54.047 16.2033 53.7457 16.4057C53.4444 16.608 53.3642 17.0163 53.5665 17.3176C56.6376 21.8904 57.9074 26.8665 58.4094 32.7717C58.4401 33.1333 58.7582 33.4016 59.1199 33.3708C59.4815 33.3401 59.7497 33.022 59.719 32.6604C59.206 26.6261 57.8965 21.4076 54.6576 16.5848Z\"}),/*#__PURE__*/t(\"path\",{d:\"M59.2796 35.4504C59.6419 35.4277 59.9539 35.703 59.9765 36.0653C60.2242 40.0279 60.2265 44.5112 59.7881 47.8243C59.7405 48.1841 59.4102 48.4372 59.0504 48.3896C58.6906 48.342 58.4376 48.0117 58.4852 47.6519C58.9077 44.4586 58.91 40.0704 58.6648 36.1473C58.6421 35.785 58.9174 35.473 59.2796 35.4504Z\"}),/*#__PURE__*/t(\"path\",{d:\"M7.05311 25.5432C7.13829 25.1904 6.92135 24.8354 6.56855 24.7502C6.21576 24.665 5.86071 24.882 5.77553 25.2348C5.2932 27.2325 5.0428 29.2847 5.03288 31.3388C5.02266 33.4559 5.41742 35.5225 5.81234 37.5899C6.1354 39.2811 6.45855 40.9728 6.5602 42.6932C6.69373 44.9531 6.21839 47.2163 5.39698 49.3703C5.26766 49.7094 5.43774 50.0891 5.77685 50.2184C6.11596 50.3477 6.4957 50.1777 6.62502 49.8386C7.49325 47.5617 8.01954 45.1092 7.87221 42.6157C7.77126 40.9071 7.44813 39.2252 7.12512 37.5439C6.73099 35.4925 6.33704 33.442 6.34716 31.3451C6.35659 29.3933 6.59455 27.4425 7.05311 25.5432Z\"}),/*#__PURE__*/t(\"path\",{d:\"M24.2964 10.94C24.4317 11.2768 24.2683 11.6595 23.9315 11.7947C17.1187 14.5307 12.0027 20.7047 10.959 27.9852C10.523 31.0269 10.9941 34.0398 11.465 37.052C11.7303 38.7483 11.9954 40.4443 12.0985 42.1451C12.3221 45.833 11.902 49.8839 9.50192 53.5696C9.30387 53.8737 8.89677 53.9597 8.59264 53.7617C8.28851 53.5636 8.20251 53.1565 8.40056 52.8524C10.5873 49.4944 11.0012 45.7644 10.7867 42.2246C10.6821 40.499 10.4185 38.7833 10.1552 37.0686C9.68265 33.9923 9.21067 30.9195 9.65804 27.7987C10.7724 20.025 16.221 13.4748 23.4417 10.5751C23.7785 10.4399 24.1612 10.6032 24.2964 10.94Z\"}),/*#__PURE__*/t(\"path\",{d:\"M47.3662 14.6814C41.9915 9.64741 34.2017 7.89046 27.122 9.4433C26.7675 9.52105 26.5432 9.87147 26.6209 10.226C26.6987 10.5805 27.0491 10.8048 27.4036 10.7271C34.1075 9.25665 41.4426 10.934 46.4677 15.6406C50.7033 19.6077 53.1628 25.38 53.8066 31.6779C53.8435 32.0389 54.1661 32.3017 54.5272 32.2648C54.8883 32.2279 55.151 31.9053 55.1141 31.5442C54.4456 25.0047 51.8822 18.9111 47.3662 14.6814Z\"}),/*#__PURE__*/t(\"path\",{d:\"M54.9766 34.6738C55.3376 34.6368 55.6604 34.8994 55.6975 35.2604C56.3216 41.337 56.0526 47.9003 55.1104 54.2496C55.0571 54.6086 54.7229 54.8565 54.3639 54.8032C54.0049 54.7499 53.7571 54.4157 53.8103 54.0567C54.7394 47.7957 55.001 41.3439 54.39 35.3947C54.353 35.0336 54.6156 34.7109 54.9766 34.6738Z\"}),/*#__PURE__*/t(\"path\",{d:\"M32.0659 13.3553C21.9959 13.3553 13.814 21.3892 13.814 31.3219C13.814 32.3829 13.9081 33.4225 14.0876 34.4334C14.1511 34.7907 14.4922 35.029 14.8495 34.9655C15.2069 34.9021 15.4451 34.561 15.3817 34.2036C15.2155 33.2677 15.1283 32.305 15.1283 31.3219C15.1283 22.1352 22.7014 14.6696 32.0659 14.6696C36.2978 14.6696 40.1642 16.1949 43.1319 18.7152C43.4086 18.9501 43.8233 18.9163 44.0582 18.6396C44.2931 18.363 44.2593 17.9483 43.9827 17.7134C40.7847 14.9975 36.6188 13.3553 32.0659 13.3553Z\"}),/*#__PURE__*/t(\"path\",{d:\"M45.455 20.1635C45.717 19.9123 46.133 19.921 46.3842 20.183C49.2843 23.2072 50.2126 27.9605 50.8269 31.9494C51.5188 36.4426 51.6244 40.826 51.6244 42.8585C51.6244 43.2214 51.3302 43.5156 50.9673 43.5156C50.6044 43.5156 50.3101 43.2214 50.3101 42.8585C50.3101 40.8589 50.2055 36.5497 49.5279 32.1494C48.9577 28.4462 48.1356 23.9082 45.4356 21.0927C45.1844 20.8307 45.1931 20.4147 45.455 20.1635Z\"}),/*#__PURE__*/t(\"path\",{d:\"M51.4576 46.6219C51.4864 46.2601 51.2165 45.9435 50.8547 45.9146C50.493 45.8858 50.1763 46.1557 50.1474 46.5175C49.8247 50.5654 49.403 54.6088 48.5474 58.3439C48.4663 58.6977 48.6874 59.0502 49.0412 59.1312C49.3949 59.2123 49.7474 58.9912 49.8285 58.6374C50.7067 54.8039 51.134 50.6806 51.4576 46.6219Z\"}),/*#__PURE__*/t(\"path\",{d:\"M15.1454 36.852C15.5015 36.7819 15.847 37.0137 15.9171 37.3698C17.3066 44.4257 16.3467 50.8355 12.6672 56.4502C12.4682 56.7537 12.0609 56.8385 11.7573 56.6396C11.4538 56.4407 11.369 56.0333 11.5679 55.7298C15.0299 50.4469 15.9617 44.3985 14.6276 37.6238C14.5575 37.2677 14.7893 36.9221 15.1454 36.852Z\"}),/*#__PURE__*/t(\"path\",{d:\"M32.0659 17.631C25.5291 17.631 19.1165 22.691 18.462 29.0504C18.1754 31.8345 18.578 34.5769 18.9807 37.3204C19.3323 39.7159 19.684 42.1124 19.5772 44.5381C19.3328 50.0898 17.7039 54.6726 14.905 58.4471C14.6888 58.7386 14.7499 59.1502 15.0414 59.3663C15.333 59.5825 15.7445 59.5214 15.9607 59.2299C18.9293 55.2266 20.6354 50.386 20.8903 44.5959C20.9966 42.1811 20.6438 39.7923 20.2912 37.4051C19.888 34.6752 19.4851 31.9473 19.7694 29.1849C20.3444 23.5983 26.0946 18.9453 32.0659 18.9453C34.851 18.9453 42.057 20.4534 44.3492 27.9205C45.7856 32.5998 46.1774 38.9326 45.8295 45.0849C45.4816 51.2364 44.3994 57.12 42.9442 60.8928C42.8136 61.2314 42.9822 61.6118 43.3208 61.7424C43.6594 61.873 44.0398 61.7044 44.1704 61.3658C45.6929 57.4186 46.7895 51.386 47.1417 45.1591C47.4938 38.9329 47.1068 32.4249 45.6056 27.5348C43.0612 19.2461 35.0851 17.631 32.0659 17.631Z\"}),/*#__PURE__*/t(\"path\",{d:\"M21.9529 56.4512C22.2569 56.6494 22.3426 57.0566 22.1444 57.3606C21.7369 57.9854 21.3784 58.6391 21.0199 59.2928C20.6614 59.9465 20.3028 60.6004 19.8953 61.2253C19.697 61.5293 19.2898 61.615 18.9858 61.4167C18.6819 61.2184 18.5962 60.8113 18.7944 60.5073C19.2019 59.8825 19.5604 59.2288 19.9189 58.5751C20.2774 57.9213 20.636 57.2675 21.0435 56.6426C21.2418 56.3386 21.649 56.2529 21.9529 56.4512Z\"}),/*#__PURE__*/t(\"path\",{d:\"M27.5799 24.4525C27.8816 24.2508 27.9625 23.8426 27.7608 23.541C27.559 23.2393 27.1509 23.1583 26.8492 23.3601C24.247 25.1006 22.6505 27.494 22.6505 31.0002C22.6505 33.088 23.0203 34.7946 23.3997 36.5449C23.9674 39.1641 24.3524 41.7777 24.2832 44.468C24.1992 47.7349 23.56 50.7201 22.3313 53.564C22.1873 53.8971 22.3407 54.2839 22.6739 54.4278C23.0071 54.5718 23.3938 54.4184 23.5378 54.0852C24.8369 51.0784 25.509 47.9266 25.5971 44.5018C25.6689 41.7062 25.2732 38.9892 24.6845 36.267C24.3042 34.509 23.9648 32.9394 23.9648 31.0002C23.9648 27.9961 25.2863 25.9866 27.5799 24.4525Z\"}),/*#__PURE__*/t(\"path\",{d:\"M30.1447 22.1436C32.8717 21.5877 35.8061 22.2746 37.966 24.0228C41.8241 27.1455 42.3372 32.8403 42.753 37.4549L42.7742 37.69C43.3115 43.6385 42.6964 49.4163 41.4575 55.2186C41.3817 55.5736 41.0326 55.7999 40.6776 55.7241C40.3227 55.6483 40.0964 55.2991 40.1722 54.9442C41.3926 49.2288 41.9873 43.5885 41.4652 37.8082C41.4479 37.6169 41.4307 37.4228 41.4133 37.2264L41.4131 37.2235C41.0438 33.0534 40.5812 27.8304 37.1392 25.0444C35.2926 23.5498 32.7599 22.9518 30.4073 23.4314C30.0517 23.5039 29.7046 23.2744 29.6321 22.9188C29.5596 22.5632 29.7891 22.2161 30.1447 22.1436Z\"}),/*#__PURE__*/t(\"path\",{d:\"M40.5287 58.4885C40.6183 58.1368 40.4057 57.7791 40.054 57.6896C39.7023 57.6 39.3446 57.8126 39.2551 58.1643C38.8578 59.7247 38.2456 61.1333 37.4695 62.4301C37.2831 62.7415 37.3844 63.145 37.6958 63.3314C38.0072 63.5178 38.4108 63.4165 38.5972 63.1051C39.4336 61.7075 40.0977 60.1816 40.5287 58.4885Z\"}),/*#__PURE__*/t(\"path\",{d:\"M37.3152 48.9521C37.6756 48.9948 37.9332 49.3215 37.8906 49.682C37.2699 54.9267 35.8688 59.6042 33.6205 63.6613C33.4446 63.9787 33.0446 64.0934 32.7272 63.9175C32.4097 63.7416 32.295 63.3417 32.4709 63.0242C34.6226 59.1416 35.9811 54.6339 36.5854 49.5275C36.6281 49.1671 36.9548 48.9095 37.3152 48.9521Z\"}),/*#__PURE__*/t(\"path\",{d:\"M37.1798 30.6556C36.7242 28.2212 34.6349 26.3591 32.0985 26.3591C28.6638 26.3591 26.254 29.8212 27.1032 33.0422C28.54 38.7279 28.7759 44.2077 27.8032 49.4855L27.8025 49.4893C26.9584 54.228 25.3374 58.4908 23.1263 62.1031C22.9368 62.4127 23.0342 62.8172 23.3437 63.0067C23.6533 63.1962 24.0578 63.0988 24.2473 62.7893C26.5488 59.0292 28.2249 54.6109 29.0961 49.7218C30.106 44.2403 29.8558 38.5684 28.3765 32.7168L28.3748 32.7099C27.7378 30.3005 29.5133 27.6734 32.0985 27.6734C33.9641 27.6734 35.5393 29.0459 35.8871 30.8929C36.8436 36.4411 37.3418 41.5862 36.9871 46.016C36.9581 46.3778 37.2279 46.6945 37.5897 46.7235C37.9515 46.7525 38.2682 46.4827 38.2972 46.1209C38.6649 41.5294 38.1459 36.2576 37.1815 30.6648C37.1809 30.6617 37.1804 30.6586 37.1798 30.6556Z\"}),/*#__PURE__*/t(\"path\",{d:\"M30.1376 59.1171C30.4604 59.283 30.5876 59.6792 30.4217 60.002L28.6804 63.3906C28.5145 63.7134 28.1184 63.8406 27.7956 63.6747C27.4728 63.5088 27.3456 63.1127 27.5114 62.7899L29.2527 59.4013C29.4186 59.0785 29.8147 58.9513 30.1376 59.1171Z\"}),/*#__PURE__*/t(\"path\",{d:\"M32.5872 31.2892C32.5042 30.9359 32.1505 30.7168 31.7972 30.7998C31.4439 30.8828 31.2247 31.2365 31.3077 31.5898C33.5238 41.0232 33.2194 49.3066 30.5201 56.363C30.3905 56.702 30.5602 57.0819 30.8991 57.2115C31.2381 57.3412 31.618 57.1715 31.7477 56.8326C34.5622 49.475 34.8483 40.9141 32.5872 31.2892Z\"})]}),/*#__PURE__*/t(\"defs\",{children:/*#__PURE__*/t(\"clipPath\",{id:\"clip0_113_33841\",children:/*#__PURE__*/t(\"rect\",{width:\"64\",height:\"64\",fill:\"white\",transform:\"translate(0.483887)\"})})})]});let rh=({passkeys:n,expanded:r,onUnlink:a,onExpand:i})=>{let[o,l]=s([]),c=r?n.length:2,d=e=>e.authenticatorName?e.createdWithBrowser?`${e.authenticatorName} on ${e.createdWithBrowser}`:e.authenticatorName:e.createdWithBrowser?e.createdWithOs?`${e.createdWithBrowser} on ${e.createdWithOs}`:`${e.createdWithBrowser}`:\"Unknown device\";/*#__PURE__*/return e(\"div\",{children:[/*#__PURE__*/t(ph,{children:\"Your passkeys\"}),/*#__PURE__*/e(ch,{children:[n.slice(0,c).map((n=>/*#__PURE__*/e(gh,{children:[/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(mh,{children:d(n)}),/*#__PURE__*/e(yh,{children:[\"Last used: \",(n.latestVerifiedAt??n.verifiedAt).toLocaleString()]})]}),/*#__PURE__*/t(wh,{disabled:o.includes(n.credentialId),onClick:()=>(async e=>{l((t=>t.concat([e]))),await a(e),l((t=>t.filter((t=>t!==e))))})(n.credentialId),children:o.includes(n.credentialId)?/*#__PURE__*/t(qt,{}):/*#__PURE__*/t(to,{height:\"1.6em\"})})]},n.credentialId))),n.length>2&&!r&&/*#__PURE__*/t(lh,{onClick:i,children:\"View all\"})]})]})},ah=()=>/*#__PURE__*/e(ch,{children:[/*#__PURE__*/e(Nl,{children:[/*#__PURE__*/t(Il,{children:/*#__PURE__*/t(no,{})}),\"Log in with Touch ID, Face ID, or a security key.\"]}),/*#__PURE__*/e(Nl,{children:[/*#__PURE__*/t(Il,{children:/*#__PURE__*/t(Ci,{})}),\"More secure than a password.\"]}),/*#__PURE__*/e(Nl,{children:[/*#__PURE__*/t(Il,{children:/*#__PURE__*/t(eo,{})}),\"Takes seconds to set up and use.\"]})]});const ih=/*#__PURE__*/ja.div.withConfig({displayName:\"DoubleIconWrapper\",componentId:\"sc-302702bc-0\"})([\"display:flex;align-items:center;justify-content:center;width:180px;height:90px;border-radius:50%;svg + svg{margin-left:12px;}> svg{z-index:2;color:var(--privy-color-accent) !important;stroke:var(--privy-color-accent) !important;fill:var(--privy-color-accent) !important;}\"]);let oh=/*#__PURE__*/ja.div.withConfig({displayName:\"InputHelp\",componentId:\"sc-302702bc-1\"})([\"line-height:20px;height:20px;font-size:13px;color:\",\";display:flex;justify-content:flex-beginngin;width:100%;\"],(e=>e.$fail?\"var(--privy-color-error)\":\"var(--privy-color-foreground-3)\")),sh=/*#__PURE__*/Ga([\"&&{width:100%;font-size:0.875rem;line-height:1rem;@media (min-width:440px){font-size:14px;}display:flex;gap:12px;justify-content:center;padding:6px 8px;background-color:var(--privy-color-background);transition:background-color 200ms ease;color:var(--privy-color-accent) !important;:focus{outline:none;box-shadow:none;}}\"]);const lh=/*#__PURE__*/ja.button.withConfig({displayName:\"LinkButton\",componentId:\"sc-302702bc-2\"})([\"\",\"\"],sh);let ch=/*#__PURE__*/ja.div.withConfig({displayName:\"List\",componentId:\"sc-302702bc-3\"})([\"display:flex;flex-direction:column;align-items:stretch;gap:0.8rem;padding:0.5rem 0rem 0rem;flex-grow:1;width:100%;\"]),dh=/*#__PURE__*/ja.div.withConfig({displayName:\"ModalTitle\",componentId:\"sc-302702bc-4\"})([\"font-size:18px;line-height:18px;text-align:center;font-weight:600;\"]),uh=/*#__PURE__*/ja.div.withConfig({displayName:\"ModalSubTitle\",componentId:\"sc-302702bc-5\"})([\"font-size:0.875rem;text-align:center;margin-top:10px;\"]),hh=/*#__PURE__*/ja.div.withConfig({displayName:\"SectionSpacer\",componentId:\"sc-302702bc-6\"})([\"height:32px;\"]),ph=/*#__PURE__*/ja.div.withConfig({displayName:\"PasskeyListTitle\",componentId:\"sc-302702bc-7\"})([\"line-height:20px;height:20px;font-size:1em;font-weight:450;display:flex;justify-content:flex-beginning;width:100%;\"]),mh=/*#__PURE__*/ja.div.withConfig({displayName:\"PasskeyItemTitle\",componentId:\"sc-302702bc-8\"})([\"font-size:1em;line-height:1.3em;font-weight:500;color:var(--privy-color-foreground-2);padding:0.2em 0;\"]),yh=/*#__PURE__*/ja.div.withConfig({displayName:\"PasskeyItemSubtitle\",componentId:\"sc-302702bc-9\"})([\"font-size:0.875rem;line-height:1rem;color:#64668b;padding:0.2em 0;\"]),gh=/*#__PURE__*/ja.div.withConfig({displayName:\"PasskeyListItem\",componentId:\"sc-302702bc-10\"})([\"display:flex;align-items:center;justify-content:space-between;padding:1em;gap:10px;font-size:0.875rem;line-height:1rem;text-align:left;border-radius:8px;border:1px solid #e2e3f0 !important;width:100%;height:5em;\"]),fh=/*#__PURE__*/Ga([\":focus,:hover,:active{outline:none;}display:flex;width:2em;height:2em;justify-content:center;align-items:center;svg{color:var(--privy-color-error);}svg:hover{color:var(--privy-color-foreground-3);}\"]),wh=/*#__PURE__*/ja.button.withConfig({displayName:\"PasskeyItemUnlinkButton\",componentId:\"sc-302702bc-11\"})([\"\",\"\"],fh);const vh=/*#__PURE__*/ja.div.withConfig({displayName:\"FundingMethodContainer\",componentId:\"sc-eaaa12a-0\"})([\"display:flex;flex-direction:column;gap:12px;padding-top:24px;padding-bottom:24px;\"]),Ch=/*#__PURE__*/ja.div.withConfig({displayName:\"IconContainer\",componentId:\"sc-eaaa12a-1\"})([\"width:24px;height:24px;display:flex;justify-content:center;align-items:center;svg{border-radius:var(--privy-border-radius-sm);}\"]),Eh=/*#__PURE__*/ja.div.withConfig({displayName:\"FundingQuantityWrapper\",componentId:\"sc-eaaa12a-2\"})([\"display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:8px;\"]),Th=/*#__PURE__*/ja.div.withConfig({displayName:\"FundingQuantity\",componentId:\"sc-eaaa12a-3\"})([\"display:flex;align-items:center;gap:4px;width:100%;padding:0 16px;border-width:1px !important;border-radius:12px;cursor:text;&:focus-within{border-color:var(--privy-color-accent);}\"]),bh=/*#__PURE__*/ja.input.withConfig({displayName:\"FundingAmountInput\",componentId:\"sc-eaaa12a-5\"})([\"background-color:var(--privy-color-background);width:100%;&:focus{outline:none !important;border:none !important;box-shadow:none !important;}&&{font-size:26px;}\"]),Ah=/*#__PURE__*/ja(bh).withConfig({displayName:\"FundingAmountInputLarge\",componentId:\"sc-eaaa12a-6\"})([\"&&{font-size:42px;}\"]),_h=/*#__PURE__*/ja.div.withConfig({displayName:\"FundingCurrency\",componentId:\"sc-eaaa12a-8\"})([\"font-size:18px;\"]),kh=/*#__PURE__*/ja.div.withConfig({displayName:\"FundingDollars\",componentId:\"sc-eaaa12a-9\"})([\"font-size:12px;color:var(--privy-color-foreground-3);height:20px;\"]),Ih=/*#__PURE__*/ja.div.withConfig({displayName:\"InfoButtonText\",componentId:\"sc-eaaa12a-13\"})([\"\"]),Nh=/*#__PURE__*/ja.a.withConfig({displayName:\"InfoButtonLink\",componentId:\"sc-eaaa12a-14\"})([\"&&{color:var(--privy-color-accent);}cursor:pointer;\"]),xh=({displayName:r,errorMessage:a,configuredFundingChain:i,formattedBalance:o,fundingAmount:s,fundingCurrency:c,fundingAmountInUsd:d,options:u,selectedOption:h,isPreparing:p,isSubmitting:m,addressToFund:y,fundingWalletAddress:g,onSubmit:f,onSelect:w,onAmountChange:v})=>{let C=l(null);/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(Cu,{}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/t(St,{children:\"Transfer from another network\"}),/*#__PURE__*/e(Rt,{children:[\"You need more funds on the \",i.name,\" network. Bridge from another blockchain network.\"]}),/*#__PURE__*/e(Eh,{style:{marginTop:\"2rem\"},children:[/*#__PURE__*/e(Th,{onClick:()=>C.current?.focus(),children:[/*#__PURE__*/t(bh,{ref:C,value:s,onChange:e=>{let t=e.target.value;/^[0-9.]*$/.test(t)&&t.split(\".\").length-1<=1&&v(t)}}),/*#__PURE__*/t(_h,{children:c})]}),d&&/*#__PURE__*/t(kh,{children:d})]}),/*#__PURE__*/e(Kt,{style:{marginTop:\"1.5rem\"},children:[/*#__PURE__*/t(zu,{children:\"From\"}),/*#__PURE__*/t(zu,{children:Ei(g)})]}),/*#__PURE__*/t(Yu,{selected:{chain:h.chain,balance:Yt(h.balance,h.chain.nativeCurrency.symbol,3,!0)},options:u.map((({chain:e,balance:t})=>({chain:e,balance:Yt(t,e.nativeCurrency.symbol,3,!0)}))),onSelect:w}),/*#__PURE__*/e(Kt,{style:{marginTop:\"1.5rem\"},children:[/*#__PURE__*/t(zu,{children:\"To\"}),/*#__PURE__*/t(zu,{children:Ei(y)})]}),/*#__PURE__*/t($u,{chain:i,balance:o}),/*#__PURE__*/t(Zt,{style:{marginTop:\"1rem\"},children:a}),/*#__PURE__*/e(Jt,{style:{marginTop:\"1rem\"},loading:m||p,disabled:p||m,onClick:f,children:[\"Confirm with \",r]}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]})},Sh=({wallet:r,displayName:a,addressToFund:i,chainId:o,chainName:s,isBridging:l,isErc20Flow:c,totalPriceInNativeCurrency:d,totalPriceInUsd:u,gasPriceInNativeCurrency:h,gasPriceInUsd:p})=>{let m=ft(r.walletClientType);/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(Cu,{}),/*#__PURE__*/t(Eu,{}),/*#__PURE__*/t(Ft,{style:{marginTop:\"16px\"},children:/*#__PURE__*/t(pc,{icon:m?.image_url?.md,name:r.walletClientType})}),/*#__PURE__*/t(ql,{style:{marginTop:\"8px\",marginBottom:\"12px\"},title:`${l?\"Bridging\":\"Confirming\"} with ${a}`}),!l&&!c&&/*#__PURE__*/e(Qt,{children:[/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Total\"}),/*#__PURE__*/t(Vu,{children:u||d})]}),/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"To\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(lt,{address:i,showCopyIcon:!1})})]}),/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Network\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/e(Rh,{children:[/*#__PURE__*/t(jt,{chainId:o,height:16,width:16}),\" \",s]})})]}),h&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Estimated fee\"}),/*#__PURE__*/t(Vu,{children:p||h})]})]}),/*#__PURE__*/t(It,{height:24}),/*#__PURE__*/t(ct,{})]})};let Rh=/*#__PURE__*/ja.div.withConfig({displayName:\"NetworkColumn\",componentId:\"sc-ec6320ce-0\"})([\"display:flex;flex-direction:row;align-items:center;gap:4px;\"]);const Oh=[cr.FUNDING_METHOD_SELECTION_SCREEN,cr.FUNDING_TRANSFER_FROM_WALLET_SCREEN,cr.FUNDING_AWAITING_TRANSFER_FROM_EXTERNAL_WALLET_SCREEN,cr.FUNDING_AWAITING_TRANSFER_FROM_EXTERNAL_SOLANA_WALLET_SCREEN,cr.FUNDING_AWAITING_EVM_TO_SOL_BRIDGING_SCREEN,cr.FUNDING_AWAITING_SOL_TO_EVM_BRIDGING_SCREEN,cr.FUNDING_MANUAL_TRANSFER_SCREEN,cr.MOONPAY_STATUS_SCREEN],Wh={[cr.FUNDING_METHOD_SELECTION_SCREEN]:null,[cr.FUNDING_TRANSFER_FROM_WALLET_SCREEN]:\"external\",[cr.FUNDING_AWAITING_TRANSFER_FROM_EXTERNAL_WALLET_SCREEN]:\"external\",[cr.FUNDING_AWAITING_TRANSFER_FROM_EXTERNAL_SOLANA_WALLET_SCREEN]:\"external\",[cr.FUNDING_AWAITING_EVM_TO_SOL_BRIDGING_SCREEN]:\"external\",[cr.FUNDING_AWAITING_SOL_TO_EVM_BRIDGING_SCREEN]:\"external\",[cr.FUNDING_MANUAL_TRANSFER_SCREEN]:\"manual\",[cr.MOONPAY_STATUS_SCREEN]:\"moonpay\"},Mh=[{constant:!1,inputs:[{name:\"_to\",type:\"address\"},{name:\"_value\",type:\"uint256\"}],name:\"transfer\",outputs:[{name:\"\",type:\"bool\"}],payable:!1,stateMutability:\"nonpayable\",type:\"function\"}];let Ph=({status:r,onClickCta:a})=>{let{title:o,body:s,cta:l}=i((()=>(e=>{switch(e){case\"success\":return{title:\"You've funded your account!\",body:\"It may take a few minutes for the assets to appear.\",cta:\"Continue\"};case\"pending-after-flow\":return{title:\"In Progress\",body:\"Almost done. Retrieving transaction status from Coinbase\",cta:\"\"};case\"error\":case\"pending-in-flow\":return{title:\"In Progress\",body:\"Go back to Coinbase Onramp to finish funding your account.\",cta:\"\"}}})(r)),[r]);/*#__PURE__*/return e(n,{children:[/*#__PURE__*/e(Uh,{children:[/*#__PURE__*/t(Lh,{isSucccess:\"success\"===r}),/*#__PURE__*/e(mt,{children:[/*#__PURE__*/t(\"h3\",{children:o}),/*#__PURE__*/t(Dh,{children:s})]})]}),l&&/*#__PURE__*/t(st,{onClick:a,children:l})]})},Lh=({isSucccess:n})=>{if(!n){let n=\"var(--privy-color-foreground-4)\";/*#__PURE__*/return e(\"div\",{style:{position:\"relative\"},children:[/*#__PURE__*/t(Ht,{color:n,style:{position:\"absolute\"}}),/*#__PURE__*/t(on,{color:n}),/*#__PURE__*/t(Xo,{style:{position:\"absolute\",width:\"2.8rem\",height:\"2.8rem\",top:\"1.2rem\",left:\"1.2rem\"}})]})}let r=(e=>e?ai:()=>/*#__PURE__*/t(Ki,{width:\"3rem\",height:\"3rem\",style:{backgroundColor:\"var(--privy-color-foreground-4)\",color:\"var(--privy-color-background)\",borderRadius:\"100%\",padding:\"0.5rem\",margin:\"0.5rem\"}}))(n),a=(e=>e?\"var(--privy-color-success)\":\"var(--privy-color-foreground-4)\")(n);/*#__PURE__*/return t(\"div\",{style:{borderColor:a,display:\"flex\",justifyContent:\"center\",alignItems:\"center\",borderRadius:\"100%\",borderWidth:2,padding:\"0.5rem\",marginBottom:\"0.5rem\"},children:r&&/*#__PURE__*/t(r,{width:\"4rem\",height:\"4rem\",color:a})})},Dh=/*#__PURE__*/ja.p.withConfig({displayName:\"StatusBody\",componentId:\"sc-96ef1540-0\"})([\"font-size:1rem;color:var(--privy-color-foreground-3);margin-bottom:1rem;display:flex;flex-direction:column;gap:1rem;\"]),Uh=/*#__PURE__*/ja.div.withConfig({displayName:\"ConnectContainer\",componentId:\"sc-96ef1540-1\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;margin-left:1.75rem;margin-right:1.75rem;padding:2rem 0;\"]);const Fh=({children:n,theme:r})=>/*#__PURE__*/e(Bh,{$theme:r,children:[/*#__PURE__*/t(Ya,{width:\"3rem\",color:\"var(--privy-color-error)\"}),n]});let Bh=/*#__PURE__*/ja.div.withConfig({displayName:\"Container\",componentId:\"sc-5400b18f-0\"})([\"display:flex;gap:0.5rem;\",\" align-items:flex-start;text-align:left;padding:0.5rem 0.75rem;font-size:0.75rem;font-weight:400;line-height:1.125rem;padding:0.5rem 0.75rem;&&{border:1px solid var(--privy-color-error);border-radius:var(--privy-border-radius-sm);}\"],(e=>\"dark\"===e.$theme?\"color: var(--privy-color-error);\":\"background-color: var(--privy-color-error-light);\"));const zh=({children:n,theme:r})=>/*#__PURE__*/e(Hh,{$theme:r,children:[/*#__PURE__*/t(Ji,{width:\"1.25rem\",color:\"dark\"===r?\"var(--privy-color-accent-light)\":\"var(--privy-color-accent-dark)\",style:{minWidth:\"1.25rem\"}}),n]});let Hh=/*#__PURE__*/ja.div.withConfig({displayName:\"Container\",componentId:\"sc-dc8a0871-0\"})([\"display:flex;gap:0.5rem;background-color:\",\";color:var(--privy-color-foreground);align-items:flex-start;text-align:left;font-size:0.8125rem;font-weight:400;line-height:1.125rem;padding:0.75rem;&&{border-radius:var(--privy-border-radius-sm);border:1px solid var(--privy-color-accent);}\"],(e=>\"dark\"===e.$theme?\"var(--privy-color-accent-darkest)\":\"var(--privy-color-accent-lightest)\"));const Vh=e=>/*#__PURE__*/t(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 512 210.2\",xmlSpace:\"preserve\",...e,children:/*#__PURE__*/t(\"path\",{d:\"M93.6,27.1C87.6,34.2,78,39.8,68.4,39c-1.2-9.6,3.5-19.8,9-26.1c6-7.3,16.5-12.5,25-12.9 C103.4,10,99.5,19.8,93.6,27.1 M102.3,40.9c-13.9-0.8-25.8,7.9-32.4,7.9c-6.7,0-16.8-7.5-27.8-7.3c-14.3,0.2-27.6,8.3-34.9,21.2 c-15,25.8-3.9,64,10.6,85c7.1,10.4,15.6,21.8,26.8,21.4c10.6-0.4,14.8-6.9,27.6-6.9c12.9,0,16.6,6.9,27.8,6.7 c11.6-0.2,18.9-10.4,26-20.8c8.1-11.8,11.4-23.3,11.6-23.9c-0.2-0.2-22.4-8.7-22.6-34.3c-0.2-21.4,17.5-31.6,18.3-32.2 C123.3,42.9,107.7,41.3,102.3,40.9 M182.6,11.9v155.9h24.2v-53.3h33.5c30.6,0,52.1-21,52.1-51.4c0-30.4-21.1-51.2-51.3-51.2H182.6z M206.8,32.3h27.9c21,0,33,11.2,33,30.9c0,19.7-12,31-33.1,31h-27.8V32.3z M336.6,169c15.2,0,29.3-7.7,35.7-19.9h0.5v18.7h22.4V90.2 c0-22.5-18-37-45.7-37c-25.7,0-44.7,14.7-45.4,34.9h21.8c1.8-9.6,10.7-15.9,22.9-15.9c14.8,0,23.1,6.9,23.1,19.6v8.6l-30.2,1.8 c-28.1,1.7-43.3,13.2-43.3,33.2C298.4,155.6,314.1,169,336.6,169z M343.1,150.5c-12.9,0-21.1-6.2-21.1-15.7c0-9.8,7.9-15.5,23-16.4 l26.9-1.7v8.8C371.9,140.1,359.5,150.5,343.1,150.5z M425.1,210.2c23.6,0,34.7-9,44.4-36.3L512,54.7h-24.6l-28.5,92.1h-0.5 l-28.5-92.1h-25.3l41,113.5l-2.2,6.9c-3.7,11.7-9.7,16.2-20.4,16.2c-1.9,0-5.6-0.2-7.1-0.4v18.7C417.3,210,423.3,210.2,425.1,210.2z\"})}),$h=n=>/*#__PURE__*/e(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 80 38.1\",xmlSpace:\"preserve\",...n,children:[/*#__PURE__*/t(\"path\",{style:{fill:\"#5F6368\"},d:\"M37.8,19.7V29h-3V6h7.8c1.9,0,3.7,0.7,5.1,2c1.4,1.2,2.1,3,2.1,4.9c0,1.9-0.7,3.6-2.1,4.9c-1.4,1.3-3.1,2-5.1,2 L37.8,19.7L37.8,19.7z M37.8,8.8v8h5c1.1,0,2.2-0.4,2.9-1.2c1.6-1.5,1.6-4,0.1-5.5c0,0-0.1-0.1-0.1-0.1c-0.8-0.8-1.8-1.3-2.9-1.2 L37.8,8.8L37.8,8.8z\"}),/*#__PURE__*/t(\"path\",{style:{fill:\"#5F6368\"},d:\"M56.7,12.8c2.2,0,3.9,0.6,5.2,1.8s1.9,2.8,1.9,4.8V29H61v-2.2h-0.1c-1.2,1.8-2.9,2.7-4.9,2.7 c-1.7,0-3.2-0.5-4.4-1.5c-1.1-1-1.8-2.4-1.8-3.9c0-1.6,0.6-2.9,1.8-3.9c1.2-1,2.9-1.4,4.9-1.4c1.8,0,3.2,0.3,4.3,1v-0.7 c0-1-0.4-2-1.2-2.6c-0.8-0.7-1.8-1.1-2.9-1.1c-1.7,0-3,0.7-3.9,2.1l-2.6-1.6C51.8,13.8,53.9,12.8,56.7,12.8z M52.9,24.2 c0,0.8,0.4,1.5,1,1.9c0.7,0.5,1.5,0.8,2.3,0.8c1.2,0,2.4-0.5,3.3-1.4c1-0.9,1.5-2,1.5-3.2c-0.9-0.7-2.2-1.1-3.9-1.1 c-1.2,0-2.2,0.3-3,0.9C53.3,22.6,52.9,23.3,52.9,24.2z\"}),/*#__PURE__*/t(\"path\",{style:{fill:\"#5F6368\"},d:\"M80,13.3l-9.9,22.7h-3l3.7-7.9l-6.5-14.7h3.2l4.7,11.3h0.1l4.6-11.3H80z\"}),/*#__PURE__*/t(\"path\",{style:{fill:\"#4285F4\"},d:\"M25.9,17.7c0-0.9-0.1-1.8-0.2-2.7H13.2v5.1h7.1c-0.3,1.6-1.2,3.1-2.6,4v3.3H22C24.5,25.1,25.9,21.7,25.9,17.7z\"}),/*#__PURE__*/t(\"path\",{style:{fill:\"#34A853\"},d:\"M13.2,30.6c3.6,0,6.6-1.2,8.8-3.2l-4.3-3.3c-1.2,0.8-2.7,1.3-4.5,1.3c-3.4,0-6.4-2.3-7.4-5.5H1.4v3.4 C3.7,27.8,8.2,30.6,13.2,30.6z\"}),/*#__PURE__*/t(\"path\",{style:{fill:\"#FBBC04\"},d:\"M5.8,19.9c-0.6-1.6-0.6-3.4,0-5.1v-3.4H1.4c-1.9,3.7-1.9,8.1,0,11.9L5.8,19.9z\"}),/*#__PURE__*/t(\"path\",{style:{fill:\"#EA4335\"},d:\"M13.2,9.4c1.9,0,3.7,0.7,5.1,2l0,0l3.8-3.8c-2.4-2.2-5.6-3.5-8.8-3.4c-5,0-9.6,2.8-11.8,7.3l4.4,3.4 C6.8,11.7,9.8,9.4,13.2,9.4z\"})]}),jh=e=>{let[t,n]=s();return o((()=>{e().then((e=>{n(e)})).catch((()=>{}))}),[]),t},Gh=()=>window.open(void 0,void 0,qh({w:440,h:680}));let qh=({w:e,h:t})=>{let n=void 0!==window.screenLeft?window.screenLeft:window.screenX,r=void 0!==window.screenTop?window.screenTop:window.screenY,a=window.innerWidth?window.innerWidth:document.documentElement.clientWidth?document.documentElement.clientWidth:screen.width,i=window.innerHeight?window.innerHeight:document.documentElement.clientHeight?document.documentElement.clientHeight:screen.height;return`toolbar=0,location=0,menubar=0,height=${t},width=${e},popup=1,left=${(a-e)/2/(a/window.screen.availWidth)+n},top=${(i-t)/2/(i/window.screen.availHeight)+r}`};let Kh={[Nr.id]:\"ethereum\",[xr.id]:\"base\",[Sr.id]:\"optimism\",[Rr.id]:\"polygon\",[Or.id]:\"arbitrum\"};const Yh=(e,t,n,r,a,i)=>new Promise((async(o,s)=>{let l=Gh();if(!l)return void s(Error(\"Unable to initialize flow\"));let c=\"ethereum\"===t.chainType?function(e){let t=Kh[e];if(!t)throw new T(`Unsupported chainId: ${e} for Coinbase Onramp`);return t}(t.chain.id):\"solana\",d=t.isUSDC?\"USDC\":\"ethereum\"===t.chainType?\"ETH\":\"SOL\",u=await e.initCoinbaseOnRamp({addresses:[{address:t.address,blockchains:[c]}],assets:[d]}),{url:h}=Ti({input:u,amount:t.amount,blockchain:c,asset:d,experience:i});l.location=h.toString();let p={...a?.funding,showAlternateFundingMethod:!0};t.usingDefaultFundingMethod&&(p.usingDefaultFundingMethod=!1),n({funding:p,coinbaseOnrampStatus:{popup:l}}),r(cr.COINBASE_ONRAMP_STATUS_SCREEN),e.createAnalyticsEvent({eventName:\"sdk_fiat_on_ramp_started\",payload:{provider:\"coinbase-onramp\",value:t.amount,chainType:t.chainType,chainId:\"ethereum\"===t.chainType?t.chain.id:t.cluster.name}}),setTimeout((()=>{n({funding:p,coinbaseOnrampStatus:{partnerUserId:u.partner_user_id,popup:l}})}),5e3),o()})),Zh=async(e,t,n,r,a,i,o,s)=>{let l=Gh();if(!l)throw Error(\"Unable to initialize flow\");let c=\"ethereum\"===t.chainType?t.moonpayConfigOverride?.currencyCode??bi(t.chain.id,r):\"SOL\",{signedUrl:d,externalTransactionId:u}=await e.signMoonpayOnRampUrl({address:t.address,useSandbox:n.fundingMethodConfig.moonpay.useSandbox??!1,config:{uiConfig:{accentColor:n.appearance.palette.accent,theme:n.appearance.palette.colorScheme},...t.moonpayConfigOverride,paymentMethod:s,currencyCode:c,quoteCurrencyAmount:t.moonpayConfigOverride?.quoteCurrencyAmount??sa(t.amount)}});e.createAnalyticsEvent({eventName:\"sdk_fiat_on_ramp_started\",payload:{provider:\"moonpay\",value:t.amount,chainType:t.chainType,chainId:\"ethereum\"===t.chainType?t.chain.id:t.cluster.name}}),l.location=d;let h={...o?.funding,showAlternateFundingMethod:!0};t.usingDefaultFundingMethod&&(h.usingDefaultFundingMethod=!1),a({moonpayStatus:{},funding:h}),i(cr.MOONPAY_STATUS_SCREEN),setTimeout((()=>{a({moonpayStatus:{externalTransactionId:u},funding:h})}),8e3)};let Jh=async e=>\"undefined\"!=typeof window&&\"PaymentRequest\"in window&&await new window.PaymentRequest([{supportedMethods:e}],{id:\"0\",total:{label:\"Item\",amount:{currency:\"USD\",value:\"1.00\"}}}).canMakePayment();const Qh=()=>Jh(\"https://apple.com/apple-pay\"),Xh=()=>Jh(\"https://google.com/pay\");let ep=({...e})=>/*#__PURE__*/t(as,{color:\"black\",...e}),tp={devnet:\"Devnet\",\"mainnet-beta\":\"Solana\",testnet:\"Testnet\"};const np=({size:n=61,...r})=>/*#__PURE__*/t(\"svg\",{width:n,height:n,viewBox:\"0 0 61 61\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",...r,children:/*#__PURE__*/e(\"g\",{id:\"moonpay_symbol_wht 2\",children:[/*#__PURE__*/t(\"rect\",{x:\"1.3374\",y:\"1\",width:\"59\",height:\"59\",rx:\"11.5\",fill:\"#7715F5\"}),/*#__PURE__*/t(\"path\",{id:\"Vector\",d:\"M43.8884 23.3258C45.0203 23.3258 46.1268 22.9901 47.068 22.3613C48.0091 21.7324 48.7427 20.8386 49.1759 19.7928C49.6091 18.747 49.7224 17.5962 49.5016 16.4861C49.2807 15.3759 48.7357 14.3561 47.9353 13.5557C47.1349 12.7553 46.1151 12.2102 45.0049 11.9893C43.8947 11.7685 42.7439 11.8819 41.6982 12.3151C40.6524 12.7482 39.7585 13.4818 39.1297 14.423C38.5008 15.3641 38.1651 16.4707 38.1651 17.6026C38.165 18.3542 38.3131 19.0985 38.6007 19.7929C38.8883 20.4873 39.3098 21.1182 39.8413 21.6496C40.3728 22.1811 41.0037 22.6027 41.6981 22.8903C42.3925 23.1778 43.1367 23.3259 43.8884 23.3258ZM26.3395 49.1017C23.5804 49.1017 20.8832 48.2836 18.5891 46.7507C16.295 45.2178 14.5069 43.039 13.4511 40.49C12.3952 37.9409 12.1189 35.1359 12.6572 32.4298C13.1955 29.7237 14.5241 27.238 16.4751 25.287C18.4262 23.336 20.9118 22.0074 23.6179 21.4691C26.324 20.9308 29.129 21.2071 31.6781 22.2629C34.2272 23.3189 36.406 25.1069 37.9389 27.401C39.4717 29.6952 40.2899 32.3923 40.2899 35.1514C40.2899 36.9835 39.9291 38.7975 39.2281 40.49C38.527 42.1826 37.4994 43.7205 36.204 45.0159C34.9086 46.3113 33.3707 47.3389 31.6781 48.04C29.9856 48.741 28.1715 49.1018 26.3395 49.1017Z\",fill:\"white\"})]})});let rp=({status:r,onClickCta:a})=>{let{title:o,body:s,cta:l}=i((()=>(e=>{switch(e){case\"completed\":return{title:\"You've funded your account!\",body:\"It may take a few minutes for the assets to appear.\",cta:\"Continue\"};case\"waitingAuthorization\":return{title:\"Processing payment\",body:\"This may take up to a few hours. You will receive an email when the purchase is complete.\",cta:\"Continue\"};default:return{title:\"In Progress\",body:\"Go back to MoonPay to finish funding your account.\",cta:\"\"}}})(r)),[r]);/*#__PURE__*/return e(n,{children:[/*#__PURE__*/e(op,{children:[/*#__PURE__*/t(ap,{status:r}),/*#__PURE__*/e(mt,{children:[/*#__PURE__*/t(\"h3\",{children:o}),/*#__PURE__*/t(ip,{children:s})]})]}),l&&/*#__PURE__*/t(st,{onClick:a,children:l})]})},ap=({status:n})=>{if(!n||\"pending\"===n){let n=\"var(--privy-color-foreground-4)\";/*#__PURE__*/return e(\"div\",{style:{position:\"relative\"},children:[/*#__PURE__*/t(Ht,{color:n,style:{position:\"absolute\"}}),/*#__PURE__*/t(on,{color:n}),/*#__PURE__*/t(np,{size:\"3rem\",style:{position:\"absolute\",top:\"1rem\",left:\"1rem\"}})]})}let r=(e=>{switch(e){case\"completed\":return ai;case\"waitingAuthorization\":return()=>/*#__PURE__*/t(Ki,{width:\"3rem\",height:\"3rem\",style:{backgroundColor:\"var(--privy-color-foreground-4)\",color:\"var(--privy-color-background)\",borderRadius:\"100%\",padding:\"0.5rem\",margin:\"0.5rem\"}});default:return}})(n),a=(e=>e?{completed:\"var(--privy-color-success)\",failed:\"var(--privy-color-error)\",serviceFailure:\"var(--privy-color-error)\",waitingAuthorization:\"var(--privy-color-accent)\",pending:\"var(--privy-color-foreground-4)\"}[e]:\"var(--privy-color-foreground-4)\")(n);/*#__PURE__*/return t(\"div\",{style:{borderColor:a,display:\"flex\",justifyContent:\"center\",alignItems:\"center\",borderRadius:\"100%\",borderWidth:2,padding:\"0.5rem\",marginBottom:\"0.5rem\"},children:r&&/*#__PURE__*/t(r,{width:\"4rem\",height:\"4rem\",color:a})})},ip=/*#__PURE__*/ja.p.withConfig({displayName:\"StatusBody\",componentId:\"sc-56bea42a-0\"})([\"font-size:1rem;color:var(--privy-color-foreground-3);margin-bottom:1rem;display:flex;flex-direction:column;gap:1rem;\"]),op=/*#__PURE__*/ja.div.withConfig({displayName:\"ConnectContainer\",componentId:\"sc-56bea42a-1\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;margin-left:1.75rem;margin-right:1.75rem;padding:2rem 0;\"]);const sp=({onClick:n,text:r})=>/*#__PURE__*/e(el,{onClick:n,children:[/*#__PURE__*/t(Za,{}),/*#__PURE__*/t(Ks,{children:r}),/*#__PURE__*/t(Qi,{})]});let lp=({onClick:n,icon:r,name:a,chainType:i})=>/*#__PURE__*/e(el,{onClick:n,children:[/*#__PURE__*/t(Ch,{style:{width:20},children:/*#__PURE__*/t(\"img\",{src:r})}),a,/*#__PURE__*/t(vt,{color:\"gray\",style:{marginLeft:\"auto\"},children:\"Connected\"}),\"solana\"===i&&/*#__PURE__*/t(vt,{color:\"gray\",children:\"Solana\"})]});let cp=/*#__PURE__*/ja.div.withConfig({displayName:\"StyledCircle\",componentId:\"sc-30eca48b-0\"})([\"border-radius:50%;height:68px;width:68px;display:flex;align-items:center;justify-content:center;background-color:var(--privy-color-accent);color:white;margin:0 auto 24px auto;\"]);const dp=({style:e,...n})=>/*#__PURE__*/t(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",fill:\"none\",width:\"17\",height:\"17\",viewBox:\"0 0 17 17\",style:{height:\"1.25rem\",width:\"1.25rem\",...e},...n,children:/*#__PURE__*/t(\"path\",{strokeLinecap:\"round\",strokeLinejoin:\"round\",fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M16.5 8.67993C16.5 9.82986 15.853 10.8287 14.9032 11.3322C15.2188 12.3599 14.97 13.5237 14.1569 14.3368C13.3437 15.1499 12.18 15.3987 11.1523 15.0831C10.6488 16.0329 9.64993 16.6799 8.5 16.6799C7.35007 16.6799 6.35126 16.0329 5.84771 15.0831C4.82003 15.3987 3.65627 15.1499 2.84314 14.3368C2.03001 13.5237 1.78124 12.3599 2.09681 11.3322C1.14699 10.8287 0.5 9.82986 0.5 8.67993C0.5 7.53 1.14699 6.53119 2.0968 6.02764C1.78125 4.99996 2.03003 3.83621 2.84315 3.02309C3.65627 2.20997 4.82002 1.96119 5.8477 2.27675C6.35125 1.32692 7.35007 0.679932 8.5 0.679932C9.64992 0.679932 10.6487 1.32691 11.1523 2.27672C12.18 1.96115 13.3437 2.20993 14.1569 3.02305C14.97 3.83618 15.2188 4.99996 14.9032 6.02764C15.853 6.53119 16.5 7.53 16.5 8.67993ZM12.2659 6.68856C12.5654 6.40238 12.5761 5.92763 12.29 5.62818C12.0038 5.32873 11.529 5.31797 11.2296 5.60416C9.73022 7.03711 8.40877 8.65489 7.3018 10.4211L5.78033 8.89963C5.48744 8.60673 5.01256 8.60673 4.71967 8.89963C4.42678 9.19252 4.42678 9.66739 4.71967 9.96029L6.92031 12.1609C7.08544 12.3261 7.31807 12.4048 7.54957 12.374C7.78106 12.3432 7.98499 12.2064 8.1012 12.0038C9.23027 10.0356 10.6362 8.24613 12.2659 6.68856Z\",fill:\"var(--privy-color-accent)\"})}),up=/*#__PURE__*/ja.div.withConfig({displayName:\"TodoList\",componentId:\"sc-491785d-0\"})([\"display:flex;flex-direction:column;justify-content:flex-start;gap:4px;\"]),hp=/*#__PURE__*/ja.div.withConfig({displayName:\"TodoSpacer\",componentId:\"sc-491785d-1\"})([\"&&&{margin-left:7px;border-left:2px solid var(--privy-color-foreground-4);height:12px;}\"]),pp=({children:n})=>/*#__PURE__*/e(mp,{children:[/*#__PURE__*/t(dp,{style:{width:\"16px\",height:\"16px\"}}),n]});let mp=/*#__PURE__*/ja.div.withConfig({displayName:\"TodoItemWrapper\",componentId:\"sc-491785d-2\"})([\"display:flex;justify-content:flex-start;justify-items:center;text-align:left;gap:8px;&&{a{text-decoration:underline;color:var(--privy-color-accent);}svg{margin-top:auto;margin-bottom:auto;}}\"]),yp=({name:n,installLink:r})=>/*#__PURE__*/e(Ft,{children:[/*#__PURE__*/t(jl,{title:`Create a ${n} wallet`.replace(/wallet wallet/gi,\"wallet\"),description:\"Follow the instructions below to get started.\"}),/*#__PURE__*/e(up,{children:[/*#__PURE__*/t(pp,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(\"span\",{children:\"Install the \"}),\" \",/*#__PURE__*/e(\"a\",{href:r,target:\"_blank\",children:[n,\" browser extension\"]})]})}),/*#__PURE__*/t(hp,{}),/*#__PURE__*/t(pp,{children:\"Set up your first wallet\"}),/*#__PURE__*/t(hp,{}),/*#__PURE__*/t(pp,{children:\"Store your recovery phrase in a safe place!\"})]}),/*#__PURE__*/t(hn,{onClick:()=>window.location.reload(),style:{marginTop:\"20px\"},children:\"Reload the page to use your wallet\"})]});let gp={apple_oauth:\"apple\",custom_auth:\"custom\",discord_oauth:\"discord\",email:\"email\",farcaster:\"farcaster\",github_oauth:\"github\",google_oauth:\"google\",instagram_oauth:\"instagram\",linkedin_oauth:\"linkedin\",passkey:\"passkey\",phone:\"sms\",spotify_oauth:\"spotify\",telegram:\"telegram\",tiktok_oauth:\"tiktok\",twitter_oauth:\"twitter\",wallet:\"siwe\",smart_wallet:\"siwe\",cross_app:\"privy:\"};const fp=e=>{let t=gp[e];return\"wallet\"===e||\"phone\"===e?{displayName:e,loginMethod:t}:{displayName:t,loginMethod:t}},wp=()=>{let{app:e}=lr(),n=e?.appearance?.logo,r=`${e?.name} logo`,i={maxHeight:\"90px\",maxWidth:\"180px\"};return n?\"string\"==typeof n?/*#__PURE__*/t(\"img\",{src:n,alt:r,style:i}):\"svg\"===n.type||\"img\"===n.type?/*#__PURE__*/a.cloneElement(n,{alt:r,style:i}):(console.warn(\"`config.appearance.logo` must be a string, or an SVG / IMG element. Nothing will be rendered.\"),null):null},vp=e=>{let{app:n}=lr();return n?.appearance.logo?/*#__PURE__*/t(Cp,{...e,children:/*#__PURE__*/t(wp,{})}):null},Cp=/*#__PURE__*/ja.div.withConfig({displayName:\"AppLogoContainer\",componentId:\"sc-a206bd44-0\"})([\"display:flex;flex-direction:column;align-items:center;padding:24px 0;flex-grow:1;justify-content:center;\"]),Ep=({appId:r})=>{let[a,i]=s(void 0),{startCrossAppAuthFlow:l,authenticated:c}=ur(),{client:d}=x();return o((()=>{(async()=>{d&&i(await d.getCrossAppProviderDetails(r))})()}),[d]),/*#__PURE__*/t(el,{onClick:()=>l({appId:r,action:c?\"link\":\"login\"}),disabled:!a,children:a?/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(kc,{name:a.name,logoUrl:a.icon_url||void 0,size:\"24px\"}),\" \",a.name]}):/*#__PURE__*/t(qt,{})})},Tp=/*#__PURE__*/u(((r,a)=>{let[i,l]=s(r.defaultValue||\"\"),[c,d]=s(\"\"),[u,h]=s(!1),{authenticated:p}=ur(),{initLoginWithEmail:m}=x(),{navigate:y,setModalData:g,currentScreen:f,data:w}=lr(),{enabled:v,token:C}=it(),[E,T]=s(!1),{accountType:b}=gt(),_=dr();o((()=>{!i&&_.disablePlusEmails&&w?.inlineError?.error instanceof M&&w?.inlineError?.error.privyErrorCode===A.DISALLOWED_PLUS_EMAIL&&!c&&d(\"Please enter a valid email address without a '+'.\"),c&&d(\"\")}),[i]);let k=pn(i),I=u||!k,N=()=>{g({inlineError:void 0}),!v||C||p?(e=>{h(!0),m({email:i,captchaToken:e,disableSignup:w?.login?.disableSignup,withPrivyUi:!0}).then((()=>{y(cr.AWAITING_PASSWORDLESS_CODE)})).catch((e=>{g({errorModalData:{error:e,previousScreen:f||cr.LANDING}}),y(cr.ERROR_SCREEN)})).finally((()=>{h(!1)}))})(C):(g({captchaModalData:{callback:e=>m({email:i,captchaToken:e,withPrivyUi:!0}),userIntentRequired:!1,onSuccessNavigateTo:cr.AWAITING_PASSWORDLESS_CODE,onErrorNavigateTo:cr.ERROR_SCREEN}}),y(cr.CAPTCHA_SCREEN))};/*#__PURE__*/return e(n,{children:[/*#__PURE__*/e(bp,{children:[c&&/*#__PURE__*/t(Zt,{style:{display:\"block\",marginTop:\"0.25rem\",textAlign:\"left\"},children:c}),/*#__PURE__*/e(Ap,{stacked:r.stacked,$error:!!c,children:[/*#__PURE__*/t(ni,{}),/*#__PURE__*/t(\"input\",{ref:a,id:\"email-input\",className:\"login-method-button\",type:\"email\",placeholder:\"your@email.com\",onFocus:()=>T(!0),onChange:e=>l(e.target.value),onKeyUp:e=>{\"Enter\"===e.key&&N()},value:i,autoComplete:\"email\"}),\"email\"!==b||E?r.stacked?/*#__PURE__*/t(\"span\",{}):/*#__PURE__*/t(mn,{isSubmitting:u,onClick:N,disabled:I,children:\"Submit\"}):/*#__PURE__*/t(vt,{color:\"gray\",children:\"Recent\"})]})]}),r.stacked?/*#__PURE__*/t(st,{loadingText:null,loading:u,disabled:I,onClick:N,children:\"Submit\"}):null]})}));let bp=yn,Ap=gn;const _p=({isEditable:r,setIsEditable:a,defaultValue:i})=>{let o=l(null);/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(nl,{$if:!r,children:/*#__PURE__*/t(Tp,{ref:o,defaultValue:i})}),/*#__PURE__*/t(nl,{$if:r,children:/*#__PURE__*/e(el,{onClick:()=>{a(),setTimeout((()=>{o.current?.focus()}),0)},children:[/*#__PURE__*/t(ni,{}),\" Continue with Email\"]})})]})},kp=()=>{let[n,r]=s(!1),{currentScreen:a,navigate:i,setModalData:o,data:l}=lr(),{enabled:c,token:d}=it(),{initLoginWithFarcaster:u}=x(),{accountType:h}=gt();/*#__PURE__*/return e(el,{onClick:async()=>{r(!0);try{c&&!d?(o({captchaModalData:{callback:e=>u(e,l?.login?.disableSignup),userIntentRequired:!0,onSuccessNavigateTo:cr.AWAITING_FARCASTER_CONNECTION,onErrorNavigateTo:cr.ERROR_SCREEN}}),i(cr.CAPTCHA_SCREEN)):(await u(d,l?.login?.disableSignup),i(cr.AWAITING_FARCASTER_CONNECTION))}catch(e){o({errorModalData:{error:e,previousScreen:a||cr.LANDING}}),i(cr.ERROR_SCREEN)}finally{r(!1)}},disabled:!1,children:[/*#__PURE__*/t(pu,{}),\" Farcaster\",n&&/*#__PURE__*/t(qt,{}),\"farcaster\"===h&&/*#__PURE__*/t(Ip,{color:\"gray\",children:\"Recent\"})]})};let Ip=/*#__PURE__*/ja(vt).withConfig({displayName:\"StyledChip\",componentId:\"sc-19f52850-0\"})([\"margin-left:auto;\"]);const Np=({...n})=>/*#__PURE__*/e(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"25\",height:\"25\",viewBox:\"0 0 25 25\",fill:\"none\",...n,children:[/*#__PURE__*/e(\"g\",{clipPath:\"url(#clip0_2856_1743)\",children:[/*#__PURE__*/t(\"path\",{d:\"M22.1673 8.24075V16.3642C22.1673 17.3256 21.3421 18.105 20.3241 18.105H17.0028M22.1673 8.24075C22.1673 7.27936 21.3421 6.5 20.3241 6.5H11.5302M22.1673 8.24075V8.42852C22.1673 9.03302 21.8352 9.59423 21.2901 9.91105L15.1463 13.4818C14.5539 13.8261 13.8067 13.8261 13.2143 13.4818L10.1621 11.5401\",stroke:\"currentColor\",strokeWidth:\"1.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}),/*#__PURE__*/t(\"path\",{d:\"M3.12913 6.64816C0.508085 12.9507 3.49251 20.1847 9.79504 22.8057L11.5068 23.5176C12.4522 23.9108 13.7783 23.2222 14.1714 22.2768L14.6054 21.2333C14.7687 20.8406 14.6438 20.3871 14.3024 20.1334L11.2872 17.8927C10.9878 17.6702 10.5843 17.6488 10.2632 17.8384L9.11575 18.5156C8.78274 18.7121 8.3597 18.6844 8.07552 18.4221C5.94293 16.4542 4.77629 13.6264 4.90096 10.7273C4.91757 10.3409 5.19796 10.023 5.57269 9.92753L6.86381 9.59869C7.22522 9.50664 7.49627 9.20696 7.55169 8.83815L8.10986 5.12321C8.17306 4.70259 7.94188 4.29293 7.54915 4.1296L6.50564 3.69564C5.56026 3.30248 4.23416 3.99103 3.84101 4.9364L3.12913 6.64816Z\",stroke:\"currentColor\",strokeWidth:\"1.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})]}),/*#__PURE__*/t(\"defs\",{children:/*#__PURE__*/t(\"clipPath\",{id:\"clip0_2856_1743\",children:/*#__PURE__*/t(\"rect\",{x:\"0.5\",y:\"0.5\",width:\"24\",height:\"24\",rx:\"6\",fill:\"white\"})})})]}),xp=()=>{let{enabled:n,token:r}=it(),{navigate:a,setModalData:o,app:s,data:l}=lr(),{initLoginWithPasskey:c}=x(),d=()=>{s.loginConfig.passkeysForSignupEnabled?a(cr.SELECT_PASSKEY_SIGNUP_OR_LOGIN):(async()=>{n&&!r?(o({passkeyAuthModalData:{passkeySignupFlow:!1},captchaModalData:{callback:e=>c({captchaToken:e,withPrivyUi:!0}),userIntentRequired:!1,onSuccessNavigateTo:cr.AWAITING_PASSKEY_SYSTEM_DIALOGUE,onErrorNavigateTo:cr.ERROR_SCREEN}}),a(cr.CAPTCHA_SCREEN)):(await c({withPrivyUi:!0}),o({passkeyAuthModalData:{passkeySignupFlow:!1}}),a(cr.AWAITING_PASSKEY_SYSTEM_DIALOGUE))})()};return 0===i((()=>{let e=l?.login?.loginMethods;return e?e.filter((e=>\"passkey\"!==e)).length:Object.entries(s.loginMethods).filter((([e,t])=>t)).filter((([e])=>\"passkey\"!==e)).length}),[s.loginMethods,l?.login])?/*#__PURE__*/e(el,{onClick:d,children:[/*#__PURE__*/t(Xi,{}),\" Continue with passkey\"]}):/*#__PURE__*/t(Rp,{onClick:d,children:\"I have a passkey\"})};let Sp=/*#__PURE__*/Ga([\"&&{width:100%;font-size:0.875rem;line-height:1rem;display:flex;gap:0.5rem;justify-content:center;align-items:center;padding:6px 8px;background-color:var(--privy-color-background);transition:background-color 200ms ease;color:var(--privy-color-accent) !important;:focus{outline:none;box-shadow:none;}}\"]);const Rp=/*#__PURE__*/ja.button.withConfig({displayName:\"StyledLink\",componentId:\"sc-48dad958-0\"})([\"\",\"\"],Sp),Op=({value:n,onChange:r})=>/*#__PURE__*/t(\"select\",{value:n,onChange:r,children:Ni.map((t=>/*#__PURE__*/e(\"option\",{value:t.code,children:[t.code,\" +\",t.callCode]},t.code)))}),Wp=/*#__PURE__*/u(((r,a)=>{let{app:i}=lr(),[l,c]=s(!1),{accountType:d}=gt(),[u,h]=s(\"\"),[p,m]=s(i?.intl.defaultCountry??\"US\"),y=xi(u,p),g=Si(p),f=Ri(p),w=Oi(p),v=!y,[C,E]=s(!1),T=w.length,b=e=>{let t=e.target.value;m(t),h(\"\"),r.onChange&&r.onChange({rawPhoneNumber:u,qualifiedPhoneNumber:Mi(u,t),countryCode:t,isValid:xi(u,p)})},A=(e,t)=>{try{let n=e.replace(/\\D/g,\"\")===u.replace(/\\D/g,\"\")?e:g.input(e);h(n),r.onChange&&r.onChange({rawPhoneNumber:n,qualifiedPhoneNumber:Mi(e,t),countryCode:t,isValid:xi(e,t)})}catch(e){console.error(\"Error processing phone number:\",e)}},_=()=>{E(!0);let e=Mi(u,p);r.onSubmit({rawPhoneNumber:u,qualifiedPhoneNumber:e,countryCode:p,isValid:xi(u,p)}).finally((()=>E(!1)))};return o((()=>{if(r.defaultValue){let e=Wi(r.defaultValue);g.reset(),b({target:{value:e.countryCode}}),A(e.phone,e.countryCode)}}),[r.defaultValue]),/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(Mp,{children:/*#__PURE__*/e(Pp,{$callingCodeLength:T,$stacked:r.stacked,children:[/*#__PURE__*/t(Op,{value:p,onChange:b}),/*#__PURE__*/t(\"input\",{ref:a,id:\"phone-number-input\",className:\"login-method-button\",type:\"tel\",placeholder:f,onFocus:()=>c(!0),onChange:e=>{A(e.target.value,p)},onKeyUp:e=>{\"Enter\"===e.key&&_()},value:u,autoComplete:\"tel\"}),\"phone\"!==d||l||r.hideRecent?r.stacked||r.noIncludeSubmitButton?/*#__PURE__*/t(\"span\",{}):/*#__PURE__*/t(mn,{isSubmitting:C,onClick:_,disabled:v,children:\"Submit\"}):/*#__PURE__*/t(vt,{color:\"gray\",children:\"Recent\"})]})}),r.stacked&&!r.noIncludeSubmitButton?/*#__PURE__*/t(st,{loading:C,loadingText:null,onClick:_,disabled:v,children:\"Submit\"}):null]})}));let Mp=/*#__PURE__*/ja.div.withConfig({displayName:\"InputContainer\",componentId:\"sc-2a729487-0\"})([\"width:100%;\"]),Pp=/*#__PURE__*/ja.label.withConfig({displayName:\"PhoneNumberInput\",componentId:\"sc-2a729487-1\"})([\"--country-code-dropdown-width:calc(54px + calc(12 * \",\"px));--phone-input-extra-padding-left:calc(12px + calc(3 * \",\"px));display:block;position:relative;width:100%;@media (min-width:441px){--country-code-dropdown-width:calc(52px + calc(10 * \",\"px));}&& > select{font-size:16px;height:24px;position:absolute;margin:13px calc(var(--country-code-dropdown-width) / 4);line-height:24px;width:var(--country-code-dropdown-width);background-color:var(--privy-color-background);background-size:auto;background-position-x:right;cursor:pointer;@media (min-width:441px){font-size:14px;width:var(--country-code-dropdown-width);}:focus{outline:none;box-shadow:none;}}&& > input{font-size:16px;line-height:24px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:calc(100% - var(--country-code-dropdown-width));padding:12px 88px 12px calc(var(--country-code-dropdown-width) + var(--phone-input-extra-padding-left));padding-right:\",\";flex-grow:1;background:var(--privy-color-background);border:1px solid var(--privy-color-foreground-4);border-radius:var(--privy-border-radius-mdlg);width:100%;:focus{outline:none;border-color:var(--privy-color-accent);}:autofill,:-webkit-autofill{background:var(--privy-color-background);}@media (min-width:441px){font-size:14px;padding-right:78px;}}&& > :last-child{right:16px;position:absolute;top:50%;transform:translate(0,-50%);}&& > button:last-child{right:0px;line-height:24px;padding:13px 17px;:focus{outline:none;border-color:var(--privy-color-accent);}}&& > input::placeholder{color:var(--privy-color-foreground-3);}\"],(e=>e.$callingCodeLength),(e=>e.$callingCodeLength),(e=>e.$callingCodeLength),(e=>e.$stacked?\"16px\":\"88px\"));const Lp=({isEditable:r,setIsEditable:a,defaultValue:i})=>{let o=l(null),{authenticated:s}=ur(),{navigate:c,setModalData:d,currentScreen:u,data:h}=lr(),{initLoginWithSms:p}=x(),{enabled:m,token:y}=it();/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(nl,{$if:!r,children:/*#__PURE__*/t(Wp,{ref:o,onSubmit:async function({qualifiedPhoneNumber:e}){if(!m||y||s)try{await p({phoneNumber:e,captchaToken:y,withPrivyUi:!0,disableSignup:h?.login?.disableSignup}),c(cr.AWAITING_PASSWORDLESS_CODE)}catch(e){d({errorModalData:{error:e,previousScreen:u||cr.LANDING}}),c(cr.ERROR_SCREEN)}else d({captchaModalData:{callback:t=>p({phoneNumber:e,captchaToken:t,withPrivyUi:!0,disableSignup:h?.login?.disableSignup}),userIntentRequired:!1,onSuccessNavigateTo:cr.AWAITING_PASSWORDLESS_CODE,onErrorNavigateTo:cr.ERROR_SCREEN}}),c(cr.CAPTCHA_SCREEN)},defaultValue:i})}),/*#__PURE__*/t(nl,{$if:r,children:/*#__PURE__*/e(el,{onClick:()=>{a(),setTimeout((()=>{o.current?.focus()}),0)},children:[/*#__PURE__*/t(ri,{}),\" Continue with SMS\"]})})]})};let Dp={apple:{logo:/*#__PURE__*/t(So,{}),displayName:\"Apple\"},discord:{logo:/*#__PURE__*/t(Ro,{}),displayName:\"Discord\"},github:{logo:/*#__PURE__*/t(Oo,{}),displayName:\"GitHub\"},google:{logo:/*#__PURE__*/t(Mo,{}),displayName:\"Google\"},linkedin:{logo:/*#__PURE__*/t(Lo,{}),displayName:\"LinkedIn\"},spotify:{logo:/*#__PURE__*/t(Do,{}),displayName:\"Spotify\"},instagram:{logo:/*#__PURE__*/t(Po,{}),displayName:\"Instagram\"},twitter:{logo:/*#__PURE__*/t(Fo,{}),displayName:\"Twitter\"},tiktok:{logo:/*#__PURE__*/t(Uo,{}),displayName:\"TikTok\"}};const Up=({provider:n})=>{let{enabled:r,token:a}=it(),{navigate:o,setModalData:l,data:c}=lr(),[d,u]=s(!1),{initLoginWithOAuth:h}=x(),{accountType:p}=gt(),m=i((()=>p&&\"guest\"!==p&&\"signer\"!==p&&\"cross_app\"!==p?fp(p):null),[p]),{displayName:y,logo:g}=Dp[n];/*#__PURE__*/return e(el,{onClick:()=>{u(!0),r&&!a?(l({captchaModalData:{callback:e=>h(n,e,c?.login?.disableSignup),userIntentRequired:!0,onSuccessNavigateTo:null,onErrorNavigateTo:cr.ERROR_SCREEN}}),o(cr.CAPTCHA_SCREEN)):h(n,void 0,c?.login?.disableSignup)},disabled:d,children:[g,\" \",y,m?.loginMethod===n&&/*#__PURE__*/t(Fp,{color:\"gray\",children:\"Recent\"})]})};let Fp=/*#__PURE__*/ja(vt).withConfig({displayName:\"StyledChip\",componentId:\"sc-c2aa414-0\"})([\"margin-left:auto;\"]);function Bp(n){/*#__PURE__*/return e(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",xmlnsXlink:\"http://www.w3.org/1999/xlink\",viewBox:\"0 0 240 240\",...n,children:[/*#__PURE__*/t(\"defs\",{children:/*#__PURE__*/e(\"linearGradient\",{x1:\"120\",y1:\"240\",x2:\"120\",gradientUnits:\"userSpaceOnUse\",id:\"telegram-linear-gradient\",children:[/*#__PURE__*/t(\"stop\",{offset:\"0\",stopColor:\"#1d93d2\"}),/*#__PURE__*/t(\"stop\",{offset:\"1\",stopColor:\"#38b0e3\"})]})}),/*#__PURE__*/t(\"title\",{children:\"Telegram_logo\"}),/*#__PURE__*/t(\"circle\",{cx:\"120\",cy:\"120\",r:\"120\",fill:\"url(#telegram-linear-gradient)\"}),/*#__PURE__*/t(\"path\",{d:\"M81.229,128.772l14.237,39.406s1.78,3.687,3.686,3.687,30.255-29.492,30.255-29.492l31.525-60.89L81.737,118.6Z\",fill:\"#c8daea\"}),/*#__PURE__*/t(\"path\",{d:\"M100.106,138.878l-2.733,29.046s-1.144,8.9,7.754,0,17.415-15.763,17.415-15.763\",fill:\"#a9c6d8\"}),/*#__PURE__*/t(\"path\",{d:\"M81.486,130.178,52.2,120.636s-3.5-1.42-2.373-4.64c.232-.664.7-1.229,2.1-2.2,6.489-4.523,120.106-45.36,120.106-45.36s3.208-1.081,5.1-.362a2.766,2.766,0,0,1,1.885,2.055,9.357,9.357,0,0,1,.254,2.585c-.009.752-.1,1.449-.169,2.542-.692,11.165-21.4,94.493-21.4,94.493s-1.239,4.876-5.678,5.043A8.13,8.13,0,0,1,146.1,172.5c-8.711-7.493-38.819-27.727-45.472-32.177a1.27,1.27,0,0,1-.546-.9c-.093-.469.417-1.05.417-1.05s52.426-46.6,53.821-51.492c.108-.379-.3-.566-.848-.4-3.482,1.281-63.844,39.4-70.506,43.607A3.21,3.21,0,0,1,81.486,130.178Z\",fill:\"#fff\"})]})}const zp=()=>{let{enabled:n,token:r}=it(),{navigate:a,setModalData:i,data:o}=lr(),[l,c]=s(!1),{initLoginWithTelegram:d}=x(),{accountType:u}=gt();async function h(e){try{await d(e,o?.login?.disableSignup),i({telegramAuthModalData:{seamlessAuth:!1}}),a(cr.TELEGRAM_AUTH_SCREEN)}catch(e){console.error(e),c(!1)}}/*#__PURE__*/return e(el,{onClick:async function(){if(c(!0),n&&!r)return i({captchaModalData:{callback:h,userIntentRequired:!0,onSuccessNavigateTo:null,onErrorNavigateTo:cr.ERROR_SCREEN}}),void a(cr.CAPTCHA_SCREEN);await h(r)},disabled:l,children:[/*#__PURE__*/t(Bp,{}),\"Telegram\",\"telegram\"===u&&/*#__PURE__*/t(Hp,{color:\"gray\",children:\"Recent\"})]})};let Hp=/*#__PURE__*/ja(vt).withConfig({displayName:\"StyledChip\",componentId:\"sc-f716a3a1-0\"})([\"margin-left:auto;\"]);const Vp=({onClick:n,text:r,icon:a})=>/*#__PURE__*/e(el,{onClick:n,children:[a,/*#__PURE__*/t(Ks,{children:r}),/*#__PURE__*/t(Qi,{})]}),$p=({connectOnly:r})=>{let{closePrivyModal:a,connectors:l}=x(),{data:c,onUserCloseViaDialogOrKeybindRef:d}=lr(),u=dr(),{accountType:h,walletClientType:p,chainType:m}=gt(),y=i((()=>h&&\"guest\"!==h&&\"signer\"!==h&&\"cross_app\"!==h?fp(h):null),[h]),g=c?.login,{email:f,sms:w,google:v,twitter:C,discord:E,github:T,spotify:b,instagram:A,tiktok:_,linkedin:k,apple:I,wallet:N,farcaster:S,telegram:R}=i((()=>g?.loginMethods?Pi(g.loginMethods,!0):null),[g])??u.loginMethods,{passkey:O}=u.loginMethods,W=[f&&\"email\",w&&\"sms\",v&&\"google\",C&&\"twitter\",E&&\"discord\",T&&\"github\",b&&\"spotify\",A&&\"instagram\",_&&\"tiktok\",k&&\"linkedin\",I&&\"apple\",S&&\"farcaster\",R&&\"telegram\"].filter((e=>!!e)),M=W.length>0,P=i((()=>N&&!M?\"web3-first\":N&&u?.appearance.loginGroupPriority||\"web2-first\"),[N,M,u?.appearance.loginGroupPriority]),L=u?.appearance.hideDirectWeb2Inputs,[D,U]=s(\"default\"),[F,B]=s(Yp({mostRecentlyUsedAccountType:h,smsAvailable:w,emailAvailable:f,prefilledType:g?.prefill?.type}));o((()=>{B(Yp({mostRecentlyUsedAccountType:h,smsAvailable:w,emailAvailable:f,prefilledType:g?.prefill?.type}))}),[f,w,h]);let z=()=>{a({shouldCallAuthOnSuccess:!0}),setTimeout((()=>{U(\"default\")}),150)};d.current=z;let H=[];p&&N?H.push(p):y?.loginMethod&&W.includes(y.loginMethod)&&H.push(y.loginMethod);let V=e=>\"email\"===e?/*#__PURE__*/t(_p,{isEditable:\"email\"===F,setIsEditable:()=>{B(\"email\")},defaultValue:\"email\"===g?.prefill?.type?g.prefill.value:void 0},e):\"sms\"===e?/*#__PURE__*/t(Lp,{isEditable:\"sms\"===F,setIsEditable:()=>{B(\"sms\")},defaultValue:\"phone\"===g?.prefill?.type?g.prefill.value:void 0},e):\"apple\"===e?/*#__PURE__*/t(Up,{provider:\"apple\"},e):\"discord\"===e?/*#__PURE__*/t(Up,{provider:\"discord\"},e):\"farcaster\"===e?/*#__PURE__*/t(kp,{},e):\"github\"===e?/*#__PURE__*/t(Up,{provider:\"github\"},e):\"google\"===e?/*#__PURE__*/t(Up,{provider:\"google\"},e):\"linkedin\"===e?/*#__PURE__*/t(Up,{provider:\"linkedin\"},e):\"tiktok\"===e?/*#__PURE__*/t(Up,{provider:\"tiktok\"},e):\"spotify\"===e?/*#__PURE__*/t(Up,{provider:\"spotify\"},e):\"instagram\"===e?/*#__PURE__*/t(Up,{provider:\"instagram\"},e):\"twitter\"===e?/*#__PURE__*/t(Up,{provider:\"twitter\"},e):\"telegram\"===e?/*#__PURE__*/t(zp,{},e):Ac({walletList:u.appearance.walletList,walletChainType:g?.walletChainType??u.appearance.walletChainType,connectors:l,connectOnly:r,ignore:[],walletConnectEnabled:u.externalWallets.walletConnect.enabled,forceWallet:{wallet:e,chainType:m??\"ethereum\"}}),$=Ac({walletList:u.appearance.walletList.filter((e=>e!==p)),walletChainType:g?.walletChainType??u.appearance.walletChainType,connectors:l,connectOnly:r,ignore:[...u.appearance.walletList,p],walletConnectEnabled:u.externalWallets.walletConnect.enabled}),j=W.filter((e=>e!==y?.loginMethod)).flatMap(V),G=H.flatMap(V);\"web3-first\"===P&&\"default\"===D?$.unshift(...G):\"web2-first\"===P&&j.unshift(...G);let q=W.filter((e=>\"email\"!==e&&\"sms\"!==e)),K=Gp({priority:P,email:f,sms:w,social:q}),Y=qp({priority:P,email:f,sms:w,social:q}),Z=/*#__PURE__*/t(sp,{text:Kp({priority:P}),onClick:()=>U(\"web3-overflow\")}),J=/*#__PURE__*/t(Vp,{text:K,icon:Y,onClick:()=>U(\"web2-overflow\")}),Q=L?0:1,X=N&&$.length>0,ee=0===j.length&&N&&0===$.length,te=5-(X?1:0),ne=$.length>0?$:/*#__PURE__*/t(hc,{chainType:u.appearance.walletChainType,withPadding:!0});/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{title:u.appearance.landingHeader,onClose:z,backFn:\"default\"===D?void 0:()=>{U(\"default\")}}),\"default\"===D&&/*#__PURE__*/t(jp,{}),\"default\"===D&&(\"string\"==typeof u.appearance.loginMessage?/*#__PURE__*/t(Xs,{children:u.appearance.loginMessage}):u.appearance.loginMessage),/*#__PURE__*/t(Ys,{style:{overflow:\"hidden\",padding:2},children:/*#__PURE__*/e(Zs,{children:[\"default\"===D&&\"web2-first\"===P&&/*#__PURE__*/e(n,{children:[j.length>te?j.slice(0,te-1):j,j.length>te&&J,X&&Z,ee&&/*#__PURE__*/t(hc,{chainType:u.appearance.walletChainType})]}),\"default\"===D&&\"web3-first\"===P&&/*#__PURE__*/e(n,{children:[N&&/*#__PURE__*/e(n,{children:[$.length>te?$.slice(0,te-1):$,$.length>te&&Z]}),j.length>Q&&J,j.length===Q&&j[0],ee&&/*#__PURE__*/t(hc,{chainType:u.appearance.walletChainType})]}),\"web2-overflow\"===D&&/*#__PURE__*/t(n,{children:\"web3-first\"===P?j:j.slice(3)}),\"web3-overflow\"===D?ne:[],O&&\"default\"===D&&/*#__PURE__*/t(xp,{})]})}),u&&/*#__PURE__*/t(Et,{app:u}),/*#__PURE__*/t(ct,{})]})};let jp=/*#__PURE__*/ja(vp).withConfig({displayName:\"StyledAppLogoHeader\",componentId:\"sc-2678dfdf-0\"})([\"margin-bottom:16px;\"]),Gp=({priority:e,email:t,sms:n,social:r})=>\"web2-first\"===e?\"Other socials\":t&&n&&r.length>0||t&&r.length>0?\"Log in with email or socials\":n&&r.length>0?\"Log in with sms or socials\":t&&n?\"Continue with email or sms\":t?\"Continue with email\":n?\"Continue with sms\":\"Log in with a social account\",qp=({priority:e,email:n,sms:r,social:a})=>\"web2-first\"===e||a.length>0?/*#__PURE__*/t(vi,{}):n&&r?/*#__PURE__*/t(Np,{}):n?/*#__PURE__*/t(ni,{}):r?/*#__PURE__*/t(ri,{}):null,Kp=({priority:e})=>\"web2-first\"===e?\"Continue with a wallet\":\"Other wallets\";const Yp=({mostRecentlyUsedAccountType:e,smsAvailable:t,emailAvailable:n,prefilledType:r})=>n&&(\"email\"===e&&\"phone\"!==r||\"email\"===r)||!t||\"phone\"!==e&&\"phone\"!==r?\"email\":\"sms\",Zp=({connectOnly:r})=>{let{closePrivyModal:a,connectors:l}=x(),{app:c,onUserCloseViaDialogOrKeybindRef:d,data:u}=lr(),{appearance:{palette:{colorScheme:h}}}=dr(),{accountType:p,walletClientType:m,chainType:y}=gt(),g=i((()=>p&&\"guest\"!==p&&\"signer\"!==p&&\"cross_app\"!==p?fp(p):null),[p]),f=c.loginMethodsAndOrder?.primary??[],w=c.loginMethodsAndOrder?.overflow??[],v=i((()=>[...f,...w]),[f,w]),C=c.loginMethods.passkey,E=u?.login,T=[];m&&v.includes(m)?T.push(m):p&&v.includes(g?.loginMethod)&&T.push(g?.loginMethod);let[b,A]=s(\"default\"),[_,k]=s(Yp({mostRecentlyUsedAccountType:p,smsAvailable:v.includes(\"sms\"),emailAvailable:v.includes(\"email\"),prefilledType:E?.prefill?.type}));o((()=>{k(Yp({mostRecentlyUsedAccountType:p,smsAvailable:v.includes(\"sms\"),emailAvailable:v.includes(\"email\"),prefilledType:E?.prefill?.type}))}),[v,p]),o((()=>{\"phone\"===p&&k(\"sms\");let e=v.indexOf(\"sms\"),t=v.indexOf(\"email\");e>-1&&e<t&&k(\"sms\")}),[p,f,w]);let I=()=>{a({shouldCallAuthOnSuccess:!0}),setTimeout((()=>{A(\"default\")}),150)};d.current=I;let N=e=>\"email\"===e?/*#__PURE__*/t(_p,{isEditable:\"email\"===_,setIsEditable:()=>{k(\"email\")},defaultValue:\"email\"===E?.prefill?.type?E.prefill.value:void 0},e):\"sms\"===e?/*#__PURE__*/t(Lp,{isEditable:\"sms\"===_,setIsEditable:()=>{k(\"sms\")},defaultValue:\"phone\"===E?.prefill?.type?E.prefill.value:void 0},e):\"apple\"===e?/*#__PURE__*/t(Up,{provider:\"apple\"},e):\"discord\"===e?/*#__PURE__*/t(Up,{provider:\"discord\"},e):\"farcaster\"===e?/*#__PURE__*/t(kp,{},e):\"github\"===e?/*#__PURE__*/t(Up,{provider:\"github\"},e):\"google\"===e?/*#__PURE__*/t(Up,{provider:\"google\"},e):\"linkedin\"===e?/*#__PURE__*/t(Up,{provider:\"linkedin\"},e):\"spotify\"===e?/*#__PURE__*/t(Up,{provider:\"spotify\"},e):\"instagram\"===e?/*#__PURE__*/t(Up,{provider:\"instagram\"},e):\"tiktok\"===e?/*#__PURE__*/t(Up,{provider:\"tiktok\"},e):\"twitter\"===e?/*#__PURE__*/t(Up,{provider:\"twitter\"},e):\"telegram\"===e?/*#__PURE__*/t(zp,{},e):e.startsWith(\"privy:\")?/*#__PURE__*/t(Ep,{appId:e.replace(\"privy:\",\"\")},e):Ac({walletList:c.appearance.walletList,walletChainType:E?.walletChainType??c.appearance.walletChainType,connectors:l,connectOnly:r,ignore:v,walletConnectEnabled:c.externalWallets.walletConnect.enabled,forceWallet:{wallet:e,chainType:y??\"ethereum\"}}),S=T.flatMap(N),R=f.filter((e=>e!==m&&e!==g?.loginMethod)).flatMap(N),O=w.filter((e=>e!==m&&e!==g?.loginMethod)).flatMap(N),[W,M]=fn([...S,...R,...O],Jp({primary:R.length+S.length,overflow:O.length}));/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{title:c.appearance.landingHeader,onClose:I,backFn:\"default\"===b?void 0:()=>{A(\"default\")}}),\"default\"===b&&/*#__PURE__*/t(Qp,{}),\"default\"===b&&(\"string\"==typeof c.appearance.loginMessage?/*#__PURE__*/t(Xs,{children:c.appearance.loginMessage}):c.appearance.loginMessage),/*#__PURE__*/t(Ys,{style:{overflow:\"hidden\"},children:/*#__PURE__*/e(Js,{$colorScheme:h,children:[\"default\"===b&&/*#__PURE__*/e(n,{children:[W,M.length>0&&/*#__PURE__*/t(Vp,{text:\"More options\",icon:/*#__PURE__*/t(vi,{}),onClick:()=>A(\"overflow\")})]}),\"overflow\"===b&&/*#__PURE__*/t(n,{children:M}),C&&\"default\"===b&&/*#__PURE__*/t(xp,{})]})}),c&&/*#__PURE__*/t(Et,{app:c}),/*#__PURE__*/t(ct,{})]})};let Jp=({primary:e,overflow:t})=>e<5?e:5===e&&0===t?5:4,Qp=/*#__PURE__*/ja(vp).withConfig({displayName:\"StyledAppLogoHeader\",componentId:\"sc-85b7f7ea-0\"})([\"margin-bottom:16px;\"]);const Xp=({style:n,...r})=>/*#__PURE__*/e(\"svg\",{width:\"164\",height:\"164\",viewBox:\"0 0 164 164\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",style:{height:\"26px\",width:\"26px\",...n},...r,children:[/*#__PURE__*/t(\"circle\",{cx:\"82\",cy:\"82\",r:\"80\",stroke:\"#EC6351\",\"stroke-width\":\"4\",\"stroke-linecap\":\"round\"}),/*#__PURE__*/t(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M81.9999 100.788C93.3288 100.788 102.513 91.6043 102.513 80.2754C102.513 68.9465 93.3288 59.7626 81.9999 59.7626C70.671 59.7626 61.4871 68.9465 61.4871 80.2754C61.4871 91.6043 70.671 100.788 81.9999 100.788ZM88.3236 71.8304C88.9093 71.2446 89.8591 71.2446 90.4449 71.8304C91.0307 72.4161 91.0307 73.3659 90.4449 73.9517L84.121 80.2756L90.445 86.5996C91.0308 87.1854 91.0308 88.1351 90.445 88.7209C89.8592 89.3067 88.9095 89.3067 88.3237 88.7209L81.9997 82.3969L75.6756 88.7209C75.0899 89.3067 74.1401 89.3067 73.5543 88.7209C72.9685 88.1351 72.9685 87.1854 73.5543 86.5996L79.8783 80.2756L73.5544 73.9517C72.9686 73.3659 72.9686 72.4161 73.5544 71.8304C74.1402 71.2446 75.09 71.2446 75.6758 71.8304L81.9997 78.1543L88.3236 71.8304Z\",fill:\"#EC6351\"})]});function em(){let{promptMfa:e,init:t,submit:n,cancel:r,mfaMethods:a}=h(Wr);return{promptMfa:e,init:t,submit:n,cancel:r,mfaMethods:a}}function tm(){let{initEnrollmentWithSms:e,initEnrollmentWithTotp:t,initEnrollmentWithPasskey:n,submitEnrollmentWithSms:r,submitEnrollmentWithTotp:a,submitEnrollmentWithPasskey:i,unenroll:o,enrollInMfa:s}=h(Wr);return{initEnrollmentWithSms:e,initEnrollmentWithTotp:t,initEnrollmentWithPasskey:n,submitEnrollmentWithSms:r,submitEnrollmentWithTotp:a,submitEnrollmentWithPasskey:i,unenrollWithSms:()=>o(\"sms\"),unenrollWithTotp:()=>o(\"totp\"),unenrollWithPasskey:e=>o(\"passkey\",e),showMfaEnrollmentModal:()=>s(!0),closeMfaEnrollmentModal:()=>s(!1)}}const nm=n=>/*#__PURE__*/e(rm,{xmlns:\"http://www.w3.org/2000/svg\",fill:\"none\",width:\"88\",height:\"89\",viewBox:\"0 0 88 89\",...n,children:[/*#__PURE__*/t(\"rect\",{y:\"0.666016\",width:\"88\",height:\"88\",rx:\"44\"}),/*#__PURE__*/t(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M45.2463 20.9106C44.5473 20.2486 43.4527 20.2486 42.7537 20.9106C37.8798 25.5263 31.3034 28.3546 24.0625 28.3546C23.9473 28.3546 23.8323 28.3539 23.7174 28.3525C22.9263 28.3427 22.2202 28.8471 21.9731 29.5987C20.9761 32.6311 20.4375 35.8693 20.4375 39.2297C20.4375 53.5896 30.259 65.651 43.5482 69.0714C43.8446 69.1477 44.1554 69.1477 44.4518 69.0714C57.741 65.651 67.5625 53.5896 67.5625 39.2297C67.5625 35.8693 67.0239 32.6311 66.0269 29.5987C65.7798 28.8471 65.0737 28.3427 64.2826 28.3525C64.1677 28.3539 64.0527 28.3546 63.9375 28.3546C56.6966 28.3546 50.1202 25.5263 45.2463 20.9106ZM52.7249 40.2829C53.3067 39.4683 53.1181 38.3363 52.3035 37.7545C51.4889 37.1726 50.3569 37.3613 49.7751 38.1759L41.9562 49.1223L38.0316 45.1977C37.3238 44.4899 36.1762 44.4899 35.4684 45.1977C34.7605 45.9056 34.7605 47.0532 35.4684 47.761L40.9059 53.1985C41.2826 53.5752 41.806 53.7671 42.337 53.7232C42.868 53.6792 43.3527 53.4039 43.6624 52.9704L52.7249 40.2829Z\"})]});let rm=/*#__PURE__*/ja.svg.withConfig({displayName:\"StyledSvg\",componentId:\"sc-59fa943f-0\"})([\"height:90px;width:90px;> rect{\",\"}> path{fill:white;}\"],(e=>\"success\"===e.color?\"fill: var(--privy-color-success);\":\"fill: var(--privy-color-accent);\"));const am=({showIntro:r,userMfaMethods:a,appMfaMethods:i,userHasAuthSms:o,isTotpLoading:s,isPasskeyLoading:l,error:c,onClose:d,onBackToIntro:u,handleSelectMethod:h,setRemovingMfaMethod:p})=>{let m=a.reduce(((e,t)=>({...e,[t]:!0})),{}),y=i.reduce(((e,t)=>({...e,[t]:!0})),{});/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{backFn:r?u:void 0,onClose:d},\"header\"),/*#__PURE__*/t(Ul,{style:{marginBottom:\"1.5rem\"},children:/*#__PURE__*/t(ro,{})}),/*#__PURE__*/t(bl,{children:\"Choose a verification method\"}),a.length>0?/*#__PURE__*/t(Al,{children:\"To add or delete verification methods, verification is required.\"}):/*#__PURE__*/t(Al,{children:\"How would you like to verify your identity? You can change this later.\"}),c&&/*#__PURE__*/t(Fl,{style:{marginTop:\"1.25rem\"},children:c.message}),/*#__PURE__*/e(Sl,{children:[(y.totp||m.totp)&&/*#__PURE__*/e(Rl,{children:[/*#__PURE__*/t(el,{style:{justifyContent:\"center\"},disabled:m.totp||s,onClick:()=>h(\"totp\"),children:s?/*#__PURE__*/t(Ht,{style:{height:24,width:24,borderWidth:2},color:\"var(--privy-color-foreground-3)\"}):/*#__PURE__*/e(Pl,{children:[/*#__PURE__*/e(Wl,{children:[/*#__PURE__*/t(io,{}),\"Authenticator app\"]}),m.totp?/*#__PURE__*/t(im,{color:\"green\",children:\"Enabled\"}):/*#__PURE__*/t(Ml,{children:\"Recommended\"})]})}),m.totp&&/*#__PURE__*/t(Ol,{style:{position:\"absolute\",right:0},onClick:()=>p(\"totp\"),children:/*#__PURE__*/t(oo,{})})]},\"totp\"),(y.sms||m.sms)&&/*#__PURE__*/e(Rl,{children:[/*#__PURE__*/t(el,{disabled:m.sms||o,onClick:()=>h(\"sms\"),children:/*#__PURE__*/e(Pl,{children:[/*#__PURE__*/e(Wl,{children:[/*#__PURE__*/t(ri,{}),\"SMS\"]}),m.sms&&/*#__PURE__*/t(im,{color:\"green\",children:\"Enabled\"}),o&&/*#__PURE__*/t(Ml,{children:\"Disabled\"})]})}),m.sms&&/*#__PURE__*/t(Ol,{style:{position:\"absolute\",right:0},onClick:()=>p(\"sms\"),children:/*#__PURE__*/t(oo,{})})]},\"sms\"),(y.passkey||m.passkey)&&/*#__PURE__*/e(Rl,{children:[/*#__PURE__*/t(el,{style:{justifyContent:\"center\"},onClick:()=>h(\"passkey\"),disabled:m.passkey||l,children:l?/*#__PURE__*/t(Ht,{style:{height:24,width:24,borderWidth:2},color:\"var(--privy-color-foreground-3)\"}):/*#__PURE__*/e(Pl,{children:[/*#__PURE__*/e(Wl,{children:[/*#__PURE__*/t(Xi,{}),\"Passkey\"]}),m.passkey?/*#__PURE__*/t(im,{color:\"green\",children:\"Enabled\"}):/*#__PURE__*/t(Ml,{isAccent:!0,children:/*#__PURE__*/t(Qi,{})})]})}),m.passkey&&/*#__PURE__*/t(Ol,{style:{position:\"absolute\",right:0},onClick:()=>p(\"passkey\"),children:/*#__PURE__*/t(oo,{})})]},\"passkey\")]}),/*#__PURE__*/t(yt,{})]})};let im=/*#__PURE__*/ja(vt).withConfig({displayName:\"StyledChip\",componentId:\"sc-998ca5bc-0\"})([\"margin-right:1.5rem;\"]);const om=({appName:e,onComplete:n,onClose:r,onReset:a})=>{let{user:o}=ur(),{data:l}=lr(),{initLinkWithPasskey:c,linkWithPasskey:d}=x(),{initEnrollmentWithPasskey:u,submitEnrollmentWithPasskey:h}=tm(),[p,m]=s(!1),[y,g]=s(!1),[f,w]=s(!1),[v,C]=s(null),E=i((()=>o?.linkedAccounts.filter((e=>\"passkey\"===e.type))??[]),[o]),T=()=>{l?.mfaEnrollmentFlow?.onSuccess(),n()},b=async e=>{m(!0);try{await u(),await h({credentialIds:e},{removeForLogin:l?.mfaEnrollmentFlow?.shouldUnlinkOnUnenrollMfa}),w(!0)}catch(e){C(e)}finally{m(!1)}},A=async()=>{g(!0),C(null);try{await c();let e=await d(),t=e?.linkedAccounts.filter((e=>\"passkey\"===e.type)).map((e=>e.credentialId))??[];await b(t)}catch(e){C(e)}finally{g(!1)}};return 0===E.length||y?/*#__PURE__*/t(sm,{onReset:a,onClose:r,onClick:A,isCreating:y}):f?/*#__PURE__*/t(cm,{appName:e,onClick:T,onClose:T}):v?/*#__PURE__*/t(au,{error:v,backFn:()=>C(null),onClick:()=>C(null)}):/*#__PURE__*/t(lm,{passkeys:E,isSubmitting:p,isCreating:y,onReset:a,onClose:r,onSubmitEnrollment:()=>b(E.map((e=>e.credentialId))),onAddPasskey:A})};let sm=({onReset:r,onClose:a,onClick:i,isCreating:o})=>/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{backFn:r,onClose:a},\"header\"),/*#__PURE__*/t(Tl,{children:/*#__PURE__*/e(ih,{children:[/*#__PURE__*/t(th,{}),/*#__PURE__*/t(nh,{})]})}),/*#__PURE__*/t(bl,{children:\"Set up passkey verification\"}),/*#__PURE__*/e(kl,{children:[/*#__PURE__*/e(Nl,{children:[/*#__PURE__*/t(Il,{children:/*#__PURE__*/t(ro,{})}),\"Verify with Touch ID, Face ID, PIN, or hardware key\"]}),/*#__PURE__*/e(Nl,{children:[/*#__PURE__*/t(Il,{children:/*#__PURE__*/t(eo,{})}),\"Takes seconds to set up and use\"]}),/*#__PURE__*/e(Nl,{children:[/*#__PURE__*/t(Il,{children:/*#__PURE__*/t(so,{})}),\"Use your passkey to verify transactions and login to your account\"]})]}),/*#__PURE__*/t(st,{style:{marginTop:\"2.25rem\"},onClick:i,loading:o,children:\"Add a new passkey\"}),/*#__PURE__*/t(yt,{})]}),lm=({onReset:r,onClose:a,onAddPasskey:i,onSubmitEnrollment:o,passkeys:l,isSubmitting:c,isCreating:d})=>{let[u,h]=s(!1),p=u?l.length:l.length>3?2:3;/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{backFn:u?()=>h(!1):r,onClose:a},\"header\"),!u&&/*#__PURE__*/t(Tl,{children:/*#__PURE__*/e(ih,{children:[/*#__PURE__*/t(th,{}),/*#__PURE__*/t(nh,{})]})}),/*#__PURE__*/t(bl,{children:\"Enable your passkeys for verification\"}),/*#__PURE__*/e(kl,{children:[l.slice(0,p).map((n=>/*#__PURE__*/e(dm,{children:[/*#__PURE__*/t(um,{children:pm(n)}),/*#__PURE__*/e(hm,{children:[\"Last used: \",n.latestVerifiedAt?.toLocaleString()]})]},n.credentialId))),!u&&l.length>3&&/*#__PURE__*/t(mm,{onClick:()=>h(!0),children:\"View All\"})]}),/*#__PURE__*/t(st,{style:{marginTop:\"1.5rem\"},onClick:o,loading:c,children:\"Enable passkeys\"}),l.length<5&&/*#__PURE__*/t(mm,{style:{marginTop:\"0.5rem\"},onClick:i,disabled:d,children:d?/*#__PURE__*/t(Ht,{style:{height:\"1rem\",width:\"1rem\",borderWidth:2}}):\"Add new passkey\"}),/*#__PURE__*/t(yt,{})]})},cm=({appName:r,onClick:a,onClose:i})=>/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{onClose:i},\"header\"),/*#__PURE__*/t(Ul,{style:{marginBottom:\"1.5rem\"},children:/*#__PURE__*/t(oi,{})}),/*#__PURE__*/t(bl,{children:\"Passkey verification added\"}),/*#__PURE__*/e(Al,{children:[\"From now on, you'll use the passkey whenever you use your \",r,\" wallet.\"]}),/*#__PURE__*/t(xl,{children:/*#__PURE__*/t(st,{onClick:a,children:\"Done\"})}),/*#__PURE__*/t(yt,{})]}),dm=/*#__PURE__*/ja.div.withConfig({displayName:\"PasskeyItem\",componentId:\"sc-d5b2bf9c-0\"})([\"&&{padding:0.75rem 1rem;text-align:left;border-radius:0.5rem;border:1px solid var(--privy-color-foreground-4);width:100%;}\"]),um=/*#__PURE__*/ja.div.withConfig({displayName:\"PasskeyItemTitle\",componentId:\"sc-d5b2bf9c-1\"})([\"font-size:0.875rem;line-height:1.375rem;font-weight:500;color:var(--privy-color-foreground-1);\"]),hm=/*#__PURE__*/ja.div.withConfig({displayName:\"PasskeyItemSubtitle\",componentId:\"sc-d5b2bf9c-2\"})([\"font-size:0.75rem;font-weight:400;line-height:1.125rem;color:var(--privy-color-foreground-2);\"]),pm=e=>e.authenticatorName?e.createdWithBrowser?`${e.authenticatorName} on ${e.createdWithBrowser}`:e.authenticatorName:e.createdWithBrowser?e.createdWithOs?`${e.createdWithBrowser} on ${e.createdWithOs}`:`${e.createdWithBrowser}`:\"Unknown device\";const mm=/*#__PURE__*/ja.button.withConfig({displayName:\"StyledLink\",componentId:\"sc-d5b2bf9c-3\"})([\"&&{width:100%;font-size:0.875rem;line-height:1rem;@media (min-width:440px){font-size:14px;}display:flex;gap:12px;justify-content:center;padding:0.75rem 1rem;background-color:var(--privy-color-background);transition:background-color 200ms ease;color:var(--privy-color-accent);:focus{outline:none;box-shadow:none;}}\"]);let ym=Array(6).fill(\"\");var gm,fm=((gm=fm||{})[gm.RESET_AFTER_DELAY=0]=\"RESET_AFTER_DELAY\",gm[gm.CLEAR_ON_NEXT_VALID_INPUT=1]=\"CLEAR_ON_NEXT_VALID_INPUT\",gm);function wm(e){return/^[0-9]{1}$/.test(e)}function vm(e){return 6===e.length&&e.every(wm)}const Cm=({onChange:r,disabled:a,errorReasonOverride:i,success:o})=>{let[l,c]=s(ym),[d,u]=s(null),[h,p]=s(null),m=async e=>{e.preventDefault();let t=e.currentTarget.value.replace(/\\s+/g,\"\");if(\"\"===t)return;let n=l.reduce(((e,t)=>e+Number(wm(t))),0),a=t.split(\"\"),i=!a.every(wm),o=a.length+n>6;if(i)return u(\"Passcode can only be numbers\"),void p(1);if(o)return u(\"Passcode must be exactly 6 numbers\"),void p(1);u(null),p(null);let s=Number(e.currentTarget.name?.charAt(4)),d=[...t||[\"\"]].slice(0,6-s),h=[...l.slice(0,s),...d,...l.slice(s+d.length)];c(h);let m=Math.min(Math.max(s+d.length,0),5),y=document.querySelector(`input[name=pin-${m}]`);if(y?.focus(),vm(h))try{await r(h.join(\"\"));let e=document.querySelector(`input[name=pin-${m}]`);e?.blur()}catch(e){p(1),u(e.message)}else try{await r(null)}catch(e){p(1),u(e.message)}},g=o?\"success\":!(!i&&!d)?\"fail\":\"\";/*#__PURE__*/return t(n,{children:/*#__PURE__*/e(Em,{children:[/*#__PURE__*/t(\"div\",{children:l.map(((e,n)=>/*#__PURE__*/t(\"input\",{name:`pin-${n}`,type:\"text\",value:l[n],onChange:m,onKeyUp:e=>{\"Backspace\"===e.key&&(e=>{1===h&&(u(null),p(null));let t=[...l.slice(0,e),\"\",...l.slice(e+1)];if(c(t),e>0){let t=document.querySelector(`input[name=pin-${e-1}]`);t?.focus()}vm(t)?r(t.join(\"\")):r(null)})(n)},inputMode:\"numeric\",autoFocus:0===n,pattern:\"[0-9]\",className:g,autoComplete:y?\"one-time-code\":\"off\",disabled:a},n)))}),/*#__PURE__*/t(\"div\",{children:/*#__PURE__*/t(Tm,{$fail:!!i||!!d,children:i||d})})]})})};let Em=/*#__PURE__*/ja.div.withConfig({displayName:\"PinInputContainer\",componentId:\"sc-7a171f6-0\"})([\"display:flex;flex-direction:column;width:100%;gap:8px;@media (max-width:440px){margin-top:8px;margin-bottom:8px;}> div:nth-child(1){display:flex;justify-content:center;gap:0.5rem;width:100%;border-radius:var(--privy-border-radius-md);> input{border:1px solid var(--privy-color-foreground-4);background:var(--privy-color-background);border-radius:var(--privy-border-radius-md);padding:8px 10px;height:58px;width:46px;text-align:center;font-size:18px;}> input:disabled{background:var(--privy-color-background-2);}> input:focus{border:1px solid var(--privy-color-accent);}> input:invalid{border:1px solid var(--privy-color-error);}> input.success{border:1px solid var(--privy-color-success);}> input.fail{border:1px solid var(--privy-color-error);animation:shake 180ms;animation-iteration-count:2;}}@keyframes shake{0%{transform:translate(1px,0px);}33%{transform:translate(-1px,0px);}67%{transform:translate(-1px,0px);}100%{transform:translate(1px,0px);}}\"]),Tm=/*#__PURE__*/ja.div.withConfig({displayName:\"InputHelp\",componentId:\"sc-7a171f6-1\"})([\"line-height:20px;font-size:13px;display:flex;justify-content:flex-start;width:100%;color:\",\";\"],(e=>e.$fail?\"var(--privy-color-error)\":\"var(--privy-color-foreground-3)\"));const bm=({appName:r,onComplete:a,onReset:i,onClose:o})=>{let[l,c]=s(\"\"),[d,u]=s(!1),[h,p]=s(null),[m,y]=s(\"enroll\"),{initEnrollmentWithSms:g,submitEnrollmentWithSms:f}=tm(),{app:w,data:v}=lr();function C(){v?.mfaEnrollmentFlow?.onSuccess(),a()}return h?/*#__PURE__*/t(au,{error:h,backFn:()=>p(null),onClick:()=>p(null)}):/*#__PURE__*/e(n,\"enroll\"===m?{children:[/*#__PURE__*/t(ot,{backFn:i,onClose:o},\"header\"),/*#__PURE__*/t(Ul,{style:{marginBottom:\"1.5rem\"},children:/*#__PURE__*/t(ri,{})}),/*#__PURE__*/t(bl,{children:\"Set up SMS verification\"}),/*#__PURE__*/e(Al,{children:[\"We'll text a verification code to this mobile device whenever you use your \",r,\" \",\"wallet.\"]}),/*#__PURE__*/e(_l,{children:[/*#__PURE__*/t(Wp,{onSubmit:async function({qualifiedPhoneNumber:e}){try{await g({phoneNumber:e}),c(e),y(\"verify\")}catch(e){p(e)}},hideRecent:!0}),/*#__PURE__*/e(Ll,{children:[\"By providing your mobile number, you agree to receive text messages from \",w?.name,\". Some carrier charges may apply\"]})]}),/*#__PURE__*/t(yt,{})]}:d?{children:[/*#__PURE__*/t(ot,{onClose:C},\"header\"),/*#__PURE__*/t(Ul,{style:{marginBottom:\"1.5rem\"},children:/*#__PURE__*/t(oi,{})}),/*#__PURE__*/t(bl,{children:\"SMS verification added\"}),/*#__PURE__*/e(Al,{children:[\"From now on, you'll enter the verification code sent to your mobile device whenever you use your \",r,\" wallet.\"]}),/*#__PURE__*/t(xl,{children:/*#__PURE__*/t(st,{onClick:C,children:\"Done\"})}),/*#__PURE__*/t(yt,{})]}:{children:[/*#__PURE__*/t(ot,{backFn:function(){\"verify\"===m?y(\"enroll\"):i()},onClose:o},\"header\"),/*#__PURE__*/t(Ul,{style:{marginBottom:\"1.5rem\"},children:/*#__PURE__*/t(ri,{})}),/*#__PURE__*/t(bl,{children:\"Enter enrollment code\"}),/*#__PURE__*/e(_l,{children:[/*#__PURE__*/t(Cm,{onChange:async function(e){try{if(!e)return;await f({phoneNumber:l,mfaCode:e}),u(!0)}catch(e){if(Vc(e))throw Error(\"You have exceeded the maximum number of attempts. Please close this window and try again in 10 seconds.\");if(zc(e))throw Error(\"The code you entered is not valid\");if(Bc(e))throw Error(\"You have exceeded the time limit for code entry. Please try again in 30 seconds.\");throw $c(e)?Error(\"Verification canceled\"):Error(\"Unknown error\")}}}),/*#__PURE__*/e(Al,{children:[\"To continue, enter the 6-digit code sent to \",/*#__PURE__*/t(\"strong\",{children:Li(l)})]})]}),/*#__PURE__*/t(yt,{})]})},Am=({size:e,authUrl:n})=>/*#__PURE__*/t(zt,{url:n,squareLogoElement:lo,size:e,fgColor:\"#1F1F1F\"}),_m=({onComplete:r,onClose:a,onReset:i,totpInfo:o})=>{let[l,c]=s(\"enroll\"),[d,u]=s(!1),{submitEnrollmentWithTotp:h}=tm(),{data:p}=lr();function m(){p?.mfaEnrollmentFlow?.onSuccess(),r()}/*#__PURE__*/return e(n,\"enroll\"===l?{children:[/*#__PURE__*/t(ot,{backFn:i,onClose:a},\"header\"),/*#__PURE__*/t(bl,{children:\"Scan QR code\"}),/*#__PURE__*/t(Al,{children:\"Open your authenticator app and scan the QR code to continue.\"}),/*#__PURE__*/t(Bt,{children:/*#__PURE__*/t(Am,{authUrl:o.authUrl,size:200})}),/*#__PURE__*/e(xl,{children:[/*#__PURE__*/t(Ft,{children:/*#__PURE__*/t(cu,{itemName:\"setup key\",text:o.secret})}),/*#__PURE__*/t(st,{onClick:function(){c(\"verify\")},children:\"Continue\"})]}),/*#__PURE__*/t(yt,{})]}:d?{children:[/*#__PURE__*/t(ot,{onClose:m},\"header\"),/*#__PURE__*/t(Ul,{style:{marginBottom:\"1.5rem\"},children:/*#__PURE__*/t(oi,{})}),/*#__PURE__*/t(bl,{children:\"Authenticator app verification added\"}),/*#__PURE__*/e(Al,{children:[\"From now on, you'll enter the verification code generated by your authenticator app whenever you use your \",o.appName,\" wallet.\"]}),/*#__PURE__*/t(xl,{children:/*#__PURE__*/t(st,{onClick:m,children:\"Done\"})}),/*#__PURE__*/t(yt,{})]}:{children:[/*#__PURE__*/t(ot,{backFn:function(){\"verify\"===l?c(\"enroll\"):i()},onClose:a},\"header\"),/*#__PURE__*/t(Ul,{style:{marginBottom:\"1.5rem\"},children:/*#__PURE__*/t(io,{})}),/*#__PURE__*/t(bl,{children:\"Enter enrollment code\"}),/*#__PURE__*/t(_l,{children:/*#__PURE__*/t(Cm,{onChange:async function(e){try{if(!e)return;await h({mfaCode:e}),u(!0)}catch(e){if(Vc(e))throw Error(\"You have exceeded the maximum number of attempts. Please close this window and try again in 10 seconds.\");if(zc(e))throw Error(\"The code you entered is not valid\");if(Bc(e))throw Error(\"You have exceeded the time limit for code entry. Please try again in 30 seconds.\");throw $c(e)?Error(\"Verification canceled\"):Error(\"Unknown error\")}}})}),/*#__PURE__*/e(Al,{children:[\"To continue, enter the 6-digit code generated from your \",/*#__PURE__*/t(\"strong\",{children:\"authenticator app\"})]}),/*#__PURE__*/t(yt,{})]})},km=({label:n,children:r,valueStyles:a})=>/*#__PURE__*/e(Im,{children:[/*#__PURE__*/t(\"div\",{children:n}),/*#__PURE__*/t(Nm,{style:{...a},children:r})]});let Im=/*#__PURE__*/ja.div.withConfig({displayName:\"StyledDetailsRow\",componentId:\"sc-4ebfdd45-0\"})([\"display:flex;align-items:center;justify-content:space-between;width:100%;> :first-child{color:var(--privy-color-foreground-3);text-align:left;}> :last-child{color:var(--privy-color-foreground-2);text-align:right;}\"]),Nm=/*#__PURE__*/ja.div.withConfig({displayName:\"ValueWrapper\",componentId:\"sc-4ebfdd45-1\"})([\"font-size:14px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:var(--privy-border-radius-full);background-color:var(--privy-color-background-2);padding:4px 8px;\"]);const xm=({weiQuantities:e,tokenPrice:n,tokenSymbol:r})=>{let a=rn(e),i=n?tn(a,n):void 0,o=Yt(a,r);/*#__PURE__*/return t(Om,{children:i||o})},Sm=({weiQuantities:r,tokenPrice:a,tokenSymbol:i})=>{let o=rn(r),s=a?tn(o,a):void 0,l=Yt(o,i);/*#__PURE__*/return t(Om,{children:s?/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(Wm,{children:\"USD\"}),\"<$0.01\"===s?\n/*#__PURE__*/e(Pm,{children:[/*#__PURE__*/t(Mm,{children:\"<\"}),\"$0.01\"]}):s]}):l})},Rm=({quantities:r,tokenPrice:a,tokenSymbol:i=\"SOL\",tokenDecimals:o=9})=>{let s=r.reduce(((e,t)=>e+t),0n),l=a&&\"SOL\"===i&&9===o?Ou(s,a):void 0,c=\"SOL\"===i&&9===o?Ru(s):`${Ra(s,o)} ${i}`;/*#__PURE__*/return t(Om,{children:l?/*#__PURE__*/t(n,{children:\"<$0.01\"===l?\n/*#__PURE__*/e(Pm,{children:[/*#__PURE__*/t(Mm,{children:\"<\"}),\"$0.01\"]}):l}):c})};let Om=/*#__PURE__*/ja.span.withConfig({displayName:\"StyledPriceDisplay\",componentId:\"sc-596cd423-0\"})([\"font-size:14px;line-height:140%;display:flex;gap:4px;align-items:center;\"]),Wm=/*#__PURE__*/ja.span.withConfig({displayName:\"StyledPriceUnit\",componentId:\"sc-596cd423-1\"})([\"font-size:12px;line-height:12px;color:var(--privy-color-foreground-3);\"]),Mm=/*#__PURE__*/ja.span.withConfig({displayName:\"TinyLessThan\",componentId:\"sc-596cd423-2\"})([\"font-size:10px;\"]),Pm=/*#__PURE__*/ja.span.withConfig({displayName:\"FlexCenter\",componentId:\"sc-596cd423-3\"})([\"display:flex;align-items:center;\"]);const Lm=({gas:n,tokenPrice:r,tokenSymbol:a})=>/*#__PURE__*/e(sn,{style:{paddingBottom:\"12px\"},children:[/*#__PURE__*/e(Um,{children:[/*#__PURE__*/t(Bm,{children:\"Est. Fees\"}),/*#__PURE__*/t(\"div\",{children:/*#__PURE__*/t(Sm,{weiQuantities:[BigInt(n)],tokenPrice:r,tokenSymbol:a})})]}),r&&/*#__PURE__*/t(Fm,{children:`${Yt(BigInt(n),a)}`})]}),Dm=({value:n,gas:r,tokenPrice:a,tokenSymbol:i})=>{let o=BigInt(n??0)+BigInt(r);/*#__PURE__*/return e(sn,{children:[/*#__PURE__*/e(Um,{children:[/*#__PURE__*/t(Bm,{children:\"Total (including fees)\"}),/*#__PURE__*/t(\"div\",{children:/*#__PURE__*/t(Sm,{weiQuantities:[BigInt(n||0),BigInt(r)],tokenPrice:a,tokenSymbol:i})})]}),a&&/*#__PURE__*/t(Fm,{children:Yt(o,i)})]})};let Um=/*#__PURE__*/ja.div.withConfig({displayName:\"TransactionTotalRow\",componentId:\"sc-f8ef9b74-0\"})([\"display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding-top:4px;\"]),Fm=/*#__PURE__*/ja.div.withConfig({displayName:\"ValueConversionRow\",componentId:\"sc-f8ef9b74-1\"})([\"display:flex;flex-direction:row;height:12px;font-size:12px;line-height:12px;color:var(--privy-color-foreground-3);font-weight:400;\"]),Bm=/*#__PURE__*/ja.div.withConfig({displayName:\"TotalText\",componentId:\"sc-f8ef9b74-2\"})([\"font-size:14px;line-height:22.4px;font-weight:400;\"]);const zm=/*#__PURE__*/p(void 0),Hm=/*#__PURE__*/p(void 0),Vm=({defaultValue:e,children:n})=>{let[r,a]=s(e||null);/*#__PURE__*/return t(zm.Provider,{value:{activePanel:r,togglePanel:e=>{a(r===e?null:e)}},children:/*#__PURE__*/t(Km,{children:n})})},$m=({value:e,children:n})=>{let{activePanel:r,togglePanel:a}=h(zm),i=r===e;/*#__PURE__*/return t(Hm.Provider,{value:{onToggle:()=>a(e),value:e},children:/*#__PURE__*/t(Qm,{isActive:i,\"data-open\":i,children:n})})},jm=({children:r})=>{let{activePanel:a}=h(zm),{onToggle:i,value:o}=h(Hm),s=a===o;/*#__PURE__*/\nreturn e(n,{children:[/*#__PURE__*/e(Ym,{onClick:i,\"data-open\":s,children:[/*#__PURE__*/t(Jm,{children:r}),/*#__PURE__*/t(ty,{isactive:s,children:/*#__PURE__*/t(qi,{height:\"16px\",width:\"16px\",strokeWidth:\"2\"})})]}),/*#__PURE__*/t(Zm,{})]})},Gm=({children:e})=>{let{activePanel:n}=h(zm),{value:r}=h(Hm);/*#__PURE__*/return t(Xm,{\"data-open\":n===r,children:/*#__PURE__*/t(ey,{children:e})})},qm=({children:e})=>{let{activePanel:n}=h(zm),{value:r}=h(Hm);/*#__PURE__*/return t(ey,{children:\"function\"==typeof e?e({isActive:n===r}):e})};let Km=/*#__PURE__*/ja.div.withConfig({displayName:\"AccordionRoot\",componentId:\"sc-281bf545-0\"})([\"display:flex;flex-direction:column;width:100%;gap:8px;\"]),Ym=/*#__PURE__*/ja.div.withConfig({displayName:\"AccordionTriggerContainer\",componentId:\"sc-281bf545-1\"})([\"display:flex;justify-content:space-between;align-items:center;width:100%;cursor:pointer;padding-bottom:8px;\"]),Zm=/*#__PURE__*/ja.div.withConfig({displayName:\"AccordionDivider\",componentId:\"sc-281bf545-2\"})([\"width:100%;&&{border-top:1px solid;border-color:var(--privy-color-foreground-4);}padding-bottom:12px;\"]),Jm=/*#__PURE__*/ja.div.withConfig({displayName:\"AccordionTriggerContent\",componentId:\"sc-281bf545-3\"})([\"font-size:14px;font-weight:500;line-height:19.6px;width:100%;padding-right:8px;\"]),Qm=/*#__PURE__*/ja.div.withConfig({displayName:\"AccordionPanelContainer\",componentId:\"sc-281bf545-4\"})([\"display:flex;flex-direction:column;width:100%;overflow:hidden;padding:12px;&&{border:1px solid;border-color:var(--privy-color-foreground-4);border-radius:var(--privy-border-radius-md);}\"]),Xm=/*#__PURE__*/ja.div.withConfig({displayName:\"AccordionContentContainer\",componentId:\"sc-281bf545-5\"})([\"position:relative;overflow:hidden;transition:max-height 25ms ease-out;&[data-open='true']{max-height:700px;}&[data-open='false']{max-height:0;}\"]),ey=/*#__PURE__*/ja.div.withConfig({displayName:\"ContentWrapper\",componentId:\"sc-281bf545-6\"})([\"display:flex;flex-direction:column;gap:12px;flex:1 1 auto;min-height:1px;\"]),ty=/*#__PURE__*/ja.div.withConfig({displayName:\"IconWrapper\",componentId:\"sc-281bf545-7\"})([\"transform:\",\";\"],(e=>e.isactive?\"rotate(180deg)\":\"rotate(0deg)\"));const ny=({walletAddress:e,chainId:n=Cr,network:r,rpcEndpoint:a})=>/*#__PURE__*/t(ry,{href:\"ethereum\"===r?wn(n,e):Mr(e,Er(a||\"\")),target:\"_blank\",children:Ct(e)});let ry=/*#__PURE__*/ja.a.withConfig({displayName:\"StyledLink\",componentId:\"sc-adda23e5-0\"})([\"&:hover{text-decoration:underline;}\"]);const ay=({from:n,to:r,txn:a,transactionInfo:i,tokenPrice:o,gas:s,tokenSymbol:l})=>{let c=BigInt(a?.value||0);/*#__PURE__*/\nreturn t(Vm,{...dr().render.standalone?{defaultValue:\"details\"}:{},children:/*#__PURE__*/e($m,{value:\"details\",children:[/*#__PURE__*/t(jm,{children:/*#__PURE__*/e(iy,{children:[/*#__PURE__*/t(\"div\",{children:i?.title||\"Details\"}),/*#__PURE__*/t(oy,{children:/*#__PURE__*/t(xm,{weiQuantities:[c],tokenPrice:o,tokenSymbol:l})})]})}),/*#__PURE__*/e(Gm,{children:[/*#__PURE__*/t(km,{label:\"From\",children:/*#__PURE__*/t(ny,{walletAddress:n,chainId:a.chainId||Cr,network:\"ethereum\"})}),/*#__PURE__*/t(km,{label:\"To\",children:/*#__PURE__*/t(ny,{walletAddress:r,chainId:a.chainId||Cr,network:\"ethereum\"})}),i&&i.action&&/*#__PURE__*/t(km,{label:\"Action\",children:i.action}),s&&/*#__PURE__*/t(Lm,{value:a.value,gas:s,tokenPrice:o,tokenSymbol:l})]}),/*#__PURE__*/t(qm,{children:({isActive:e})=>/*#__PURE__*/t(Dm,{value:a.value,displayFee:e,gas:s||\"0x0\",tokenPrice:o,tokenSymbol:l})})]})})};let iy=/*#__PURE__*/ja.div.withConfig({displayName:\"AccordionTriggerContent\",componentId:\"sc-29499c17-0\"})([\"display:flex;flex-direction:row;justify-content:space-between;\"]),oy=/*#__PURE__*/ja.div.withConfig({displayName:\"TotalText\",componentId:\"sc-29499c17-1\"})([\"flex-shrink:0;padding-left:8px;\"]);async function sy(e,t,n){let r=ds(e),a=await t.prepareTransactionRequest({...r,account:{address:n,type:\"json-rpc\"}});return{...a,type:ls[a.type]}}const ly=({pendingTransaction:e})=>{let{getAccessToken:n}=ur(),{wallets:r}=Tr(),{walletProxy:a,rpcConfig:l,chains:c,appId:d,nativeTokenSymbolForChainId:u}=x(),[h,p]=s(null),[m,y]=s(e),{tokenPrice:g}=Iu(m.chainId),f=u(e.chainId)||\"ETH\",w=i((()=>r.find((e=>\"privy\"===e.walletClientType))),[r]);return o((()=>{(async function(){if(!await n()||!a||!w)return m;let e=Fa(m.chainId,c,l,{appId:d}),t=await sy(m,e,w.address);return p(_a(BigInt(t.gas??0))),t})().then(y).catch(console.error)}),[a]),w?/*#__PURE__*/t(cy,{children:/*#__PURE__*/t(ay,{from:w.address,to:m.to,txn:m,gas:h??void 0,tokenPrice:g,tokenSymbol:f})}):null};let cy=/*#__PURE__*/ja.div.withConfig({displayName:\"TransactionInfoWrapper\",componentId:\"sc-731f1950-0\"})([\"width:100%;padding:1rem 0;\"]);const dy=({hasBlockingError:r,error:a,onClose:i,onBack:o,handleSubmit:s,account:l,submitSuccess:c})=>{let{pendingTransaction:d}=x();/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{onClose:i},\"header\"),/*#__PURE__*/t(qs,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(pt,{success:c,fail:!!a}),/*#__PURE__*/t(a?Ya:th,{style:{width:\"38px\",height:\"38px\"}})]})}),/*#__PURE__*/t(bl,{style:{marginTop:\"1rem\"},children:\"Verifying with passkey\"}),/*#__PURE__*/e(kl,{children:[/*#__PURE__*/e(Nl,{children:[/*#__PURE__*/t(Il,{children:/*#__PURE__*/t(ro,{})}),\"Approve this action using your touch, face, PIN, or hardware key.\"]}),/*#__PURE__*/e(Nl,{children:[/*#__PURE__*/t(Il,{children:/*#__PURE__*/t(co,{})}),\"You last added a passkey on\",\" \",l?.firstVerifiedAt?.toLocaleDateString(void 0,{month:\"short\",day:\"numeric\",year:\"numeric\"}),\".\"]})]}),d&&/*#__PURE__*/t(_l,{children:/*#__PURE__*/t(ly,{pendingTransaction:d})}),a&&/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(Fl,{style:{marginTop:\"1.25rem\"},children:a.message}),/*#__PURE__*/t(st,{disabled:r,onClick:s,style:{marginTop:\"1.25rem\"},children:\"Try again\"})]}),o&&/*#__PURE__*/t(Dl,{style:{marginTop:\"1rem\"},onClick:o,children:\"Choose another method\"}),/*#__PURE__*/t(yt,{})]})},uy=({open:r,onClose:a})=>{let{user:i}=ur(),[c,d]=s(i?.mfaMethods[0]??null),{init:u,cancel:h,submit:p}=em(),[m,y]=s(!1),[g,f]=s(!1),[w,v]=s(null),[C,E]=s(null);o((()=>{d(i?.mfaMethods[0]??null)}),[i?.mfaMethods]);let T=l(!1);o((()=>{!T.current&&c&&r&&(T.current=!0,_(c).finally((()=>{T.current=!1})))}),[r]);let b=e=>Hc(e)?(y(!0),Error(\"You have exceeded the maximum number of attempts. Please close this window and try again in 10 seconds.\")):zc(e)?(y(!1),Error(\"The code you entered is not valid\")):Bc(e)?(y(!0),Error(\"You have exceeded the time limit for code entry. Please try again in 30 seconds.\")):(console.error(e),y(!1),Error(\"Something went wrong.\"));async function A(e){E(null);try{if(!e||!c)return;await p(c,e),f(!0),y(!1),a()}catch(e){throw b(e)}}async function _(e){if(\"passkey\"!==e)try{d(e),await u(e)}catch(e){console.error(e)}else try{d(e);let t=await u(e);if(!t)throw Error(\"something went wrong\");v(t),await p(e,t),f(!0),y(!1),a()}catch(e){E(b(e))}}let k=()=>{d(null),E(null),h(),a()};return r&&i?\"passkey\"===c?/*#__PURE__*/t(dy,{account:i.linkedAccounts.filter((e=>\"passkey\"===e.type&&e.enrolledInMfa)).sort(((e,t)=>t.firstVerifiedAt.valueOf()-e.firstVerifiedAt.valueOf()))[0],selectedMethod:c,submitSuccess:g,hasBlockingError:m,error:C,onClose:k,onBack:()=>{d(null),E(null)},handleSubmit:()=>A(w).catch(E)}):c?/*#__PURE__*/t(hy,{submitSuccess:g,hasBlockingError:m,handleSubmitCode:A,selectedMethod:c,onClose:k,onBack:i.mfaMethods.length>1?()=>d(null):void 0}):/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{onClose:k},\"header\"),/*#__PURE__*/t(Ul,{style:{marginBottom:\"1.5rem\"},children:/*#__PURE__*/t(ro,{})}),/*#__PURE__*/t(bl,{children:\"Verify your identity\"}),/*#__PURE__*/t(Al,{children:\"Choose a verification method\"}),/*#__PURE__*/e(Sl,{children:[i.mfaMethods.includes(\"totp\")&&/*#__PURE__*/e(el,{onClick:()=>_(\"totp\"),children:[/*#__PURE__*/t(io,{}),\"Authenticator App\"]},\"totp\"),i.mfaMethods.includes(\"sms\")&&/*#__PURE__*/e(el,{onClick:()=>_(\"sms\"),children:[/*#__PURE__*/t(ri,{}),\"SMS\"]},\"sms\"),i.mfaMethods.includes(\"passkey\")&&/*#__PURE__*/e(el,{onClick:()=>_(\"passkey\"),children:[/*#__PURE__*/t(Xi,{}),\"Passkey\"]},\"passkey\")]}),/*#__PURE__*/t(yt,{})]}):null};let hy=({selectedMethod:r,submitSuccess:a,hasBlockingError:i,onClose:o,onBack:s,handleSubmitCode:l})=>{let{app:c}=lr(),{pendingTransaction:d}=x();switch(r){case\"sms\":/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{onClose:o},\"header\"),/*#__PURE__*/t(Ul,{style:{marginBottom:\"1.5rem\"},children:/*#__PURE__*/t(ri,{})}),/*#__PURE__*/t(bl,{children:\"Enter verification code\"}),/*#__PURE__*/e(_l,{children:[/*#__PURE__*/t(Cm,{success:a,disabled:i,onChange:l}),/*#__PURE__*/e(Al,{children:[\"To continue, please enter the 6-digit code sent to your \",/*#__PURE__*/t(\"strong\",{children:\"mobile device\"})]}),d&&/*#__PURE__*/t(ly,{pendingTransaction:d})]}),s&&/*#__PURE__*/t(Dl,{theme:c?.appearance.palette.colorScheme,onClick:s,children:\"Choose another method\"}),/*#__PURE__*/t(dt,{onClick:o,children:\"Not now\"}),/*#__PURE__*/t(yt,{})]});case\"totp\":/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{onClose:o},\"header\"),/*#__PURE__*/t(Ul,{style:{marginBottom:\"1.5rem\"},children:/*#__PURE__*/t(io,{})}),/*#__PURE__*/t(bl,{children:\"Enter verification code\"}),/*#__PURE__*/e(_l,{children:[/*#__PURE__*/t(Cm,{success:a,disabled:i,onChange:l}),/*#__PURE__*/e(Al,{children:[\"To continue, please enter the 6-digit code generated from your\",\" \",/*#__PURE__*/t(\"strong\",{children:\"authenticator app\"})]}),d&&/*#__PURE__*/t(ly,{pendingTransaction:d})]}),s&&/*#__PURE__*/t(Dl,{theme:c?.appearance.palette.colorScheme,onClick:s,children:\"Choose another method\"}),/*#__PURE__*/t(dt,{onClick:o,children:\"Not now\"}),/*#__PURE__*/t(yt,{})]});default:return null}};let py=/*#__PURE__*/ja.div.withConfig({displayName:\"ConnectContainer\",componentId:\"sc-f0dc8bc7-0\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;margin-left:27px;margin-right:27px;gap:24px;\"]);const my=/*#__PURE__*/ja.div.withConfig({displayName:\"DoubleIconWrapper\",componentId:\"sc-fd7f30b7-0\"})([\"display:flex;align-items:center;justify-content:center;width:180px;height:90px;border-radius:50%;svg + svg{margin-left:12px;}> svg{z-index:2;color:var(--privy-color-accent);stroke:var(--privy-color-accent);fill:var(--privy-color-accent);}\"]);let yy=/*#__PURE__*/ja.div.withConfig({displayName:\"Container\",componentId:\"sc-d3724da1-0\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;\"]);const gy=/*#__PURE__*/ja.div.withConfig({displayName:\"Header\",componentId:\"sc-858d1103-0\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;margin:20px 0;gap:4px;& h3{font-size:18px;font-style:normal;font-weight:600;line-height:24px;}& p{max-width:300px;font-size:14px;font-style:normal;font-weight:400;line-height:20px;}\"]);let fy=/*#__PURE__*/ja.div.withConfig({displayName:\"Content\",componentId:\"sc-858d1103-1\"})([\"display:flex;flex-direction:column;justify-content:space-between;\"]),wy=/*#__PURE__*/ja.div.withConfig({displayName:\"ErrorMessage\",componentId:\"sc-858d1103-2\"})([\"line-height:20px;height:20px;font-size:13px;color:var(--privy-color-error);text-align:left;margin-top:0.5rem;\"]),vy=/*#__PURE__*/ja(st).withConfig({displayName:\"NoAnimationPrimaryButton\",componentId:\"sc-858d1103-3\"})([\"\",\"\"],(e=>e.hideAnimations&&/*#__PURE__*/Ga([\"&&{transition:none;}\"])));const Cy=n=>/*#__PURE__*/e(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",fill:\"none\",viewBox:\"0 0 21 20\",...n,children:[/*#__PURE__*/t(\"path\",{fill:\"url(#icloud-gradient)\",d:\"M12.34 7.315a4.26 4.26 0 0 0-3.707 2.18 2.336 2.336 0 0 0-1.02-.236 2.336 2.336 0 0 0-2.3 1.963 3.217 3.217 0 0 0 1.244 6.181c.135-.001.27-.01.404-.029h8.943c.047.004.094.006.141.007.045-.001.09-.004.135-.007h.214v-.016a2.99 2.99 0 0 0 1.887-.988c.487-.55.757-1.261.757-1.998v-.006a3.017 3.017 0 0 0-.69-1.915 2.992 2.992 0 0 0-1.748-1.034 4.26 4.26 0 0 0-4.26-4.102Z\"}),/*#__PURE__*/t(\"defs\",{children:/*#__PURE__*/e(\"linearGradient\",{id:\"icloud-gradient\",x1:19.086,x2:3.333,y1:14.38,y2:14.163,gradientUnits:\"userSpaceOnUse\",children:[/*#__PURE__*/t(\"stop\",{stopColor:\"#3E82F4\"}),/*#__PURE__*/t(\"stop\",{offset:1,stopColor:\"#93DCF7\"})]})})]}),Ey=({style:n,...r})=>/*#__PURE__*/e(\"svg\",{width:\"16\",height:\"14\",style:n,viewBox:\"0 0 16 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",...r,children:[/*#__PURE__*/e(\"g\",{clipPath:\"url(#clip0_2115_829)\",children:[/*#__PURE__*/t(\"path\",{d:\"M2.34709 12.9404L2.3471 12.9404L2.34565 12.938L1.64031 11.7448L1.64004 11.7444L0.651257 10.0677C0.640723 10.0496 0.630746 10.0314 0.621325 10.0129H4.16461L2.39424 13.0139C2.3775 12.9901 2.36178 12.9656 2.34709 12.9404Z\",fill:\"#0066DA\",stroke:\"#6366F1\"}),/*#__PURE__*/t(\"path\",{d:\"M8 4.48713L5.47995 0.215332C5.23253 0.358922 5.02176 0.556358 4.87514 0.80764L0.219931 8.70508C0.076007 8.95094 0.000191627 9.22937 0 9.51277H5.04009L8 4.48713Z\",fill:\"#00AC47\"}),/*#__PURE__*/t(\"path\",{d:\"M13.48 13.7847C13.7274 13.6411 13.9382 13.4437 14.0848 13.1924L14.3781 12.6988L15.7801 10.3206C15.9267 10.0693 16.0001 9.79114 16.0001 9.51294H10.9596L12.0321 11.577L13.48 13.7847Z\",fill:\"#EA4335\"}),/*#__PURE__*/t(\"path\",{d:\"M8.00003 4.48718L10.5201 0.215385C10.2726 0.0717949 9.98857 0 9.69533 0H6.30472C6.01148 0 5.7274 0.0807692 5.47998 0.215385L8.00003 4.48718Z\",fill:\"#00832D\"}),/*#__PURE__*/t(\"path\",{d:\"M10.9599 9.51294H5.04007L2.52002 13.7847C2.76744 13.9283 3.05152 14.0001 3.34476 14.0001H12.6552C12.9484 14.0001 13.2325 13.9194 13.4799 13.7847L10.9599 9.51294Z\",fill:\"#2684FC\"}),/*#__PURE__*/t(\"path\",{d:\"M13.4525 4.75636L11.1249 0.80764C10.9782 0.556358 10.7675 0.358922 10.52 0.215332L8 4.48713L10.9599 9.51277H15.9908C15.9908 9.23456 15.9175 8.95636 15.7709 8.70508L13.4525 4.75636Z\",fill:\"#FFBA00\"})]}),/*#__PURE__*/t(\"defs\",{children:/*#__PURE__*/t(\"clipPath\",{id:\"clip0_2115_829\",children:/*#__PURE__*/t(\"rect\",{width:\"16\",height:\"14\",fill:\"white\"})})})]}),Ty=/*#__PURE__*/ja.div.withConfig({displayName:\"RecoveryContainer\",componentId:\"sc-12b46968-0\"})([\"display:flex;flex-direction:column;gap:12px;padding-top:24px;padding-bottom:24px;\"]),by=/*#__PURE__*/ja.div.withConfig({displayName:\"RecoveryExplainerContainer\",componentId:\"sc-12b46968-1\"})([\"padding-bottom:24px;\"]);let Ay={\"google-drive\":{name:\"Google Drive\",component:Ey},icloud:{name:\"iCloud\",component:Cy}};let _y=/*#__PURE__*/ja.div.withConfig({displayName:\"IconContainer\",componentId:\"sc-6716a2fa-0\"})([\"width:24px;height:24px;display:flex;justify-content:center;align-items:center;\"]),ky={\"google-drive\":\"Google Drive\",icloud:\"iCloud\",\"user-passcode\":\"password\",privy:\"Privy\"},Iy=({onClose:r})=>/*#__PURE__*/e(by,{children:[/*#__PURE__*/t(ql,{title:\"Why do I need to secure my account?\",icon:/*#__PURE__*/t(Ka,{width:48}),description:/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(\"p\",{children:\"Your app uses cryptography to secure your account. App secrets are split and encrypted so only you can access them.\"}),/*#__PURE__*/t(\"p\",{children:\"To use this app on new devices, secure account secrets using a password, your Google or your Apple account. It’s important you don’t lose access to the method you choose.\"})]})}),/*#__PURE__*/t(st,{onClick:r,children:\"Select backup method\"})]});const Ny=/*#__PURE__*/ja.div.withConfig({displayName:\"WithCircleBorder\",componentId:\"sc-e4fc5563-0\"})([\"&&{border-width:4px;}display:flex;justify-content:center;align-items:center;padding:1rem;aspect-ratio:1;border-style:solid;border-color:\",\";border-radius:50%;\"],(e=>e.$color??\"var(--privy-color-accent)\"));async function xy({tx:e,accessToken:t,walletProxy:n,entropyId:r,entropyIdVerifier:a,transactingWalletAddress:i,transactingWalletIndex:o}){let s=function(e,t){let n=(Mu(e)?e.message:e.compileMessage()).staticAccountKeys.find((e=>e.toBase58()===t));if(!n)throw Error(`Transaction does not contain public key ${t}`);return n}(e,i),l=Mu(e)?Buffer.from(e.message.serialize()):e.serializeMessage(),{response:c}=await n.rpc({accessToken:t,entropyId:r,entropyIdVerifier:a,chainType:\"solana\",hdWalletIndex:o,request:{method:\"signMessage\",params:{message:l.toString(\"base64\")}}}),d=c.data.signature,u=Buffer.from(d,\"base64\");e.addSignature(s,u)}async function Sy({tx:e,connection:t,accessToken:n,walletProxy:r,entropyId:a,entropyIdVerifier:i,transactingWalletAddress:o,transactingWalletIndex:s,transactionOptions:l}){let c;try{await xy({tx:e,accessToken:n,walletProxy:r,entropyId:a,entropyIdVerifier:i,transactingWalletAddress:o,transactingWalletIndex:s});let d=e.serialize();c=await t.sendRawTransaction(d,l);let u=await t.confirmTransaction(c);if(u.value.err||u.value.err){let e=u.value.err||u.value.err;if(\"string\"==typeof e)throw Error(e);throw e}return{signature:c,signedTransaction:e,receipt:await t.getParsedTransaction(c,{maxSupportedTransactionVersion:0})}}catch(e){throw e.txSignature=c,e}}const Ry=/*#__PURE__*/ja(zu).withConfig({displayName:\"InteractiveLabel\",componentId:\"sc-b57d0824-0\"})([\"cursor:pointer;display:inline-flex;gap:8px;align-items:center;color:var(--privy-color-accent);svg{fill:var(--privy-color-accent);}\"]);var Oy=({iconUrl:n,value:r,symbol:a,usdValue:i,nftName:o,$isLoading:s})=>s?/*#__PURE__*/t(Wy,{$isLoading:s}):/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/e(Wy,{$isLoading:s,children:[n&&/*#__PURE__*/t(Py,{src:n,alt:\"Token icon\"}),o,r,\" \",a]}),i&&/*#__PURE__*/e(My,{$isLoading:s,children:[\"$\",i]})]});let Wy=/*#__PURE__*/ja.span.withConfig({displayName:\"Value\",componentId:\"sc-d8e62921-0\"})([\"color:var(--privy-color-foreground);font-size:0.875rem;font-weight:500;line-height:1.375rem;word-break:break-all;text-align:right;display:flex;justify-content:flex-end;\",\"\"],Vt);const My=/*#__PURE__*/ja.span.withConfig({displayName:\"Subvalue\",componentId:\"sc-d8e62921-1\"})([\"color:var(--privy-color-foreground-2);font-size:12px;font-weight:400;line-height:18px;word-break:break-all;text-align:right;display:flex;justify-content:flex-end;\",\"\"],Vt);let Py=/*#__PURE__*/ja.img.withConfig({displayName:\"TokenIcon\",componentId:\"sc-d8e62921-2\"})([\"height:14px;width:14px;margin-right:4px;object-fit:contain;\"]);const Ly=r=>{let{chain:a,transactionDetails:i,isTokenContractInfoLoading:o,symbol:s}=r,{action:l,functionName:c}=i;/*#__PURE__*/return t($t,{children:/*#__PURE__*/e(Qt,{children:[\"transaction\"!==l&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Action\"}),/*#__PURE__*/t(Vu,{children:c})]}),\"mint\"===c&&\"args\"in i&&i.args.filter((e=>e)).map(((n,r)=>/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:`Param ${r}`}),/*#__PURE__*/t(Vu,{children:\"string\"==typeof n&&Ma(n)?/*#__PURE__*/t(lt,{address:n,url:a?.blockExplorers?.default?.url,showCopyIcon:!1}):n?.toString()})]},r))),\"setApprovalForAll\"===c&&i.operator&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Operator\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(lt,{address:i.operator,url:a?.blockExplorers?.default?.url,showCopyIcon:!1})})]}),\"setApprovalForAll\"===c&&void 0!==i.approved&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Set approval to\"}),/*#__PURE__*/t(Vu,{children:i.approved?\"true\":\"false\"})]}),\"transfer\"===c||\"transferFrom\"===c||\"safeTransferFrom\"===c||\"approve\"===c?/*#__PURE__*/e(n,{children:[\"formattedAmount\"in i&&i.formattedAmount&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Amount\"}),/*#__PURE__*/e(Vu,{$isLoading:o,children:[i.formattedAmount,\" \",s]})]}),\"tokenId\"in i&&i.tokenId&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Token ID\"}),/*#__PURE__*/t(Vu,{children:i.tokenId.toString()})]})]}):null,\"safeBatchTransferFrom\"===c&&/*#__PURE__*/e(n,{children:[\"amounts\"in i&&i.amounts&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Amounts\"}),/*#__PURE__*/t(Vu,{children:i.amounts.join(\", \")})]}),\"tokenIds\"in i&&i.tokenIds&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Token IDs\"}),/*#__PURE__*/t(Vu,{children:i.tokenIds.join(\", \")})]})]}),\"approve\"===c&&i.spender&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Spender\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(lt,{address:i.spender,url:a?.blockExplorers?.default?.url,showCopyIcon:!1})})]}),(\"transferFrom\"===c||\"safeTransferFrom\"===c||\"safeBatchTransferFrom\"===c)&&i.transferFrom&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Transferring from\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(lt,{address:i.transferFrom,url:a?.blockExplorers?.default?.url,showCopyIcon:!1})})]}),(\"transferFrom\"===c||\"safeTransferFrom\"===c||\"safeBatchTransferFrom\"===c)&&i.transferTo&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Transferring to\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(lt,{address:i.transferTo,url:a?.blockExplorers?.default?.url,showCopyIcon:!1})})]})]})})};let Dy={success:\"background: var(--privy-color-success-lightest, #dcfce7);\",warn:\"background: var(--privy-color-warn-lightest, #fff7e6);\",error:\"background: var(--privy-color-error-lightest, #fde8e8);\"};const Uy=/*#__PURE__*/ja.div.withConfig({displayName:\"Pill\",componentId:\"sc-8c138024-0\"})([\"border-radius:var(--privy-border-radius-md,8px);padding:12px;text-align:left;margin-top:23px;\",\"\"],(e=>Dy[e.variant])),Fy=({variant:n,setPreventMaliciousTransaction:r,preventMaliciousTransaction:a})=>\"warn\"===n?/*#__PURE__*/t(Uy,{variant:n,children:/*#__PURE__*/e(\"div\",{className:\"flex flex-row\",children:[/*#__PURE__*/t(By,{variant:n}),/*#__PURE__*/e(\"p\",{children:[/*#__PURE__*/t(\"b\",{children:\"Warning: Suspicious transaction\"}),/*#__PURE__*/t(\"br\",{}),\"This has been flagged as a potentially deceptive request. Approving could put your assets or funds at risk.\"]})]})}):\"error\"===n?/*#__PURE__*/t(Uy,{variant:n,children:/*#__PURE__*/e(\"div\",{className:\"flex flex-col\",children:[/*#__PURE__*/e(\"div\",{className:\"flex flex-row\",children:[/*#__PURE__*/t(By,{variant:n}),/*#__PURE__*/e(\"p\",{children:[/*#__PURE__*/t(\"b\",{children:\"This is a malicious transaction\"}),/*#__PURE__*/t(\"br\",{}),\"This transaction transfers tokens to a known malicious address. Proceeding may result in the loss of valuable assets.\"]})]}),/*#__PURE__*/e(\"div\",{className:\"mt-3 flex flex-row gap-2\",children:[/*#__PURE__*/t(Ad,{color:\"var(--privy-color-error)\",checked:!a,readOnly:!0,onClick:()=>r(!a)}),/*#__PURE__*/t(\"p\",{children:\"I understand and want to proceed anyways.\"})]})]})}):void 0;let By=/*#__PURE__*/ja(Ya).withConfig({displayName:\"StyledExclamationTriangleIcon\",componentId:\"sc-e6305f32-0\"})([\"width:20px;height:20px;stroke-width:2px;flex-shrink:0;display:inline-block;margin-right:8px;\",\";\"],(e=>\"error\"===e.variant?\"color: var(--privy-color-error)\":\"color: var(--privy-color-warn)\"));const zy=({transactionIndex:e,maxIndex:t})=>\"number\"!=typeof e||0===t?\"\":` (${e+1} / ${t+1})`,Hy=({img:r,submitError:a,prepareError:i,onClose:o,action:l,title:c,subtitle:d,txValue:u,to:h,tokenAddress:p,network:m,missingFunds:y,fee:g,from:f,cta:w,disabled:v,chain:C,isSubmitting:E,isPreparing:T,isTokenPriceLoading:b,isTokenContractInfoLoading:A,isSponsored:_,symbol:k,balance:I,onClick:N,transactionDetails:x,transactionIndex:S,maxIndex:R,onBack:O,chainName:W,validation:M,hasScanDetails:P,setIsScanDetailsOpen:L,preventMaliciousTransaction:D,setPreventMaliciousTransaction:U,tokensSent:F,tokensReceived:B,isScanning:z,isCancellable:H})=>{let{showTransactionDetails:V,setShowTransactionDetails:$,hasMoreDetails:j,isErc20Ish:G}=(e=>{let[t,n]=s(!1),r=!0,a=!1;return(!e||e.isErc20Ish||\"transaction\"===e.action)&&(r=!1),r&&(a=Object.entries(e||{}).some((([e,t])=>t&&![\"action\",\"isErc20Ish\",\"isNFTIsh\"].includes(e)))),{showTransactionDetails:t,setShowTransactionDetails:n,hasMoreDetails:r&&a,isErc20Ish:e?.isErc20Ish}})(x),q=G&&A||T||b||z;/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{onClose:o,backFn:O}),r&&/*#__PURE__*/t(Gy,{children:r}),/*#__PURE__*/e(St,{style:{marginTop:r?\"1.5rem\":0},children:[c,/*#__PURE__*/t(zy,{maxIndex:R,transactionIndex:S})]}),/*#__PURE__*/t(Rt,{children:d}),/*#__PURE__*/e(Qt,{style:{marginTop:\"2rem\"},children:[(!!F[0]||q)&&/*#__PURE__*/e(Kt,{children:[B.length>0?/*#__PURE__*/t(zu,{children:\"Send\"}):/*#__PURE__*/t(zu,{children:\"Amount\"}),/*#__PURE__*/t(Oy,{iconUrl:F[0]?.iconUrl,value:F[0]?.value,usdValue:F[0]?.usdValue,symbol:F[0]?.symbol,nftName:F[0]?.nftName,$isLoading:q})]}),B.length>0&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Receive\"}),/*#__PURE__*/t(\"div\",{className:\"flex flex-col\",children:B.map(((e,n)=>/*#__PURE__*/t(Oy,{iconUrl:e.iconUrl,value:e.value,usdValue:e.usdValue,symbol:e.symbol,nftName:e.nftName},n)))})]}),x&&\"spender\"in x&&x?.spender?/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Spender\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(lt,{address:x.spender,url:C?.blockExplorers?.default?.url,showCopyIcon:!1})})]}):null,h&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"To\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(lt,{address:h,url:C?.blockExplorers?.default?.url,showCopyIcon:!1})})]}),p&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Token address\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(lt,{address:p,url:C?.blockExplorers?.default?.url,showCopyIcon:!1})})]}),/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Network\"}),/*#__PURE__*/t(Vu,{children:m})]}),/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Estimated fee\"}),/*#__PURE__*/t(Vu,{$isLoading:T||b||void 0===_,children:_?\"Sponsored\":g})]}),j&&!P&&/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(Kt,{className:\"cursor-pointer\",onClick:()=>$(!V),children:/*#__PURE__*/e(Hu,{className:\"flex items-center gap-x-1\",children:[\"Details\",\" \",/*#__PURE__*/t(mo,{style:{width:\"0.75rem\",marginLeft:\"0.25rem\",transform:V?\"rotate(180deg)\":void 0}})]})}),V&&x&&/*#__PURE__*/t(Ly,{action:l,chain:C,transactionDetails:x,isTokenContractInfoLoading:A,symbol:k})]}),P&&/*#__PURE__*/t(Kt,{children:/*#__PURE__*/e(Ry,{onClick:()=>L(!0),children:[/*#__PURE__*/t(\"span\",{className:\"text-color-primary\",children:\"Details\"}),/*#__PURE__*/t(yo,{height:\"14px\",width:\"14px\",strokeWidth:\"2\"})]})})]}),/*#__PURE__*/t(Ks,{}),a?/*#__PURE__*/t(Zt,{style:{marginTop:\"2rem\"},children:a.message}):i?/*#__PURE__*/t(Zt,{style:{marginTop:\"2rem\"},children:i.shortMessage??jy}):null,/*#__PURE__*/t(Fy,{variant:M,preventMaliciousTransaction:D,setPreventMaliciousTransaction:U}),/*#__PURE__*/t($y,{$useSmallMargins:!(!i&&!a&&\"warn\"!==M&&\"error\"!==M),title:Number(u)>0?void 0:!1!==_?\"Your wallet\":void 0,address:f,balance:I,isLoading:T||b,errMsg:T||i||a||!y?void 0:`Add funds on ${C?.name??W} to complete transaction.`}),/*#__PURE__*/t(st,{style:{marginTop:\"1rem\"},loading:E,disabled:v||T,onClick:N,children:w}),H&&/*#__PURE__*/t(mn,{style:{marginTop:\"1rem\"},onClick:o,isSubmitting:!1,children:\"Not now\"}),/*#__PURE__*/t(ct,{})]})},Vy=({img:r,title:a,subtitle:i,cta:o,network:s,blockExplorerUrl:l,transactionIndex:c,maxIndex:d,isMissingFunds:u,submitError:h,parseError:p,total:m,amount:y,fee:g,balance:f,from:w,to:v,tokenAddress:C,tokenAccount:E,tokenAccountOwner:T,programAddress:b,transactingWalletAddress:A,disabled:_,isSubmitting:k,isPreparing:I,isTokenPriceLoading:N,onClick:x,onClose:S,onBack:R})=>{let O=I||N;/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{onClose:S,backFn:R}),r&&/*#__PURE__*/t(Gy,{children:r}),/*#__PURE__*/e(St,{style:{marginTop:r?\"1.5rem\":0},children:[a,/*#__PURE__*/t(zy,{maxIndex:d,transactionIndex:c})]}),/*#__PURE__*/t(Rt,{children:i}),/*#__PURE__*/e(Qt,{style:{marginTop:\"2rem\"},children:[(m||O)&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Total\"}),/*#__PURE__*/t(Vu,{$isLoading:O,children:m})]}),w&&w!==A&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"From\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(lt,{address:w,url:l,showCopyIcon:!1})})]}),v&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"To\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(lt,{address:v,url:l,showCopyIcon:!1})})]}),T&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Token account owner\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(lt,{address:T,url:l,showCopyIcon:!1})})]}),E&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Token account\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(lt,{address:E,url:l,showCopyIcon:!1})})]}),C&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Token address\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(lt,{address:C,url:l,showCopyIcon:!1})})]}),b&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Program address\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(lt,{address:b,url:l,showCopyIcon:!1})})]}),s&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Network\"}),/*#__PURE__*/t(Vu,{children:s})]}),(y||O)&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Amount\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(Vu,{$isLoading:O,children:y})})]}),(g||O)&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Estimated fee\"}),/*#__PURE__*/t(Vu,{$isLoading:O,children:g})]})]}),/*#__PURE__*/t(Ks,{}),h?/*#__PURE__*/t(Zt,{style:{marginTop:\"2rem\"},children:h.message}):p?/*#__PURE__*/t(Zt,{style:{marginTop:\"2rem\"},children:jy}):null,/*#__PURE__*/t($y,{$useSmallMargins:!(!p&&!h),title:\"Your wallet\",address:A,balance:f,isLoading:I||N,errMsg:I||p||h||!u?void 0:\"Add funds on Solana to complete transaction.\"}),/*#__PURE__*/t(st,{style:{marginTop:\"1rem\"},loading:k,disabled:_||I,onClick:x,children:o}),/*#__PURE__*/t(ct,{})]})};let $y=/*#__PURE__*/ja(Nt).withConfig({displayName:\"StyledWalletInfoCard\",componentId:\"sc-4bd3bb7d-0\"})([\"\",\"\"],(e=>e.$useSmallMargins?\"margin-top: 0.5rem;\":\"margin-top: 2rem;\")),jy=\"There was an error preparing your transaction. Your transaction request will likely fail.\",Gy=/*#__PURE__*/ja.div.withConfig({displayName:\"ImageContainer\",componentId:\"sc-4bd3bb7d-1\"})([\"display:flex;width:100%;justify-content:center;max-height:40px;> img{object-fit:contain;border-radius:var(--privy-border-radius-sm);}\"]),qy=()=>/*#__PURE__*/e(Qy,{children:[/*#__PURE__*/t(eg,{}),/*#__PURE__*/t(Xy,{})]});const Ky=({transactionError:r,chainId:a,onClose:i,onRetry:o,network:l,connection:c,transactionHash:d})=>{let{chains:u}=x(),[h,p]=s(!1),{errorCode:m,errorMessage:y}=((e,t)=>{if(\"ethereum\"===t)return{errorCode:e.details??e.message,errorMessage:e.shortMessage};let n=e.txSignature,r=e?.transactionMessage||\"Something went wrong.\";if(Array.isArray(e.logs)){let t=e.logs.find((e=>/insufficient (lamports|funds)/gi.test(e)));t&&(r=t)}return{transactionHash:n,errorMessage:r}})(r,l),g=(({chains:e,chainId:t,network:n,connection:r,transactionHash:a})=>\"ethereum\"===n?e.find((e=>e.id===t))?.blockExplorers?.default.url??\"https://etherscan.io\":Pr(a||\"\",Er(r?.rpcEndpoint||\"\")))({chains:u,chainId:a,network:l,connection:c,transactionHash:d});/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{onClose:i}),/*#__PURE__*/e(Yy,{children:[/*#__PURE__*/t(qy,{}),/*#__PURE__*/t(Zy,{children:m}),/*#__PURE__*/t(Jy,{children:\"Please try again.\"}),/*#__PURE__*/e(rg,{children:[/*#__PURE__*/t(ng,{children:\"Error message\"}),/*#__PURE__*/t(ig,{$clickable:!1,children:y})]}),d&&/*#__PURE__*/e(rg,{children:[/*#__PURE__*/t(ng,{children:\"Transaction hash\"}),/*#__PURE__*/e(ag,{children:[\"Copy this hash to view details about the transaction on a\",\" \",/*#__PURE__*/t(\"u\",{children:/*#__PURE__*/t(\"a\",{href:g,children:\"block explorer\"})}),\".\"]}),/*#__PURE__*/e(ig,{$clickable:!0,onClick:async()=>{await navigator.clipboard.writeText(d),p(!0)},children:[d,/*#__PURE__*/t(lg,{clicked:h})]})]}),/*#__PURE__*/t(tg,{onClick:()=>o({resetNonce:!!d}),children:\"Retry transaction\"})]}),/*#__PURE__*/t(yt,{})]})};let Yy=/*#__PURE__*/ja.div.withConfig({displayName:\"TransactionErrorScreenContainer\",componentId:\"sc-6e9001c5-0\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;\"]),Zy=/*#__PURE__*/ja.span.withConfig({displayName:\"ErrorCode\",componentId:\"sc-6e9001c5-1\"})([\"color:var(--privy-color-foreground);text-align:center;font-size:1.125rem;font-weight:500;line-height:1.25rem;text-align:center;margin:10px;\"]),Jy=/*#__PURE__*/ja.span.withConfig({displayName:\"Subtitle\",componentId:\"sc-6e9001c5-2\"})([\"margin-top:4px;margin-bottom:10px;color:var(--privy-color-foreground-3);text-align:center;font-size:0.875rem;font-style:normal;font-weight:400;line-height:20px;letter-spacing:-0.008px;\"]),Qy=/*#__PURE__*/ja.div.withConfig({displayName:\"CircleContainer\",componentId:\"sc-6e9001c5-3\"})([\"position:relative;width:60px;height:60px;margin:10px;display:flex;justify-content:center;align-items:center;\"]),Xy=/*#__PURE__*/ja(Ja).withConfig({displayName:\"StyledExclamationCircleIcon\",componentId:\"sc-6e9001c5-4\"})([\"position:absolute;width:35px;height:35px;color:var(--privy-color-error);\"]),eg=/*#__PURE__*/ja.div.withConfig({displayName:\"StyledRedCircle\",componentId:\"sc-6e9001c5-5\"})([\"position:absolute;width:60px;height:60px;border-radius:50%;background-color:var(--privy-color-error);opacity:0.1;\"]),tg=/*#__PURE__*/ja(st).withConfig({displayName:\"RetryButton\",componentId:\"sc-6e9001c5-6\"})([\"&&{margin-top:24px;}transition:color 350ms ease,background-color 350ms ease;\"]),ng=/*#__PURE__*/ja.span.withConfig({displayName:\"TextBoxTitle\",componentId:\"sc-6e9001c5-7\"})([\"width:100%;text-align:left;font-size:0.825rem;color:var(--privy-color-foreground);padding:4px;\"]),rg=/*#__PURE__*/ja.div.withConfig({displayName:\"TextBoxContainer\",componentId:\"sc-6e9001c5-8\"})([\"width:100%;margin:5px;display:flex;flex-direction:column;justify-content:center;align-items:center;\"]),ag=/*#__PURE__*/ja.text.withConfig({displayName:\"HelperText\",componentId:\"sc-6e9001c5-9\"})([\"position:relative;width:100%;padding:5px;font-size:0.8rem;color:var(--privy-color-foreground-3);text-align:left;word-wrap:break-word;\"]),ig=/*#__PURE__*/ja.span.withConfig({displayName:\"TextBox\",componentId:\"sc-6e9001c5-10\"})([\"position:relative;width:100%;background-color:var(--privy-color-background-2);padding:8px 12px;border-radius:10px;margin-top:5px;font-size:14px;color:var(--privy-color-foreground-3);text-align:left;word-wrap:break-word;\",\"\"],(e=>e.$clickable&&\"cursor: pointer;\\n transition: background-color 0.3s;\\n padding-right: 45px;\\n\\n &:hover {\\n background-color: var(--privy-color-foreground-4);\\n }\")),og=/*#__PURE__*/ja(go).withConfig({displayName:\"StyledClipboardIcon\",componentId:\"sc-6e9001c5-11\"})([\"position:absolute;top:13px;right:13px;width:24px;height:24px;\"]),sg=/*#__PURE__*/ja(fi).withConfig({displayName:\"StyledClipboardCheckIcon\",componentId:\"sc-6e9001c5-12\"})([\"position:absolute;top:13px;right:13px;width:24px;height:24px;\"]),lg=({clicked:e})=>/*#__PURE__*/t(e?sg:og,{});const cg=({instructions:r,fees:a,transactionInfo:i,solPrice:o,rpcEndpoint:l})=>{let c=r.reduce(((e,{amount:t,token:n})=>t&&\"SOL\"===n?.symbol?e+t:e),0n),[d,u]=s(0),[h,p]=s(!1),m=r[d];/*#__PURE__*/return e(Qt,{children:[/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Total\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(Rm,{quantities:[c,a],tokenPrice:o})})]}),i&&i.action&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Action\"}),/*#__PURE__*/t(Vu,{children:i.action})]}),/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Fees\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(Rm,{quantities:[a||0n],tokenPrice:o})})]}),r.length>1?/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(Kt,{children:/*#__PURE__*/e(Ry,{onClick:()=>p((e=>!e)),children:[/*#__PURE__*/t(\"span\",{children:\"Details\"}),/*#__PURE__*/t(qi,{height:\"16px\",width:\"16px\",strokeWidth:\"2\",style:{transition:\"all 300ms\",transform:h?\"rotate(180deg)\":void 0}})]})}),h&&/*#__PURE__*/t(Kt,{children:/*#__PURE__*/e(ug,{children:[/*#__PURE__*/e(hg,{children:[/*#__PURE__*/e(pg,{children:[d+1,\" of \",r.length,\" instructions\"]}),/*#__PURE__*/e(yg,{children:[d>0&&/*#__PURE__*/t(Cn,{backFn:()=>u((e=>e-1))}),d<r.length-1&&/*#__PURE__*/t(En,{nextFn:()=>u((e=>e+1))})]})]}),/*#__PURE__*/t(mg,{children:/*#__PURE__*/t(dg,{instruction:m,rpcEndpoint:l,solPrice:o})})]})})]}):/*#__PURE__*/t(dg,{instruction:m,rpcEndpoint:l,solPrice:o,hideAmount:!0})]})};function dg({instruction:n,rpcEndpoint:r,solPrice:a,hideAmount:i}){return n?/*#__PURE__*/e(Qt,{children:[!i&&!!n.amount&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Amount\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(Rm,{quantities:[n.amount],tokenPrice:a,tokenSymbol:n.token?.symbol??\"SOL\",tokenDecimals:n.token?.decimals??9})})]}),n.to&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"To\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(ny,{walletAddress:n.to,rpcEndpoint:r,network:\"solana\"})})]}),n.tokenAccount&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Token account\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(ny,{walletAddress:n.tokenAccount,rpcEndpoint:r,network:\"solana\"})})]}),n.tokenAccountOwner&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"Token account owner\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(ny,{walletAddress:n.tokenAccountOwner,rpcEndpoint:r,network:\"solana\"})})]}),n.from&&/*#__PURE__*/e(Kt,{children:[/*#__PURE__*/t(zu,{children:\"From\"}),/*#__PURE__*/t(Vu,{children:/*#__PURE__*/t(ny,{walletAddress:n.from,rpcEndpoint:r,network:\"solana\"})})]})]}):null}let ug=/*#__PURE__*/ja.div.withConfig({displayName:\"InstructionsBox\",componentId:\"sc-5a140027-0\"})([\"display:flex;flex-direction:column;width:100%;overflow:hidden;&&{border:1px solid;border-color:var(--privy-color-foreground-4);border-radius:var(--privy-border-radius-md);}\"]),hg=/*#__PURE__*/ja.header.withConfig({displayName:\"InstructionsBoxHeader\",componentId:\"sc-5a140027-1\"})([\"display:flex;justify-content:space-between;align-items:center;padding:12px;background-color:var(--privy-color-background-2);\"]),pg=/*#__PURE__*/ja.h4.withConfig({displayName:\"HeaderTitle\",componentId:\"sc-5a140027-2\"})([\"font-size:14px;font-weight:500;line-height:19.6px;\"]),mg=/*#__PURE__*/ja.div.withConfig({displayName:\"InstructionsBoxContent\",componentId:\"sc-5a140027-3\"})([\"padding:12px;\"]),yg=/*#__PURE__*/ja.div.withConfig({displayName:\"NavigationButtonsConatiner\",componentId:\"sc-5a140027-4\"})([\"display:flex;gap:8px;align-items:center;\"]);const gg=({instructions:r,fees:a,onClose:i,receiptHeader:o,receiptDescription:s,transactionInfo:l,solPrice:c,rpcEndpoint:d,signOnly:u})=>/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{onClose:i}),/*#__PURE__*/t(qs,{style:{marginBottom:\"16px\"},children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(Gs,{color:\"var(--privy-color-success-light)\"}),/*#__PURE__*/t(oi,{height:38,width:38,strokeWidth:2,stroke:\"var(--privy-color-success)\"})]})}),/*#__PURE__*/t(ql,{title:o??`Transaction ${u?\"signed\":\"complete\"}!`,description:s??\"You're all set.\"}),/*#__PURE__*/t(cg,{solPrice:c,instructions:r,fees:a,transactionInfo:l,rpcEndpoint:d}),/*#__PURE__*/t(Ks,{}),/*#__PURE__*/t(fg,{loading:!1,onClick:i,children:\"Close\"}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]});let fg=/*#__PURE__*/ja(st).withConfig({displayName:\"SubmitButton\",componentId:\"sc-6f95cdcf-0\"})([\"&&{margin-top:24px;}transition:color 350ms ease,background-color 350ms ease;\"]);async function wg({accessToken:e,entropyId:t,entropyIdVerifier:n,transactingWallet:r,walletProxy:a,transactionRequest:i,publicClient:o,requesterAppId:s}){let l=await vg({accessToken:e,entropyId:t,entropyIdVerifier:n,transactingWallet:r,walletProxy:a,transactionRequest:i,requesterAppId:s});return await o.sendRawTransaction({serializedTransaction:l})}async function vg({accessToken:e,entropyId:t,entropyIdVerifier:n,transactingWallet:r,walletProxy:a,transactionRequest:i,requesterAppId:o}){return(await a.rpc({entropyId:t,entropyIdVerifier:n,hdWalletIndex:r.walletIndex??0,chainType:\"ethereum\",accessToken:e,requesterAppId:o,request:{method:\"eth_signTransaction\",params:[i]}})).response.data}let Cg=({data:n})=>{let r=n=>\"object\"==typeof n&&null!==n?/*#__PURE__*/t(Tg,{children:Object.entries(n).map((([t,n])=>/*#__PURE__*/e(\"li\",{children:[/*#__PURE__*/e(\"strong\",{children:[t,\":\"]}),\" \",r(n)]},t)))}):/*#__PURE__*/t(\"span\",{children:String(n)});/*#__PURE__*/return t(\"div\",{children:r(n)})};const Eg=/*#__PURE__*/ja.div.withConfig({displayName:\"Message\",componentId:\"sc-ccf49562-0\"})([\"margin-top:1.5rem;background-color:var(--privy-color-background-2);border-radius:var(--privy-border-radius-md);padding:12px;text-align:left;max-height:310px;overflow:scroll;white-space:pre-wrap;width:100%;-ms-overflow-style:none;scrollbar-width:none;&::-webkit-scrollbar{display:none;}\"]);let Tg=/*#__PURE__*/ja.ul.withConfig({displayName:\"MessageList\",componentId:\"sc-ccf49562-1\"})([\"margin-left:12px !important;white-space:nowrap;&:first-child{margin-left:0 !important;}strong{font-weight:500 !important;}\"]);const bg=({data:e})=>/*#__PURE__*/t(Eg,{children:/*#__PURE__*/t(Cg,{data:e})});let Ag=/*#__PURE__*/ja.div.withConfig({displayName:\"Container\",componentId:\"sc-b3a607dd-0\"})([\"display:flex;flex-direction:column;min-height:72px;\"]);var _g=({onBack:n,details:r})=>/*#__PURE__*/e(Ag,{children:[/*#__PURE__*/t(ot,{backFn:n}),/*#__PURE__*/t(bg,{data:r}),/*#__PURE__*/t(ct,{})]});let kg=({gasUsed:e,effectiveGasPrice:t})=>{if(e&&t)try{return _a(e*t)}catch(e){return}};const Ig=({txn:r,receipt:a,transactionInfo:i,onClose:o,tokenPrice:s,tokenSymbol:l,receiptHeader:c,receiptDescription:d})=>/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{onClose:o}),/*#__PURE__*/t(jl,{title:c??\"Transaction complete!\",description:d??\"You're all set.\"}),/*#__PURE__*/t(ay,{tokenPrice:s,from:a.from,to:a.to,gas:kg(a),txn:r,transactionInfo:i,tokenSymbol:l}),/*#__PURE__*/t(Ks,{}),/*#__PURE__*/t(Ng,{loading:!1,onClick:o,children:\"All Done\"}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]});let Ng=/*#__PURE__*/ja(st).withConfig({displayName:\"SubmitButton\",componentId:\"sc-f857236b-0\"})([\"&&{margin-top:24px;}transition:color 350ms ease,background-color 350ms ease;\"]);const xg=[{constant:!1,inputs:[{name:\"_salt\",type:\"bytes32\"},{name:\"_initializer\",type:\"bytes\"}],name:\"deployAccount\",outputs:[{name:\"\",type:\"bool\"}],payable:!1,stateMutability:\"nonpayable\",type:\"function\"}],Sg=[{name:\"from\",type:\"address\"},{name:\"param2\",type:\"address\"},{name:\"param3\",type:\"bytes\"},{name:\"param4\",type:\"tuple\",components:[]},{type:\"tuple\",components:[{name:\"param5\",type:\"address\"},{name:\"param6\",type:\"uint256\"},{name:\"param7\",type:\"uint256\"},{name:\"encodedInitData\",type:\"bytes\"}]}],Rg=[{constant:!1,inputs:[{name:\"spender\",type:\"address\"},{name:\"value\",type:\"uint256\"}],name:\"approve\",outputs:[{name:\"\",type:\"bool\"}],payable:!1,stateMutability:\"nonpayable\",type:\"function\"}],Og=[{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"},{internalType:\"uint256\",name:\"amount\",type:\"uint256\"}],name:\"mint\",outputs:[],stateMutability:\"nonpayable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"},{internalType:\"uint256\",name:\"amount\",type:\"uint256\"}],name:\"mint\",outputs:[],stateMutability:\"payable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"}],name:\"mint\",outputs:[],stateMutability:\"nonpayable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"}],name:\"mint\",outputs:[],stateMutability:\"payable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"},{internalType:\"uint256\",name:\"tokenId\",type:\"uint256\"},{internalType:\"uint256\",name:\"quantity\",type:\"uint256\"},{internalType:\"bytes\",name:\"data\",type:\"bytes\"}],name:\"mint\",outputs:[{internalType:\"bool\",name:\"\",type:\"bool\"}],stateMutability:\"nonpayable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"},{internalType:\"uint256\",name:\"tokenId\",type:\"uint256\"},{internalType:\"uint256\",name:\"quantity\",type:\"uint256\"},{internalType:\"bytes\",name:\"data\",type:\"bytes\"}],name:\"mint\",outputs:[{internalType:\"bool\",name:\"\",type:\"bool\"}],stateMutability:\"payable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"},{internalType:\"uint256[]\",name:\"tokenIds\",type:\"uint256[]\"},{internalType:\"uint256[]\",name:\"quantities\",type:\"uint256[]\"},{internalType:\"bytes\",name:\"data\",type:\"bytes\"}],name:\"mintBatch\",outputs:[{internalType:\"bool\",name:\"\",type:\"bool\"}],stateMutability:\"nonpayable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"},{internalType:\"uint256[]\",name:\"tokenIds\",type:\"uint256[]\"},{internalType:\"uint256[]\",name:\"quantities\",type:\"uint256[]\"},{internalType:\"bytes\",name:\"data\",type:\"bytes\"}],name:\"mintBatch\",outputs:[{internalType:\"bool\",name:\"\",type:\"bool\"}],stateMutability:\"payable\",type:\"function\"},{inputs:[{internalType:\"uint256\",name:\"quantity\",type:\"uint256\"}],name:\"mint\",outputs:[{internalType:\"bool\",name:\"\",type:\"bool\"}],stateMutability:\"nonpayable\",type:\"function\"},{inputs:[{internalType:\"uint256\",name:\"quantity\",type:\"uint256\"}],name:\"mint\",outputs:[{internalType:\"bool\",name:\"\",type:\"bool\"}],stateMutability:\"payable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"}],name:\"safeMint\",outputs:[],stateMutability:\"nonpayable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"}],name:\"safeMint\",outputs:[],stateMutability:\"payable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"},{internalType:\"string\",name:\"uri\",type:\"string\"}],name:\"safeMint\",outputs:[],stateMutability:\"nonpayable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"},{internalType:\"string\",name:\"uri\",type:\"string\"}],name:\"safeMint\",outputs:[],stateMutability:\"payable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"},{internalType:\"uint256\",name:\"tokenId\",type:\"uint256\"}],name:\"safeMint\",outputs:[],stateMutability:\"nonpayable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"},{internalType:\"uint256\",name:\"tokenId\",type:\"uint256\"}],name:\"safeMint\",outputs:[],stateMutability:\"payable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"},{internalType:\"uint256\",name:\"tokenId\",type:\"uint256\"},{internalType:\"string\",name:\"uri\",type:\"string\"}],name:\"safeMint\",outputs:[],stateMutability:\"nonpayable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"},{internalType:\"uint256\",name:\"tokenId\",type:\"uint256\"},{internalType:\"string\",name:\"uri\",type:\"string\"}],name:\"safeMint\",outputs:[],stateMutability:\"payable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"},{internalType:\"uint256\",name:\"amount\",type:\"uint256\"}],name:\"batchMint\",outputs:[],stateMutability:\"nonpayable\",type:\"function\"},{inputs:[{internalType:\"address\",name:\"to\",type:\"address\"},{internalType:\"uint256\",name:\"amount\",type:\"uint256\"}],name:\"batchMint\",outputs:[],stateMutability:\"payable\",type:\"function\"}],Wg=[{constant:!1,inputs:[{name:\"_from\",type:\"address\"},{name:\"_to\",type:\"address\"},{name:\"_tokenId\",type:\"uint256\"}],name:\"safeTransferFrom\",outputs:[{name:\"\",type:\"bool\"}],payable:!1,stateMutability:\"nonpayable\",type:\"function\"}],Mg=[{constant:!1,inputs:[{name:\"_operator\",type:\"address\"},{name:\"_approved\",type:\"bool\"}],name:\"setApprovalForAll\",outputs:[{name:\"\",type:\"bool\"}],payable:!1,stateMutability:\"nonpayable\",type:\"function\"}],Pg=[{constant:!1,inputs:[{name:\"_from\",type:\"address\"},{name:\"_to\",type:\"address\"},{name:\"_tokenId\",type:\"uint256\"}],name:\"transferFrom\",outputs:[{name:\"\",type:\"bool\"}],payable:!1,stateMutability:\"nonpayable\",type:\"function\"}],Lg=[{constant:!1,inputs:[{name:\"_from\",type:\"address\"},{name:\"_to\",type:\"address\"},{name:\"_tokenIds\",type:\"uint256[]\"},{name:\"_amounts\",type:\"uint256[]\"},{name:\"_data\",type:\"bytes\"}],name:\"safeBatchTransferFrom\",outputs:[{name:\"\",type:\"bool\"}],payable:!1,stateMutability:\"nonpayable\",type:\"function\"}],Dg=[{constant:!1,inputs:[{name:\"_from\",type:\"address\"},{name:\"_to\",type:\"address\"},{name:\"_tokenId\",type:\"uint256\"},{name:\"_amount\",type:\"uint256\"},{name:\"_data\",type:\"bytes\"}],name:\"safeTransferFrom\",outputs:[{name:\"\",type:\"bool\"}],payable:!1,stateMutability:\"nonpayable\",type:\"function\"}],Ug=(e,t)=>{let n=Fg(Rg,e);if(n)return{action:\"approve\",functionName:\"approve\",isErc20Ish:!0,isNFTIsh:!1,spender:n.args[0],amount:n.args[1]};let r=Fg(Mh,e);if(r)return{action:\"transfer\",functionName:\"transfer\",isErc20Ish:!0,isNFTIsh:!1,transferTo:r.args[0],amount:r.args[1]};if(!t)return{action:\"transaction\",functionName:\"\",isErc20Ish:!1,isNFTIsh:!1};let a=Fg(xg,e);if(a&&\"string\"==typeof a.args[1]){let e=Bg(a.args[1]);if(e&&e[4].encodedInitData)return Ug(e[4].encodedInitData,t)}let i=Fg(Mg,e);if(i)return{action:\"approve\",functionName:\"setApprovalForAll\",isNFTIsh:!0,isErc20Ish:!1,operator:i.args[0],approved:i.args[1]};let o=Fg(Pg,e);if(o)return{action:\"transfer\",functionName:\"transferFrom\",isNFTIsh:!0,isErc20Ish:!1,transferFrom:o.args[0],transferTo:o.args[1],tokenId:o.args[2]};let s=Fg(Wg,e);if(s)return{action:\"transfer\",functionName:\"safeTransferFrom\",isNFTIsh:!0,isErc20Ish:!1,transferFrom:s.args[0],transferTo:s.args[1],tokenId:s.args[2]};let l=Fg(Dg,e);if(l)return{action:\"transfer\",functionName:\"safeTransferFrom\",isNFTIsh:!0,isErc20Ish:!1,transferFrom:l.args[0],transferTo:l.args[1],tokenId:l.args[2],amount:l.args[3]};let c=Fg(Lg,e);if(c)return{action:\"batch transfer\",functionName:\"safeBatchTransferFrom\",isNFTIsh:!0,isErc20Ish:!1,transferFrom:c.args[0],transferTo:c.args[1],tokenIds:c.args[2],amounts:c.args[3]};let d=Fg(Og,e);return d?{action:\"mint\",functionName:d.functionName,isNFTIsh:!0,isErc20Ish:!1,args:d.args}:{action:\"transaction\",isErc20Ish:!1,isNFTIsh:!1}};let Fg=(e,t)=>{try{let n=Pa({abi:e,data:t});return{functionName:n.functionName,args:n.args||[]}}catch(e){return null}},Bg=e=>{try{if(\"string\"==typeof e)return La(Sg,`0x${e.slice(10)}`)}catch(e){return null}};const zg=(e,t,n)=>{let[r,a]=s(null),{getAccessToken:i}=ur(),{walletProxy:l}=x();return o((()=>{r&&a(null),(async()=>{if(!await i()||!l||!t)return null;let r=[],a=!0,o=await sy(e,n,t.address).catch((t=>(t.details.includes(\"insufficient funds\")?a=!1:r.push(t),e)));return{tx:o,totalGasEstimate:o.gas,hasFunds:a,errors:r}})().then(a)}),[e]),r};let Hg=new ca(new da(\"There was an issue preparing your transaction\",Ui.E32603_DEFAULT_INTERNAL_ERROR.eipCode)),Vg=(e,t)=>e?.sendTransaction?\"transactionRequest\"in e.sendTransaction?e.sendTransaction.transactionRequest:e.sendTransaction.transactionRequests[t]:void 0;const $g=/*#__PURE__*/ja.img.withConfig({displayName:\"StyledLogo\",componentId:\"sc-68c1b1ea-0\"})([\"&&{height:\",\";width:\",\";border-radius:16px;margin-bottom:12px;}\"],(e=>\"sm\"===e.size?\"65px\":\"140px\"),(e=>\"sm\"===e.size?\"65px\":\"140px\"));let jg=e=>{if(!Aa(e))return e;try{return Ua(e)}catch{return e}},Gg=e=>JSON.stringify(e,null,2),qg=r=>{let{types:a,primaryType:i,...o}=r.typedData;/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(bg,{data:o}),/*#__PURE__*/t(cu,{text:Gg(r.typedData),itemName:\"full payload to clipboard\"}),\" \"]})};let Kg=/*#__PURE__*/ja.div.withConfig({displayName:\"InputHelp\",componentId:\"sc-84af275e-0\"})([\"line-height:20px;height:20px;font-size:13px;color:\",\";display:flex;justify-content:flex-start;width:100%;margin-top:16px;margin-bottom:4px;\"],(e=>e.$fail?\"var(--privy-color-error)\":\"var(--privy-color-foreground-3)\")),Yg=/*#__PURE__*/ja.span.withConfig({displayName:\"ContentWithIcon\",componentId:\"sc-84af275e-1\"})([\"display:flex;align-items:center;gap:8px;\"]),Zg=/*#__PURE__*/ja.div.withConfig({displayName:\"IconContainer\",componentId:\"sc-84af275e-2\"})([\"display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:82px;\"]),Jg=/*#__PURE__*/ja.div.withConfig({displayName:\"Grow\",componentId:\"sc-84af275e-3\"})([\"flex-grow:1;\"]);let Qg=/*#__PURE__*/ja.div.withConfig({displayName:\"ConnectContainer\",componentId:\"sc-a512957a-0\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;margin-left:27px;margin-right:27px;gap:24px;\"]);const Xg=/*#__PURE__*/u(((r,a)=>{let[i,o]=s(\"\"),[l,c]=s(\"\"),[d,u]=s(!1),{authenticated:h,user:p}=ur(),{initUpdateEmail:m}=x(),{navigate:y,setModalData:g,currentScreen:f}=lr(),{enabled:w,token:v}=it(),C=dr(),E=pn(i)&&(C.disablePlusEmails&&i.includes(\"+\")?(l||c(\"Please enter a valid email address without a '+'.\"),!1):(l&&c(\"\"),!0)),T=d||!E,b=()=>{!w||v||h?(async e=>{if(!p?.email)throw Error(\"User is required to have an email address to update it.\");u(!0);try{await m(p.email.address,i,e),y(cr.AWAITING_PASSWORDLESS_CODE)}catch(e){g({errorModalData:{error:e,previousScreen:f||cr.LANDING}})}u(!1)})(v):(g({captchaModalData:{callback:e=>{if(!p?.email)throw Error(\"User is required to have an email address to update it.\");return m(p.email.address,i,e)},userIntentRequired:!1,onSuccessNavigateTo:cr.AWAITING_PASSWORDLESS_CODE,onErrorNavigateTo:cr.ERROR_SCREEN}}),y(cr.CAPTCHA_SCREEN))};/*#__PURE__*/return e(n,{children:[/*#__PURE__*/e(ef,{children:[l&&/*#__PURE__*/t(Zt,{style:{marginTop:\"0.25rem\",textAlign:\"left\"},children:l}),/*#__PURE__*/e(tf,{$error:!!l,children:[/*#__PURE__*/t(ni,{}),/*#__PURE__*/t(\"input\",{ref:a,id:\"email-input\",type:\"email\",placeholder:\"your@email.com\",onChange:e=>o(e.target.value),onKeyUp:e=>{\"Enter\"===e.key&&b()},value:i,autoComplete:\"email\"}),r.stacked?null:/*#__PURE__*/t(mn,{isSubmitting:d,onClick:b,disabled:T,children:\"Submit\"})]})]}),r.stacked?/*#__PURE__*/t(st,{loadingText:null,loading:d,disabled:T,onClick:b,children:\"Submit\"}):null]})}));let ef=yn,tf=bn;const nf=({style:e,...n})=>/*#__PURE__*/t(\"svg\",{width:\"40\",height:\"40\",viewBox:\"0 0 40 40\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",style:{height:\"38px\",width:\"38px\",...e},...n,children:/*#__PURE__*/t(\"path\",{d:\"M20 13.6V20M20 26.4H20.016M36 20C36 28.8365 28.8366 36 20 36C11.1635 36 4.00001 28.8365 4.00001 20C4.00001 11.1634 11.1635 3.99999 20 3.99999C28.8366 3.99999 36 11.1634 36 20Z\",stroke:\"currentColor\",strokeWidth:\"3.2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})});let rf=/*#__PURE__*/ja.div.withConfig({displayName:\"ConnectContainer\",componentId:\"sc-fc448c87-0\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;padding-top:8px;padding-bottom:32px;\"]),af=/*#__PURE__*/ja.div.withConfig({displayName:\"IconContainer\",componentId:\"sc-fc448c87-1\"})([\"display:flex;align-items:center;justify-content:center;height:72px;aspect-ratio:1;color:var(--privy-color-error);background-color:var(--privy-color-error-light);border-radius:50%;\"]),of=/*#__PURE__*/ja.div.withConfig({displayName:\"GappedContainer\",componentId:\"sc-fc448c87-2\"})([\"display:flex;flex-direction:column;gap:8px;\"]);const sf=/*#__PURE__*/qa([\":root{--privy-border-radius-sm:6px;--privy-border-radius-md:12px;--privy-border-radius-mdlg:16px;--privy-border-radius-lg:24px;--privy-border-radius-full:9999px;--privy-color-background:\",\";--privy-color-background-2:\",\";--privy-color-background-3:\",\";--privy-color-foreground:\",\";--privy-color-foreground-2:\",\";--privy-color-foreground-3:\",\";--privy-color-foreground-4:\",\";--privy-color-foreground-accent:\",\";--privy-color-accent:\",\";--privy-color-accent-light:\",\";--privy-color-accent-lightest:\",\";--privy-color-accent-dark:\",\";--privy-color-accent-darkest:\",\";--privy-color-success:\",\";--privy-color-success-dark:\",\";--privy-color-success-light:\",\";--privy-color-error:\",\";--privy-color-error-light:\",\";--privy-color-warn:\",\";--privy-color-warn-light:\",\";--privy-height-modal-full:620px;--privy-height-modal-compact:480px;};\"],(e=>e.theme.background),(e=>e.theme.background2),(e=>e.theme.background3),(e=>e.theme.foreground),(e=>e.theme.foreground2),(e=>e.theme.foreground3),(e=>e.theme.foreground4),(e=>e.theme.foregroundAccent),(e=>e.theme.accent),(e=>e.theme.accentLight),(e=>e.theme.accentLightest),(e=>e.theme.accentDark),(e=>e.theme.accentDarkest),(e=>e.theme.success),(e=>e.theme.successDark),(e=>e.theme.successLight),(e=>e.theme.error),(e=>e.theme.errorLight),(e=>e.theme.warn),(e=>e.theme.warnLight)),lf=/*#__PURE__*/ja.div.withConfig({displayName:\"StylesWrapper\",componentId:\"sc-bc1e45b4-0\"})([\"\",\" color:var(--privy-color-foreground-2);h3{font-size:16px;line-height:24px;font-weight:500;color:var(--privy-color-foreground-2);}h4{font-size:14px;line-height:20px;font-weight:500;color:var(--privy-color-foreground);}p{font-size:13px;line-height:20px;color:var(--privy-color-foreground-2);}button:focus,input:focus,optgroup:focus,select:focus,textarea:focus{outline:none;border-color:var(--privy-color-accent-light);box-shadow:0 0 0 1px var(--privy-color-accent-light);}.mobile-only{@media (min-width:441px){display:none;}}@keyframes fadein{0%{opacity:0;}100%{opacity:1;}}\"],\"\\n *,\\n ::before,\\n ::after {\\n box-sizing: border-box;\\n border-width: 0;\\n border-style: solid;\\n }\\n\\n line-height: 1.15;\\n -webkit-text-size-adjust: 100%;\\n -moz-tab-size: 4;\\n tab-size: 4;\\n font-feature-settings: normal;\\n\\n margin: 0;\\n font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif,\\n 'Apple Color Emoji', 'Segoe UI Emoji';\\n\\n hr {\\n height: 0;\\n color: inherit;\\n border-top-width: 1px;\\n }\\n\\n abbr:where([title]) {\\n text-decoration: underline dotted;\\n }\\n\\n h1,\\n h2,\\n h3,\\n h4,\\n h5,\\n h6 {\\n font-size: inherit;\\n font-weight: inherit;\\n font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif,\\n 'Apple Color Emoji', 'Segoe UI Emoji';\\n display: inline;\\n }\\n\\n a {\\n color: inherit;\\n text-decoration: inherit;\\n }\\n\\n b,\\n strong {\\n font-weight: bolder;\\n }\\n\\n code,\\n kbd,\\n samp,\\n pre {\\n font-family: ui-monospace, SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace;\\n font-size: 1em;\\n }\\n\\n small {\\n font-size: 80%;\\n }\\n\\n sub,\\n sup {\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n vertical-align: baseline;\\n }\\n\\n sub {\\n bottom: -0.25em;\\n }\\n\\n sup {\\n top: -0.5em;\\n }\\n\\n table {\\n text-indent: 0;\\n border-color: inherit;\\n border-collapse: collapse;\\n }\\n\\n button,\\n input,\\n optgroup,\\n select,\\n textarea {\\n font-family: inherit;\\n font-size: 100%;\\n font-weight: inherit;\\n line-height: inherit;\\n color: inherit;\\n margin: 0;\\n padding: 0;\\n }\\n\\n button,\\n select {\\n text-transform: none;\\n }\\n\\n button,\\n [type='button'],\\n [type='reset'],\\n [type='submit'] {\\n -webkit-appearance: button;\\n background-color: transparent;\\n background-image: none;\\n }\\n\\n ::-moz-focus-inner {\\n border-style: none;\\n padding: 0;\\n }\\n\\n :-moz-focusring {\\n outline: 1px dotted ButtonText;\\n }\\n\\n :-moz-ui-invalid {\\n box-shadow: none;\\n }\\n\\n legend {\\n padding: 0;\\n }\\n\\n progress {\\n vertical-align: baseline;\\n }\\n\\n ::-webkit-inner-spin-button,\\n ::-webkit-outer-spin-button {\\n height: auto;\\n }\\n\\n [type='search'] {\\n -webkit-appearance: textfield;\\n outline-offset: -2px;\\n }\\n\\n ::-webkit-search-decoration {\\n -webkit-appearance: none;\\n }\\n\\n ::-webkit-file-upload-button {\\n -webkit-appearance: button;\\n font: inherit;\\n }\\n\\n summary {\\n display: list-item;\\n }\\n\\n blockquote,\\n dl,\\n dd,\\n h1,\\n h2,\\n h3,\\n h4,\\n h5,\\n h6,\\n hr,\\n figure,\\n p,\\n pre {\\n margin: 0;\\n }\\n\\n fieldset {\\n margin: 0;\\n padding: 0;\\n }\\n\\n legend {\\n padding: 0;\\n }\\n\\n ol,\\n ul,\\n menu {\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n }\\n\\n textarea {\\n resize: vertical;\\n }\\n\\n input::placeholder,\\n textarea::placeholder {\\n opacity: 1;\\n color: #9ca3af;\\n }\\n\\n button,\\n [role='button'] {\\n cursor: pointer;\\n }\\n\\n :disabled {\\n cursor: default;\\n }\\n\\n img,\\n svg,\\n video,\\n canvas,\\n audio,\\n iframe,\\n embed,\\n object {\\n display: block;\\n }\\n\\n img,\\n video {\\n max-width: 100%;\\n height: auto;\\n }\\n\\n [hidden] {\\n display: none;\\n }\\n\"),cf=({children:n,open:r,onClick:i,...o})=>/*#__PURE__*/t(Vi,{show:r,as:a.Fragment,children:/*#__PURE__*/e($i,{onClose:i,...o,as:uf,children:[/*#__PURE__*/t(ji,{as:a.Fragment,enterFrom:\"entering\",leaveTo:\"leaving\",children:/*#__PURE__*/t(df,{id:\"privy-dialog-backdrop\",\"aria-hidden\":\"true\"})}),/*#__PURE__*/t(hf,{children:/*#__PURE__*/t(ji,{as:a.Fragment,enterFrom:\"entering\",leaveTo:\"leaving\",children:/*#__PURE__*/t(Gi,{as:pf,children:n})})})]})});let df=/*#__PURE__*/ja.div.withConfig({displayName:\"Backdrop\",componentId:\"sc-3cfde0b5-0\"})([\"position:fixed;inset:0;transition:backdrop-filter 100ms ease;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);&.entering,&.leaving{backdrop-filter:unset;-webkit-backdrop-filter:unset;}\"]),uf=/*#__PURE__*/ja.div.withConfig({displayName:\"DialogWrapper\",componentId:\"sc-3cfde0b5-1\"})([\"position:relative;z-index:999999;\"]),hf=/*#__PURE__*/ja.div.withConfig({displayName:\"DialogContainer\",componentId:\"sc-3cfde0b5-2\"})([\"position:fixed;inset:0;display:flex;align-items:center;justify-content:center;width:100vw;min-height:100vh;\"]);const pf=/*#__PURE__*/ja.div.withConfig({displayName:\"Panel\",componentId:\"sc-3cfde0b5-3\"})([\"padding:0;background:transparent;border:none;width:100%;pointer-events:auto;outline:none;display:block;@media (max-width:440px){opacity:1;transform:translate3d(0,0,0);transition:transform 200ms ease-in;position:fixed;bottom:0;&.entering,&.leaving{opacity:0;transform:translate3d(0,100%,0);transition:transform 150ms ease-in 0ms,opacity 0ms ease 150ms;}}@media (min-width:441px){opacity:1;transition:opacity 100ms ease-in;&.entering,&.leaving{opacity:0;transition-delay:5ms;}margin:auto;width:360px;box-shadow:0px 8px 36px rgba(55,65,81,0.15);border-radius:var(--privy-border-radius-lg);}\"]),mf=/*#__PURE__*/ja.div.withConfig({displayName:\"CenterItem\",componentId:\"sc-3cfde0b5-4\"})([\"display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;\"]);let yf={[cr.LANDING]:()=>{let{app:e}=lr();return e.loginMethodsAndOrder&&e.loginMethodsAndOrder.primary.length>0?/*#__PURE__*/t(Zp,{connectOnly:!1}):/*#__PURE__*/t($p,{connectOnly:!1})},[cr.CONNECT_OR_CREATE]:()=>{let{app:e}=lr();return e.loginMethodsAndOrder&&e.loginMethodsAndOrder.primary.length>0?/*#__PURE__*/t(Zp,{connectOnly:!0}):/*#__PURE__*/t($p,{connectOnly:!0})},[cr.AWAITING_PASSWORDLESS_CODE]:()=>{let{app:r,navigate:a,lastScreen:i,navigateBack:l,setModalData:c,onUserCloseViaDialogOrKeybindRef:d}=lr(),{closePrivyModal:u,resendEmailCode:h,resendSmsCode:p,getAuthMeta:m,loginWithCode:g,updateWallets:f,createAnalyticsEvent:w}=x(),{authenticated:v,logout:C,user:E}=ur(),[T,b]=s(Zl),[_,k]=s(!1),[I,R]=s(null),[O,W]=s(null),[M,P]=s(0);d.current=()=>null;let L=m()?.email?0:1,D=hr-500;o((()=>{if(M){let e=setTimeout((()=>{P(M-1)}),1e3);return()=>clearTimeout(e)}}),[M]),o((()=>{if(v&&_&&E){if(r?.legal.requireUsersAcceptTerms&&!E.hasAcceptedTerms){let e=setTimeout((()=>{a(cr.AFFIRMATIVE_CONSENT_SCREEN)}),D);return()=>clearTimeout(e)}if(ut(E,r.embeddedWallets)){let e=setTimeout((()=>{c({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),w({eventName:\"embedded_wallet_creation_failure_logout\",payload:{error:e,screen:\"AwaitingPasswordlessCodeScreen\"}}),C()},callAuthOnSuccessOnClose:!0}}),a(cr.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)}),D);return()=>clearTimeout(e)}{f();let e=setTimeout((()=>u({shouldCallAuthOnSuccess:!0,isSuccess:!0})),hr);return()=>clearTimeout(e)}}}),[v,_,E]),o((()=>{if(I&&0===O){let e=setTimeout((()=>{b(Zl),R(null);let e=document.querySelector(\"input[name=code-0]\");e?.focus()}),1400);return()=>clearTimeout(e)}}),[I]);let U=e=>{e.preventDefault();let t=e.currentTarget.value.replace(\" \",\"\");if(\"\"===t)return;if(isNaN(Number(t)))return R(\"Code should be numeric\"),void W(1);R(null),W(null);let n=Number(e.currentTarget.name?.charAt(5)),r=[...t||[\"\"]].slice(0,6-n),o=[...T.slice(0,n),...r,...T.slice(n+r.length)];b(o);let s=Math.min(Math.max(n+r.length,0),5);if(!isNaN(Number(e.currentTarget.value))){let e=document.querySelector(`input[name=code-${s}]`);e?.focus()}if(o.every((e=>e&&!isNaN(+e)))){let e=document.querySelector(`input[name=code-${s}]`);e?.blur(),g(o.join(\"\")).then((()=>k(!0))).catch((e=>{if(e instanceof N&&e.privyErrorCode===A.INVALID_CREDENTIALS)R(\"Invalid or expired verification code\");else if(e instanceof N&&e.privyErrorCode===A.CANNOT_LINK_MORE_OF_TYPE)R(e.message);else{if(e instanceof N&&e.privyErrorCode===A.USER_LIMIT_REACHED)return console.error(new S(e).toString()),void a(cr.USER_LIMIT_REACHED_SCREEN);if(e instanceof N&&e.privyErrorCode===A.USER_DOES_NOT_EXIST)return void a(cr.ACCOUNT_NOT_FOUND_SCREEN);if(e instanceof N&&e.privyErrorCode===A.LINKED_TO_ANOTHER_USER)return c({errorModalData:{error:e,previousScreen:i??cr.AWAITING_PASSWORDLESS_CODE}}),void a(cr.ERROR_SCREEN,!1);if(e instanceof N&&e.privyErrorCode===A.DISALLOWED_PLUS_EMAIL)return c({inlineError:{error:e}}),void a(cr.CONNECT_OR_CREATE,!1);if(e instanceof N&&e.privyErrorCode===A.ACCOUNT_TRANSFER_REQUIRED&&e.data?.data?.nonce)return c({accountTransfer:{nonce:e.data?.data?.nonce,account:0===L?m()?.email:m()?.phoneNumber,displayName:e.data?.data?.account?.displayName,linkMethod:0===L?\"email\":\"sms\",embeddedWalletAddress:e.data?.data?.otherUser?.embeddedWalletAddress}}),void a(cr.LINK_CONFLICT_SCREEN);R(\"Issue verifying code\")}W(0)}))}},F=0==L?/*#__PURE__*/t(ni,{color:\"var(--privy-color-accent)\",strokeWidth:2,height:\"48px\",width:\"48px\"}):\n/*#__PURE__*/t(ri,{color:\"var(--privy-color-accent)\",strokeWidth:2,height:\"40px\",width:\"40px\"}),B=/*#__PURE__*/e(\"p\",0==L?{children:[\"Please check \",/*#__PURE__*/t(lc,{children:m()?.email}),\" for an email from privy.io and enter your code below.\"]}:{children:[\"Please check \",/*#__PURE__*/t(lc,{children:m()?.phoneNumber}),\" for a message from \",r?.name||\"Privy\",\" and enter your code below.\"]});/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{backFn:()=>l()},\"header\"),/*#__PURE__*/e(tc,{children:[/*#__PURE__*/t(ql,{title:\"Enter confirmation code\",description:B,icon:F}),/*#__PURE__*/e(ht,{children:[/*#__PURE__*/e(nc,{children:[/*#__PURE__*/t(rc,{$fail:!!I,$success:_,children:/*#__PURE__*/t(\"span\",{children:I||(_?\"Success!\":\"\")})}),/*#__PURE__*/t(\"div\",{children:T.map(((e,n)=>/*#__PURE__*/t(\"input\",{name:`code-${n}`,type:\"text\",value:T[n],onChange:U,onKeyUp:e=>{\"Backspace\"===e.key&&(e=>{if(1===O&&(R(null),W(null)),b([...T.slice(0,e),\"\",...T.slice(e+1)]),e>0){let t=document.querySelector(`input[name=code-${e-1}]`);t?.focus()}})(n)},inputMode:\"numeric\",autoFocus:0===n,pattern:\"[0-9]\",className:`${_?\"success\":\"\"} ${I?\"fail\":\"\"}`,autoComplete:y?\"one-time-code\":\"off\"},n)))})]}),/*#__PURE__*/e(ic,{children:[/*#__PURE__*/e(\"span\",{children:[\"Didn't get \",0==L?\"an email\":\"a message\",\"?\"]}),M?/*#__PURE__*/e(sc,{children:[/*#__PURE__*/t(ti,{color:\"var(--privy-color-foreground)\",strokeWidth:1.33,height:\"12px\",width:\"12px\"}),/*#__PURE__*/t(\"span\",{children:\"Code sent\"})]}):/*#__PURE__*/t(oc,{children:/*#__PURE__*/t(\"button\",{onClick:async()=>{P(30),0==L?await h():await p()},children:\"Resend code\"})})]})]})]}),/*#__PURE__*/t(ct,{})]})},[cr.AWAITING_CONNECTION]:_n,[cr.AWAITING_CONNECT_ONLY_CONNECTION]:()=>{let r,{navigateBack:a,navigate:i,lastScreen:l,currentScreen:c,data:d,setModalData:u}=lr(),{walletConnectionStatus:h,closePrivyModal:p}=x(),[m,g]=s(void 0),[f,w]=s(0),v=ft(h?.connector?.walletClientType||\"unknown\"),C=\"connected\"===h?.status,E=\"switching_to_supported_chain\"===h?.status;o((()=>{if(C){let e;if(d?.externalConnectWallet?.onCompleteNavigateTo){let t=d.externalConnectWallet.onCompleteNavigateTo,n=h.connectedWallet?.address;e=setTimeout((()=>{d.funding&&u({...d,funding:{...d.funding,connectedWalletAddress:n}}),i(t({walletChainType:h.connector?.chainType}))}),hr)}else e=setTimeout(p,hr);return()=>clearTimeout(e)}}),[C]);o((()=>{h?.connectError&&(e=>{g(bt(e))})(h?.connectError)}),[h]);let T=h?.connector?.connectorType||\"injected\",b=h?.connector?.walletClientType||\"unknown\",A=v?.metadata?.shortName||v?.name||h?.connector?.walletBranding.name||\"Browser Extension\",_=v?.image_url?.md||h?.connector?.walletBranding.icon||(e=>/*#__PURE__*/t(Xe,{...e})),k=\"Browser Extension\"===A?A.toLowerCase():A;r=C?`Successfully connected with ${k}`:m?m.message:E?\"Switching networks\":`Waiting for ${k}`;let I=\"Don’t see your wallet? Check your other browser windows.\";return C?I=\"You’re good to go!\":f>=2&&m?I=\"Unable to connect wallet\":m?I=m.detail:E?I=\"Switch your wallet to the requested network.\":\"metamask\"===b&&y?I=\"Click to continue to open and connect MetaMask.\":\"metamask\"===b?I=\"For the best experience, connect only one wallet at a time.\":\"wallet_connect_v2\"===T?I=\"Open your mobile wallet app to continue\":\"coinbase_wallet\"===T&&(I=\"Open the Coinbase app on your phone to continue.\"),/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{backFn:c===l?void 0:a}),/*#__PURE__*/e(_c,{children:[/*#__PURE__*/t(Tt,{walletLogo:_,success:C,fail:!!m}),/*#__PURE__*/e(mt,{children:[/*#__PURE__*/t(\"h3\",{children:r}),/*#__PURE__*/t(\"p\",{children:I})]}),m==na.ERROR_USER_EXISTS?/*#__PURE__*/t(st,{onClick:a,children:\"Use a different wallet\"}):!C&&m?.retryable&&f<2?/*#__PURE__*/t(st,{onClick:()=>{w(f+1),g(void 0),h?.connectRetry()},disabled:!C&&(!m?.retryable||f>=2),children:\"Retry\"}):!C&&m&&f>=2?/*#__PURE__*/t(st,{onClick:a,children:\"Use a different wallet\"}):null]}),/*#__PURE__*/t(yt,{})]})},[cr.AWAITING_FARCASTER_CONNECTION]:()=>{let{authenticated:r,logout:a,ready:i,user:c}=ur(),{lastScreen:d,navigate:u,navigateBack:h,setModalData:p,app:m}=lr(),{getAuthFlow:g,loginWithFarcaster:w,closePrivyModal:v,createAnalyticsEvent:C}=x(),[E,T]=s(void 0),[b,_]=s(!1),[k,I]=s(!1),N=l([]),R=g(),O=R?.meta.connectUri;return o((()=>{let e=Date.now(),t=setInterval((async()=>{let n=await R.pollForReady.execute(),r=Date.now()-e;if(n){clearInterval(t),_(!0);try{await w(),I(!0)}catch(e){let t={retryable:!1,message:\"Authentication failed\"};if(e?.privyErrorCode===A.ALLOWLIST_REJECTED)return void u(cr.ALLOWLIST_REJECTION_SCREEN);if(e?.privyErrorCode===A.USER_LIMIT_REACHED)return console.error(new S(e).toString()),void u(cr.USER_LIMIT_REACHED_SCREEN);if(e?.privyErrorCode===A.USER_DOES_NOT_EXIST)return void u(cr.ACCOUNT_NOT_FOUND_SCREEN);if(e?.privyErrorCode===A.LINKED_TO_ANOTHER_USER)t.detail=e.message??\"This account has already been linked to another user.\";else{if(e?.privyErrorCode===A.ACCOUNT_TRANSFER_REQUIRED&&e.data?.data?.nonce)return p({accountTransfer:{nonce:e.data?.data?.nonce,account:e.data?.data?.subject,displayName:e.data?.data?.account?.displayName,linkMethod:\"farcaster\",embeddedWalletAddress:e.data?.data?.otherUser?.embeddedWalletAddress,farcasterEmbeddedAddress:e.data?.data?.otherUser?.farcasterEmbeddedAddress}}),void u(cr.LINK_CONFLICT_SCREEN);e?.privyErrorCode===A.INVALID_CREDENTIALS?(t.retryable=!0,t.detail=\"Something went wrong. Try again.\"):e?.privyErrorCode===A.TOO_MANY_REQUESTS&&(t.detail=\"Too many requests. Please wait before trying again.\")}T(t)}}else r>12e4&&(clearInterval(t),T({retryable:!0,message:\"Authentication failed\",detail:\"The request timed out. Try again.\"}))}),2e3);return()=>{clearInterval(t),N.current.forEach((e=>clearTimeout(e)))}}),[]),o((()=>{if(i&&r&&k&&c){if(m?.legal.requireUsersAcceptTerms&&!c.hasAcceptedTerms){let e=setTimeout((()=>{u(cr.AFFIRMATIVE_CONSENT_SCREEN)}),hr);return()=>clearTimeout(e)}k&&(ut(c,m.embeddedWallets)?N.current.push(setTimeout((()=>{p({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),C({eventName:\"embedded_wallet_creation_failure_logout\",payload:{error:e,screen:\"FarcasterConnectStatusScreen\"}}),a()},callAuthOnSuccessOnClose:!0}}),u(cr.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)}),hr)):N.current.push(setTimeout((()=>v({shouldCallAuthOnSuccess:!0,isSuccess:!0})),hr)))}}),[k,i,r,c]),/*#__PURE__*/e(n,y||b?{children:[/*#__PURE__*/t(ot,{backFn:d?h:void 0,onClose:v},\"header\"),/*#__PURE__*/t(_t,{}),\n/*#__PURE__*/t(n,f?{children:/*#__PURE__*/e(gu,{children:[/*#__PURE__*/t(qs,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(pt,{success:k,fail:!!E}),/*#__PURE__*/t(pu,{style:{width:\"38px\",height:\"38px\"}})]})}),/*#__PURE__*/e(mt,{children:[/*#__PURE__*/t(bl,{children:E?E.message:\"Sign in with Farcaster\"}),/*#__PURE__*/t(Al,{children:E?E.detail:\"To sign in with Farcaster, please open the Warpcast app.\"})]}),O&&/*#__PURE__*/t(st,{onClick:e=>{e.preventDefault(),window.location.href=O},children:\"Open Warpcast app\"})]})}:{children:/*#__PURE__*/e(yu,{children:[/*#__PURE__*/t(qs,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(pt,{success:k,fail:!!E}),/*#__PURE__*/t(pu,{style:{width:\"38px\",height:\"38px\"}})]})}),/*#__PURE__*/e(mt,{children:[/*#__PURE__*/t(bl,{children:E?E.message:\"Signing in with Farcaster\"}),/*#__PURE__*/t(Al,{children:E?E.detail:\"This should only take a moment\"}),/*#__PURE__*/t(Ft,{children:O&&y&&/*#__PURE__*/t(uu,{text:\"Take me to Warpcast\",url:O,color:mu})})]})]})}),/*#__PURE__*/t(yt,{})]}:{children:[/*#__PURE__*/t(ot,{backFn:d?h:void 0,onClose:v},\"header\"),/*#__PURE__*/t(_t,{}),/*#__PURE__*/t(yu,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(bl,{children:\"Sign in with Farcaster\"}),/*#__PURE__*/t(Al,{children:\"Scan with your phone's camera to continue.\"}),/*#__PURE__*/t(Bt,{children:O?/*#__PURE__*/t(zt,{url:O,size:275,squareLogoElement:pu}):/*#__PURE__*/t(Ht,{})}),/*#__PURE__*/e(Ft,{children:[/*#__PURE__*/t(Al,{children:\"Or copy this link and paste it into a phone browser to open the Warpcast app.\"}),O&&/*#__PURE__*/t(cu,{text:O,itemName:\"link\",color:mu})]})]})}),/*#__PURE__*/t(yt,{})]})},[cr.AWAITING_FARCASTER_SIGNER]:()=>{let{lastScreen:r,navigateBack:a,data:i,app:c}=lr(),{requestFarcasterSignerStatus:d,closePrivyModal:u}=x(),[h,p]=s(void 0),[m,g]=s(!1),[w,v]=s(!1),C=l([]),E=i?.farcasterSigner;o((()=>{let e=Date.now(),t=setInterval((async()=>{if(!E?.public_key)return clearInterval(t),void p({retryable:!0,message:\"Connect failed\",detail:\"Something went wrong. Please try again.\"});\"approved\"===E.status&&(clearInterval(t),g(!1),v(!0),C.current.push(setTimeout((()=>u({shouldCallAuthOnSuccess:!1,isSuccess:!0})),hr)));let n=await d(E?.public_key),r=Date.now()-e;\"approved\"===n.status?(clearInterval(t),g(!1),v(!0),C.current.push(setTimeout((()=>u({shouldCallAuthOnSuccess:!1,isSuccess:!0})),hr))):r>3e5?(clearInterval(t),p({retryable:!0,message:\"Connect failed\",detail:\"The request timed out. Try again.\"})):\"revoked\"===n.status&&(clearInterval(t),p({retryable:!0,message:\"Request rejected\",detail:\"The request was rejected. Please try again.\"}))}),2e3);return()=>{clearInterval(t),C.current.forEach((e=>clearTimeout(e)))}}),[]);let T=\"pending_approval\"===E?.status?E.signer_approval_url:void 0;/*#__PURE__*/return e(n,y||m?{children:[/*#__PURE__*/t(ot,{backFn:r?a:void 0,onClose:u},\"header\"),/*#__PURE__*/t(_t,{}),\n/*#__PURE__*/t(n,f?{children:/*#__PURE__*/e(vu,{children:[/*#__PURE__*/t(qs,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(pt,{success:w,fail:!!h}),/*#__PURE__*/t(pu,{style:{width:\"38px\",height:\"38px\"}})]})}),/*#__PURE__*/e(mt,{children:[/*#__PURE__*/t(bl,{children:h?h.message:\"Add a signer to Farcaster\"}),/*#__PURE__*/t(Al,{children:h?h.detail:\"This will allow \"+c.name+\" to add casts, likes, follows, and more on your behalf.\"})]}),T&&/*#__PURE__*/t(st,{onClick:e=>{e.preventDefault(),window.location.href=T},children:\"Open Warpcast app\"})]})}:{children:/*#__PURE__*/e(wu,{children:[/*#__PURE__*/t(qs,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(pt,{success:w,fail:!!h}),/*#__PURE__*/t(pu,{style:{width:\"38px\",height:\"38px\"}})]})}),/*#__PURE__*/e(mt,{children:[/*#__PURE__*/t(bl,{children:h?h.message:\"Requesting signer from Farcaster\"}),/*#__PURE__*/t(Al,{children:h?h.detail:\"This should only take a moment\"}),/*#__PURE__*/t(Ft,{children:T&&y&&/*#__PURE__*/t(uu,{text:\"Take me to Warpcast\",url:T,color:fu})})]})]})}),/*#__PURE__*/t(yt,{})]}:{children:[/*#__PURE__*/t(ot,{backFn:r?a:void 0,onClose:u},\"header\"),/*#__PURE__*/t(_t,{}),/*#__PURE__*/t(wu,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(bl,{children:\"Add a signer to Farcaster\"}),/*#__PURE__*/e(Al,{children:[\"This will allow \",c.name,\" to add casts, likes, follows, and more on your behalf.\"]}),/*#__PURE__*/t(Bt,{children:\"pending_approval\"===E?.status?/*#__PURE__*/t(zt,{url:E.signer_approval_url,size:275,squareLogoElement:pu}):/*#__PURE__*/t(Ht,{})}),/*#__PURE__*/e(Ft,{children:[/*#__PURE__*/t(Al,{children:\"Or copy this link and paste it into a phone browser to open the Warpcast app.\"}),\"pending_approval\"===E?.status&&/*#__PURE__*/t(cu,{text:E.signer_approval_url,itemName:\"link\",color:fu})]})]})}),/*#__PURE__*/t(yt,{})]})},[cr.SELECT_PASSKEY_SIGNUP_OR_LOGIN]:()=>{let{enabled:r,token:a}=it(),{lastScreen:i,currentScreen:o,navigateBack:s,navigate:l,setModalData:c}=lr(),{initSignupWithPasskey:d,initLoginWithPasskey:u}=x();/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{backFn:i&&o!==i?s:void 0}),/*#__PURE__*/t(Tl,{children:/*#__PURE__*/e(my,{children:[/*#__PURE__*/t(th,{}),/*#__PURE__*/t(nh,{})]})}),/*#__PURE__*/t(bl,{children:\"Log in or create a new account?\"}),/*#__PURE__*/t(Al,{children:\"Create a new account with a passkey or use a passkey to log in to an existing account.\"}),/*#__PURE__*/e(xl,{children:[/*#__PURE__*/t(st,{onClick:async()=>{r&&!a?(c({passkeyAuthModalData:{passkeySignupFlow:!0},captchaModalData:{callback:e=>d({captchaToken:e,withPrivyUi:!0}),userIntentRequired:!1,onSuccessNavigateTo:cr.AWAITING_PASSKEY_SYSTEM_DIALOGUE,onErrorNavigateTo:cr.ERROR_SCREEN}}),l(cr.CAPTCHA_SCREEN)):(await d({withPrivyUi:!0}),c({passkeyAuthModalData:{passkeySignupFlow:!0}}),l(cr.AWAITING_PASSKEY_SYSTEM_DIALOGUE))},children:\"Create new account\"}),/*#__PURE__*/t(Dl,{onClick:async()=>{r&&!a?(c({passkeyAuthModalData:{passkeySignupFlow:!1},captchaModalData:{callback:e=>u({captchaToken:e,withPrivyUi:!0}),userIntentRequired:!1,onSuccessNavigateTo:cr.AWAITING_PASSKEY_SYSTEM_DIALOGUE,onErrorNavigateTo:cr.ERROR_SCREEN}}),l(cr.CAPTCHA_SCREEN)):(await u({withPrivyUi:!0}),c({passkeyAuthModalData:{passkeySignupFlow:!1}}),l(cr.AWAITING_PASSKEY_SYSTEM_DIALOGUE))},children:\"Log in with a passkey\"})]}),/*#__PURE__*/t(ct,{})]})},[cr.AWAITING_PASSKEY_SYSTEM_DIALOGUE]:()=>{let{app:r,lastScreen:a,currentScreen:i,navigateBack:c,data:d,setModalData:u,navigate:h}=lr(),{loginWithPasskey:p,signupWithPasskey:m,closePrivyModal:y,createAnalyticsEvent:g}=x(),{user:f,logout:w}=ur(),{passkeySignupFlow:v}=d?.passkeyAuthModalData??{},C=hr-500,[E,T]=s(\"loading\"),[b,_]=s(null),k=l([]),I=e=>{k.current=[e,...k.current]};o((()=>()=>{k.current.forEach((e=>clearTimeout(e))),k.current=[]}),[]);let N=async()=>{T(\"loading\");try{v?await m():await p(),T(\"success\")}catch(e){_(e),T(\"error\")}};return o((()=>{if(\"success\"===E&&f){if(r?.legal.requireUsersAcceptTerms&&!f.hasAcceptedTerms)return void I(setTimeout((()=>{h(cr.AFFIRMATIVE_CONSENT_SCREEN)}),C));if(!ut(f,r?.embeddedWallets))return void I(setTimeout((()=>{y({shouldCallAuthOnSuccess:!0,isSuccess:!0})}),hr));I(setTimeout((()=>{u({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),g({eventName:\"embedded_wallet_creation_failure_logout\",payload:{error:e,screen:\"PasskeyStatusScreen\"}}),w()},callAuthOnSuccessOnClose:!0}}),h(cr.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)}),C))}}),[f,E]),o((()=>{N()}),[]),/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{backFn:a&&i!==a?c:void 0}),/*#__PURE__*/e(yy,{children:[/*#__PURE__*/t(qs,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(pt,{success:\"success\"===E,fail:\"error\"===E}),/*#__PURE__*/t(nh,{style:{width:\"38px\",height:\"38px\"}})]})}),/*#__PURE__*/e(mt,{children:[/*#__PURE__*/t(\"h3\",{children:(()=>{switch(E){case\"loading\":return\"Waiting for passkey\";case\"success\":return\"Success\";case\"error\":return\"Something went wrong\"}})()}),/*#__PURE__*/t(\"p\",{style:{whiteSpace:\"pre-wrap\"},children:(()=>{switch(E){case\"loading\":return v?\"Please follow prompts to register your passkey.\":\"Please follow prompts to verify your passkey.\\nYou will have to sign up with another method first to register a passkey for your account.\";case\"success\":return\"You've successfully logged in with your passkey.\";case\"error\":if(b instanceof M){if(b.privyErrorCode===A.CANNOT_LINK_MORE_OF_TYPE)return\"Cannot link more passkeys to account.\";if(b.privyErrorCode===A.PASSKEY_NOT_ALLOWED)return\"Passkey request timed out or rejected by user.\\nYou will have to sign up with another method first to register a passkey for your account.\"}return\"An unknown error occurred.\\nYou will have to sign up with another method first to register a passkey for your account.\"}})()})]}),(()=>{switch(E){case\"loading\":case\"success\":/*#__PURE__*/return t(st,{onClick:()=>{},disabled:!0,children:\"Continue\"});case\"error\":/*#__PURE__*/return t(st,{onClick:N,disabled:!1,children:\"Retry\"})}})()]}),/*#__PURE__*/t(yt,{})]})},[cr.WALLET_INTERSTITIAL_SCREEN]:()=>{let{ready:r}=ur(),{data:a}=lr(),[i,o]=s(!1);if(!a?.installWalletModalData)throw Error(\"Wallet data is missing\");let{walletConfig:l,connectOnly:c,chainType:d}=a.installWalletModalData,u=l.getMobileRedirect({useUniversalLink:!i,isSolana:\"solana\"===d,connectOnly:c}),h=l.name.replace(/ wallet/gi,\"\"),p={title:`Redirecting to ${h} Mobile Wallet`,description:`We'll take you to the ${h} Mobile Wallet app to continue your login experience.`,footnote:\"\"};return r&&(p.description=`For the best experience, we'll automatically log you into the ${h} Mobile Wallet in-app browser.`,p.footnote=\"Once you're done, you can always return here and refresh to view your updated account.\"),i&&(p.title=\"Still here?\",p.description=`You may need to install the ${l.name} mobile app.`,p.footnote=`Once you're done, you can return here or connect via ${l.name}'s in-app browser.`),/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{},\"header\"),/*#__PURE__*/t(_t,{}),/*#__PURE__*/t(Gl,{title:p.title,description:p.description}),/*#__PURE__*/e(un,{children:[/*#__PURE__*/t(An,{href:u,onClick:()=>setTimeout((()=>o(!0)),1e3),loading:r&&!u,children:i?\"Go to App Store\":\"Continue\"}),p.footnote?/*#__PURE__*/t(\"p\",{children:p.footnote}):null]}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]})},[cr.LOGIN_FAILED_SCREEN]:()=>{let{closePrivyModal:r}=x(),{navigate:a}=lr();/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{},\"header\"),/*#__PURE__*/t(_t,{}),/*#__PURE__*/t(Xp,{style:{width:\"160px\",height:\"160px\",margin:\"0 auto 20px\"}}),/*#__PURE__*/t(Gl,{title:\"Could not connect with wallet\",description:\"Please check that Phantom multichain is enabled and try again.\",style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",justifyContent:\"center\",textAlign:\"center\"}}),/*#__PURE__*/e(un,{children:[/*#__PURE__*/t(st,{onClick:()=>a(cr.LANDING),children:\"Try again\"}),/*#__PURE__*/t(dt,{onClick:()=>r(),children:\"Cancel\"})]}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]})},[cr.AWAITING_OAUTH_SCREEN]:()=>{let{authenticated:r,logout:a,ready:i,user:l}=ur(),{app:c,setModalData:d,navigate:u,resetNavigation:h}=lr(),{getAuthMeta:p,initLoginWithOAuth:m,loginWithOAuth:y,updateWallets:g,setReadyToTrue:f,closePrivyModal:w,createAnalyticsEvent:v}=x(),[C,E]=s(!1),[T,b]=s(void 0),_=p()?.provider||\"google\",{name:k,component:I}=zo(_);o((()=>{y(_).then((()=>{E(!0),f(!0)})).catch((e=>{if(f(!1),e?.privyErrorCode===A.ALLOWLIST_REJECTED)return b(void 0),h(),void u(cr.ALLOWLIST_REJECTION_SCREEN);if(e?.privyErrorCode===A.USER_LIMIT_REACHED)return console.error(new S(e).toString()),b(void 0),h(),void u(cr.USER_LIMIT_REACHED_SCREEN);if(e?.privyErrorCode===A.USER_DOES_NOT_EXIST)return b(void 0),h(),void u(cr.ACCOUNT_NOT_FOUND_SCREEN);if(e?.privyErrorCode===A.ACCOUNT_TRANSFER_REQUIRED&&e.data?.data?.nonce)return b(void 0),h(),d({accountTransfer:{nonce:e.data?.data?.nonce,account:e.data?.data?.subject,displayName:e.data?.data?.account?.displayName,linkMethod:p()?.provider,embeddedWalletAddress:e.data?.data?.otherUser?.embeddedWalletAddress,oAuthUserInfo:e.data?.data?.otherUser?.oAuthUserInfo}}),void u(cr.LINK_CONFLICT_SCREEN);let{retryable:t,detail:n}=function(e,t){let n={detail:\"\",retryable:!1},r=xo(t);if(e?.privyErrorCode===A.LINKED_TO_ANOTHER_USER&&(n.detail=\"This account has already been linked to another user.\"),e?.privyErrorCode===A.INVALID_CREDENTIALS&&(n.retryable=!0,n.detail=\"Something went wrong. Try again.\"),e.privyErrorCode===A.OAUTH_USER_DENIED&&(n.detail=`Retry and check ${r} to finish connecting your account.`,n.retryable=!0),e?.privyErrorCode===A.TOO_MANY_REQUESTS&&(n.detail=\"Too many requests. Please wait before trying again.\"),e?.privyErrorCode===A.TOO_MANY_REQUESTS&&e.message.includes(\"provider rate limit\")){let e=zo(t).name;n.detail=`Request limit reached for ${e}. Please wait a moment and try again.`}if(e?.privyErrorCode===A.OAUTH_ACCOUNT_SUSPENDED){let e=zo(t).name;n.detail=`Your ${e} account is suspended. Please try another login method.`}return e?.privyErrorCode===A.CANNOT_LINK_MORE_OF_TYPE&&(n.detail=\"You cannot authorize more than one account for this user.\"),e?.privyErrorCode===A.OAUTH_UNEXPECTED&&t.startsWith(\"privy:\")&&(n.detail=\"Something went wrong. Please try again.\"),n}(e,_);b({retryable:t,detail:n,message:\"Authentication failed\"})})).finally((()=>{Vo()}))}),[k,_]),o((()=>{if(i&&r&&C&&l){if(c?.legal.requireUsersAcceptTerms&&!l.hasAcceptedTerms){let e=setTimeout((()=>{u(cr.AFFIRMATIVE_CONSENT_SCREEN)}),hr);return()=>clearTimeout(e)}if(ut(l,c.embeddedWallets)){let e=setTimeout((()=>{d({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),v({eventName:\"embedded_wallet_creation_failure_logout\",payload:{error:e,provider:_,screen:\"OAuthStatusScreen\"}}),a()},callAuthOnSuccessOnClose:!0}}),u(cr.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)}),hr);return()=>clearTimeout(e)}{let e=setTimeout((()=>w({shouldCallAuthOnSuccess:!0,isSuccess:!0})),hr);return g(),()=>clearTimeout(e)}}}),[i,r,C,l]);let N=C?`Successfully connected with ${k}`:T?T.message:`Verifying connection to ${k}`,R=\"\";return R=C?\"You’re good to go!\":T?T.detail:\"Just a few moments more\",/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(py,{children:[/*#__PURE__*/t(qs,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(pt,{success:C,fail:!!T}),/*#__PURE__*/t(I,{style:{width:\"38px\",height:\"38px\"}})]})}),/*#__PURE__*/e(mt,{children:[/*#__PURE__*/t(\"h3\",{children:N}),/*#__PURE__*/t(\"p\",{children:R})]}),T&&T?.retryable?/*#__PURE__*/t(hn,{onClick:()=>{Vo(),m(_),b(void 0)},disabled:!C&&!T?.retryable,children:\"Retry\"}):null]}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(yt,{})]})},[cr.CROSS_APP_AUTH_SCREEN]:()=>{let r=dr(),{data:a,navigate:l,setModalData:c,onUserCloseViaDialogOrKeybindRef:d}=lr(),{crossAppAuthFlow:u,updateWallets:h,closePrivyModal:p,createAnalyticsEvent:m}=x(),{logout:y}=At(),[g,f]=s({}),w=a?.crossAppAuth,v={id:w.appId,name:w.name,logoUrl:w.logoUrl},C=new T(`There was an issue connecting your ${v.name} account. Please try again.`),E=new Ge((async e=>{if(w.popup)try{let t=await u({appId:e,popup:w.popup,action:w.action});f({data:t})}catch(e){e instanceof T?f({error:e}):(e instanceof N&&w.popup&&w.popup.close(),f({error:C}))}else f({error:C})})),b=()=>{g.data&&(h(),w.onSuccess(g.data),p({shouldCallAuthOnSuccess:!0,isSuccess:!0})),w.onError(g.error??new T(\"User canceled flow\")),p({shouldCallAuthOnSuccess:!1,isSuccess:!1})};d.current=b,o((()=>{v.id.length&&E.execute(v.id)}),[v.id]),o((()=>{if(!g.data)return;let e=g.data;if(r.legal.requireUsersAcceptTerms&&!e.hasAcceptedTerms){let e=setTimeout((()=>{l(cr.AFFIRMATIVE_CONSENT_SCREEN)}),hr);return()=>clearTimeout(e)}if(ut(e,r.embeddedWallets)){let e=setTimeout((()=>{c({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),m({eventName:\"embedded_wallet_creation_failure_logout\",payload:{error:e,provider:`privy:${v.id}`,screen:\"CrossAppAuthScreen\"}}),y()},callAuthOnSuccessOnClose:!0}}),l(cr.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)}),hr);return()=>clearTimeout(e)}let t=setTimeout(b,hr);return()=>clearTimeout(t)}),[g.data]);let{title:A,subtitle:_}=i((()=>g.data?{title:`Successfully connected with ${v.name}`,subtitle:\"You're good to go!\"}:g.error?{title:\"Authentication failed\",subtitle:g.error.message}:{title:`Connecting to ${v.name}`,subtitle:`Please check the pop-up from ${v.name} to continue`}),[g,v.name]);/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{onClose:b}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(Ic,{children:[/*#__PURE__*/t(qs,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(pt,{success:!!g.data,fail:!!g.error}),/*#__PURE__*/t(kc,{name:v.name,logoUrl:v.logoUrl})]})}),/*#__PURE__*/e(mt,{children:[/*#__PURE__*/t(\"h3\",{children:A}),/*#__PURE__*/t(\"p\",{children:_})]})]}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(yt,{})]})},[cr.ALLOWLIST_REJECTION_SCREEN]:()=>{let{navigate:r,app:a}=lr(),i=a?.allowlistConfig.errorTitle||\"You don't have access to this app\",o=a?.allowlistConfig.errorDetail||\"Have you been invited?\",s=a?.allowlistConfig.errorCtaText||\"Try another account\";/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{}),/*#__PURE__*/e(Vl,{children:[/*#__PURE__*/t(qs,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(sl,{}),/*#__PURE__*/t(Hl,{style:{width:\"38px\",height:\"38px\",strokeWidth:\"1\",stroke:\"var(--privy-color-accent)\",fill:\"var(--privy-color-accent)\"}})]})}),/*#__PURE__*/e($l,{children:[/*#__PURE__*/t(\"string\"==typeof i?\"h3\":n,{children:i}),/*#__PURE__*/t(\"string\"==typeof o?\"p\":n,{children:o})]}),a?.allowlistConfig.errorCtaLink?\n/*#__PURE__*/t(st,{as:\"a\",href:a.allowlistConfig.errorCtaLink,children:s}):/*#__PURE__*/t(st,{onClick:()=>{r(cr.LANDING)},children:s})]})]})},[cr.ACCOUNT_NOT_FOUND_SCREEN]:()=>{let{navigate:r,app:a,setModalData:i,data:o}=lr(),{getAuthMeta:s,client:l}=x();/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{}),/*#__PURE__*/e(il,{children:[/*#__PURE__*/t(qs,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(Gs,{color:\"var(--privy-color-warn-light)\"}),/*#__PURE__*/t(Ka,{height:38,width:38,strokeWidth:2,stroke:\"var(--privy-color-warn)\"})]})}),/*#__PURE__*/e(ol,{children:[/*#__PURE__*/t(\"h3\",{children:\"Account not found\"}),/*#__PURE__*/e(\"p\",{children:[\"Please try logging in again or go to \",a.name,\" to create an account.\"]})]}),/*#__PURE__*/t(Ks,{}),/*#__PURE__*/t(st,{onClick:()=>{let e=s();i({...o,login:{...o?.login,...e?.disableSignup?{disableSignup:!0}:{}}}),l?.authFlow&&(l.authFlow=void 0),r(cr.LANDING)},children:\"Try logging in again\"})]})]})},[cr.USER_LIMIT_REACHED_SCREEN]:()=>{let{navigate:r}=lr();/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{}),/*#__PURE__*/e(rf,{children:[/*#__PURE__*/t(af,{children:/*#__PURE__*/t(nf,{})}),/*#__PURE__*/e(of,{children:[/*#__PURE__*/t(\"h3\",{children:\"Unable to sign in\"}),/*#__PURE__*/t(\"p\",{children:\"This application has reached its user limit and cannot sign in new users.\"})]}),/*#__PURE__*/t(st,{onClick:()=>{r(cr.LANDING)},children:\"Go back\"})]}),/*#__PURE__*/t(ct,{})]})},[cr.INSTALL_WALLET_SCREEN]:()=>{let{navigateBack:r,data:a}=lr();if(!a?.installWalletModalData)throw Error(\"Wallet data is missing\");let{walletConfig:i}=a.installWalletModalData;/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{backFn:r},\"header\"),/*#__PURE__*/t(_t,{}),/*#__PURE__*/t(yp,{...i}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/e(yt,{children:[/*#__PURE__*/t(\"span\",{children:\"Still not sure? \"}),/*#__PURE__*/t(\"a\",{target:\"_blank\",href:\"https://solana.com/docs/intro/wallets\",children:\"Learn more\"})]})]})},[cr.LINK_EMAIL_SCREEN]:()=>{let{app:r}=lr();/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{},\"header\"),/*#__PURE__*/t(_t,{}),/*#__PURE__*/t(ql,{title:\"Connect your email\",description:`Add your email to your ${r?.name} account`,icon:/*#__PURE__*/t(ni,{color:\"var(--privy-color-accent)\",strokeWidth:2,height:\"48px\",width:\"48px\"})}),/*#__PURE__*/t(un,{children:/*#__PURE__*/t(Tp,{stacked:!0})}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]})},[cr.LINK_PHONE_SCREEN]:()=>{let{app:r,currentScreen:a,data:i,navigate:o,setModalData:s}=lr(),{initLoginWithSms:l}=x();/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{},\"header\"),/*#__PURE__*/t(_t,{}),/*#__PURE__*/t(ql,{title:\"Connect your phone\",description:`Add your number to your ${r?.name} account`,icon:/*#__PURE__*/t(ri,{color:\"var(--privy-color-accent)\",strokeWidth:2,height:\"40px\",width:\"40px\"})}),/*#__PURE__*/t(un,{children:/*#__PURE__*/t(Wp,{stacked:!0,onSubmit:async function({qualifiedPhoneNumber:e}){try{await l({phoneNumber:e,withPrivyUi:!0}),o(cr.AWAITING_PASSWORDLESS_CODE)}catch(e){s({errorModalData:{error:e,previousScreen:i?.errorModalData?.previousScreen||a||cr.LINK_PHONE_SCREEN}}),o(cr.ERROR_SCREEN)}},hideRecent:!0})}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]})},[cr.LINK_WALLET_SCREEN]:()=>{let{app:r,data:a}=lr(),i=a?.externalConnectWallet?.suggestedAddress,o=i?/*#__PURE__*/e(\"span\",{children:[\"Link the wallet with address \",/*#__PURE__*/t(lt,{showCopyIcon:!1,address:i}),\" \",r?.name?`to ${r.name}.`:\".\"]}):`Link a wallet to your ${r?.name} account`,{connectors:s}=x(),l=Ac({walletList:a?.externalConnectWallet?.walletList??r.appearance.walletList,walletChainType:a?.externalConnectWallet?.walletChainType??r.appearance.walletChainType,connectors:s,connectOnly:!1,ignore:r.appearance.walletList,walletConnectEnabled:r.externalWallets.walletConnect.enabled});/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{},\"header\"),l.length>0&&/*#__PURE__*/t(Gl,{title:\"Link your wallet\",description:o}),/*#__PURE__*/t(Zs,{children:/*#__PURE__*/t(bc,{wallets:l})}),/*#__PURE__*/t(ct,{})]})},[cr.LINK_PASSKEY_SCREEN]:()=>{let{user:r,unlinkPasskey:a}=ur(),{linkWithPasskey:i,closePrivyModal:l}=x(),c=r?.linkedAccounts.filter((e=>\"passkey\"===e.type)),[d,u]=s(!1),[h,p]=s(\"\"),[m,y]=s(!1),[g,f]=s(!1);o((()=>{0===c.length&&f(!1)}),[c.length]);let w=async e=>(u(!0),await a(e).then((()=>y(!0))).catch((e=>{e instanceof M&&e.privyErrorCode===A.MISSING_MFA_CREDENTIALS?p(\"Cannot unlink a passkey enrolled in MFA\"):p(\"Unknown error occurred.\")})).finally((()=>{u(!1)})));/*#__PURE__*/return e(n,m?{children:[/*#__PURE__*/t(ot,{onClose:()=>l()},\"header\"),/*#__PURE__*/t(Ul,{style:{marginBottom:\"1.5rem\"},children:/*#__PURE__*/t(oi,{})}),/*#__PURE__*/t(dh,{style:{marginBottom:\"1.5rem\"},children:\"Passkeys updated\"}),/*#__PURE__*/t(uh,{children:\" \"}),/*#__PURE__*/t(xl,{children:/*#__PURE__*/t(st,{onClick:()=>l(),children:\"Done\"})}),/*#__PURE__*/t(yt,{})]}:g?{children:[/*#__PURE__*/t(ot,{backFn:()=>f(!1),onClose:()=>l()},\"header\"),/*#__PURE__*/t(rh,{passkeys:c,expanded:g,onUnlink:w,onExpand:()=>f(!0)}),/*#__PURE__*/t(yt,{})]}:{children:[/*#__PURE__*/t(ot,{onClose:()=>l()},\"header\"),/*#__PURE__*/t(Tl,{children:/*#__PURE__*/e(ih,{children:[/*#__PURE__*/t(th,{}),/*#__PURE__*/t(nh,{})]})}),/*#__PURE__*/t(dh,{children:\"Secure your account with a passkey\"}),/*#__PURE__*/t(hh,{}),0===c.length?/*#__PURE__*/t(ah,{}):/*#__PURE__*/t(rh,{passkeys:c,expanded:g,onUnlink:w,onExpand:()=>f(!0)}),/*#__PURE__*/e(xl,{style:{marginTop:\"12px\"},children:[h&&/*#__PURE__*/t(oh,{$fail:!0,children:h}),/*#__PURE__*/t(st,{onClick:()=>{u(!0),i().then((()=>y(!0))).catch((e=>{if(e instanceof M){if(e.privyErrorCode===A.CANNOT_LINK_MORE_OF_TYPE)return void p(\"Cannot link more passkeys to account.\");if(e.privyErrorCode===A.PASSKEY_NOT_ALLOWED)return void p(\"Passkey request timed out or rejected by user.\")}p(\"Unknown error occurred.\")})).finally((()=>{u(!1)}))},loading:d,children:\"Add new passkey\"})]}),/*#__PURE__*/t(yt,{})]})},[cr.UPDATE_EMAIL_SCREEN]:()=>/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{},\"header\"),/*#__PURE__*/t(_t,{}),/*#__PURE__*/t(ql,{title:\"Update your email\",description:\"Add the email address you'd like to use going forward. We'll send you a confirmation code\",icon:/*#__PURE__*/t(ni,{color:\"var(--privy-color-accent)\",strokeWidth:2,height:\"48px\",width:\"48px\"})}),/*#__PURE__*/t(un,{children:/*#__PURE__*/t(Xg,{stacked:!0})}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]}),[cr.UPDATE_PHONE_SCREEN]:()=>{let{currentScreen:r,data:a,navigate:i,setModalData:o}=lr(),{user:s}=ur(),{initUpdatePhone:l}=x();/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{},\"header\"),/*#__PURE__*/t(_t,{}),/*#__PURE__*/t(ql,{title:\"Update your phone number\",description:\"Add the phone number you'd like to use going forward. We'll send you a confirmation code\",icon:/*#__PURE__*/t(ri,{color:\"var(--privy-color-accent)\",strokeWidth:2,height:\"48px\",width:\"48px\"})}),/*#__PURE__*/t(un,{children:/*#__PURE__*/t(Wp,{stacked:!0,onSubmit:async function({qualifiedPhoneNumber:e}){try{if(!s?.phone?.number)throw Error(\"User is required to have an phone number to update it.\");await l(s?.phone?.number,e),i(cr.AWAITING_PASSWORDLESS_CODE)}catch(e){o({errorModalData:{error:e,previousScreen:a?.errorModalData?.previousScreen||r||cr.LINK_PHONE_SCREEN}}),i(cr.ERROR_SCREEN)}},hideRecent:!0})}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]})},[cr.CONNECT_ONLY_LANDING_SCREEN]:()=>{let{app:r,data:a}=lr(),i=dr(),o=a?.externalConnectWallet?.suggestedAddress,s=o?/*#__PURE__*/e(\"span\",{children:[\"Connect the wallet with address \",/*#__PURE__*/t(lt,{showCopyIcon:!1,address:o}),\" \",r?.name?`to ${r.name}.`:\".\"]}):`Connect a wallet to your ${r?.name} account`,{connectors:l}=x(),c=Ac({walletList:a?.externalConnectWallet?.walletList??r.appearance.walletList,walletChainType:a?.externalConnectWallet?.walletChainType??r.appearance.walletChainType,connectors:l,connectOnly:!0,ignore:r.appearance.walletList,walletConnectEnabled:r.externalWallets.walletConnect.enabled});/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{},\"header\"),c.length>0&&/*#__PURE__*/t(jl,{title:\"Connect your wallet\",description:s}),/*#__PURE__*/t(Js,{$colorScheme:i.appearance.palette.colorScheme,children:/*#__PURE__*/t(bc,{wallets:c})}),r&&/*#__PURE__*/t(Et,{app:r,alwaysShowImplicitConsent:!0}),/*#__PURE__*/t(ct,{})]})},[cr.CONNECT_ONLY_AUTHENTICATED_SCREEN]:()=>{let{app:r,data:a}=lr(),i=dr(),o=a?.externalConnectWallet?.suggestedAddress,s=o?`Connect the wallet with address ${Ct(o)} ${r?.name?`to ${r.name}.`:\".\"}`:`Connect a wallet to ${r?.name}`,{connectors:l}=x(),c=Ac({walletList:a?.externalConnectWallet?.walletList??r.appearance.walletList,walletChainType:a?.externalConnectWallet?.walletChainType??r.appearance.walletChainType,connectors:l,connectOnly:!0,ignore:r.appearance.walletList,walletConnectEnabled:r.externalWallets.walletConnect.enabled});/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{},\"header\"),c.length>0&&/*#__PURE__*/t(Gl,{title:\"Connect your wallet\",description:s}),/*#__PURE__*/t(Js,{$colorScheme:i.appearance.palette.colorScheme,children:/*#__PURE__*/t(bc,{wallets:c})}),/*#__PURE__*/t(ct,{})]})},[cr.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN]:()=>{let{app:r,setModalData:a,navigate:i,data:l,onUserCloseViaDialogOrKeybindRef:c}=lr(),[d,u]=s(\"\"),{embeddedWallets:h}=dr(),{authenticated:p,user:m,getAccessToken:y}=ur(),{closePrivyModal:g,walletProxy:f,refreshSessionAndUser:w,recoverPrimaryWallet:v}=x(),{onSuccess:C,onFailure:E,callAuthOnSuccessOnClose:b}=l.createWallet,A=!0===r?.embeddedWallets.requireUserOwnedRecoveryOnCreate,{createWallet:_}=rd(),[k,I]=s(null),N=new Ge((async()=>{let e=await y();if(m&&e&&f)try{let t=wr(m);if(t&&\"privy\"===t.recoveryMethod)await v();else if(t){let{entropyId:n,entropyIdVerifier:r}=jn(t);try{if(!await f.connect({accessToken:e,entropyId:n,entropyIdVerifier:r}))throw new T(\"Primary wallet not connected.\")}catch(e){return I(t),void i(cr.EMBEDDED_WALLET_CREATED_SCREEN)}}let n=Wt(m,r.embeddedWallets.ethereum.createOnLogin),a=Mt(m,r.embeddedWallets.solana.createOnLogin);if(n&&a){let t=await _({user:m});if(await f.createSolana({accessToken:e,ethereumAddress:t?.address}),!t)return;return I(t),void i(cr.EMBEDDED_WALLET_CREATED_SCREEN)}if(a){await f.createSolana({accessToken:e,ethereumAddress:yr(m)?.address});let t=await w();return I(gr(t)),void i(cr.EMBEDDED_WALLET_CREATED_SCREEN)}if(n){let e=await _({user:m});if(!e)return;I(e),i(cr.EMBEDDED_WALLET_CREATED_SCREEN)}}catch(e){u(e.message)}}));return o((()=>p&&m?A?(a({...l,recoverySelection:{...l?.recoverySelection,isInAccountCreateFlow:!0}}),i(Gc({walletAction:\"create\",showAutomaticRecovery:!1,availableRecoveryMethods:h.userOwnedRecoveryOptions,legacySetWalletPasswordFlow:!1,isResettingPassword:!1}))):void N.execute():(i(cr.LANDING),void E(Error(\"User must be authenticated before creating a Privy wallet\")))),[A,p]),c.current=()=>null,d?/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{closeable:!1}),/*#__PURE__*/e(xt,{children:[/*#__PURE__*/t(ii,{fill:\"var(--privy-color-error)\",width:\"64px\",height:\"64px\"}),/*#__PURE__*/t(ql,{title:\"Something went wrong\",description:d})]}),/*#__PURE__*/t(st,{onClick:()=>{k?(C(k),g({shouldCallAuthOnSuccess:b})):(E(new R(\"User wallet creation failed\")),g({shouldCallAuthOnSuccess:!1}))},children:\"Close\"}),/*#__PURE__*/t(id,{})]}):/*#__PURE__*/t(Rc,{})},[cr.EMBEDDED_WALLET_CREATED_SCREEN]:()=>{let{user:r}=ur(),{closePrivyModal:a,isNewUserThisSession:i,updateWallets:s}=x(),{app:l,data:c,onUserCloseViaDialogOrKeybindRef:d}=lr(),{onSuccess:u,onFailure:h,callAuthOnSuccessOnClose:p}=c.createWallet,m=()=>{let e=yr(r)??gr(r);e?(s(),u(e)):h(Error(\"Failed to create wallet\")),a({shouldCallAuthOnSuccess:p})};return o((()=>{let e=setTimeout(m,pr);return()=>clearTimeout(e)}),[]),d.current=m,/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{onClose:m}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(xt,{children:[/*#__PURE__*/t(ai,{fill:\"var(--privy-color-accent)\",width:\"64px\",height:\"64px\"}),/*#__PURE__*/t(ql,{title:i?\"Welcome\"+(l?.name?` to ${l?.name}`:\"\"):\"All set!\",description:i?\"You’ve successfully created an account.\":\"Your account is secured.\"})]}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]})},[cr.EMBEDDED_WALLET_CONNECTING_SCREEN]:()=>{let{authenticated:r,user:a,getAccessToken:l}=ur(),{closePrivyModal:c,createAnalyticsEvent:d,walletProxy:u}=x(),{navigate:h,data:p,setModalData:m,onUserCloseViaDialogOrKeybindRef:y}=lr(),g=i((()=>Date.now()),[]),[f,w]=s(!1),{onCompleteNavigateTo:v,onFailure:C,shouldForceMFA:E,entropyId:T,entropyIdVerifier:b}=p?.connectWallet,A=e=>{f||(w(!0),C(\"string\"==typeof e?Error(e):e))};o((()=>{let e,t=mr(a,T);return r&&t?u?((async()=>{let n=await l();if(!n)return A(\"User must be authenticated and have a Privy wallet before it can be connected\");try{await u.connect({accessToken:n,entropyId:T,entropyIdVerifier:b}),E&&await u.verifyMfa({accessToken:n});let t=(Date.now()-g)/1e3;v===cr.EMBEDDED_WALLET_KEY_EXPORT_SCREEN&&t<1?e=setTimeout((()=>{h(v,!1)}),1e3*(1-t)):h(v,!1)}catch(e){if(Fc(e)&&\"privy\"===t.recoveryMethod){let e=await l();if(!e)return A(\"User must be authenticated and have a Privy wallet before it can be recovered\");try{d({eventName:\"embedded_wallet_pinless_recovery_started\",payload:{walletAddress:t.address}});let n=await(u?.recover({accessToken:e,entropyId:T,entropyIdVerifier:b}));n?.entropyId||A(Error(\"Unable to recover wallet\")),v?h(v):c({shouldCallAuthOnSuccess:!1}),d({eventName:\"embedded_wallet_recovery_completed\",payload:{walletAddress:t.address}}),h(v)}catch(e){A(\"An error has occurred, please try again.\")}}else Fc(e)&&\"privy\"!==t.recoveryMethod?(m({...p,recoverWallet:{entropyId:T,entropyIdVerifier:b,onCompleteNavigateTo:v,onFailure:C},recoveryOAuthStatus:{provider:t.recoveryMethod,action:\"recover\",isInAccountCreateFlow:!1}}),h(qc(t.recoveryMethod))):A(e)}})(),()=>clearTimeout(e)):void 0:A(\"User must be authenticated and have a Privy wallet before it can be connected\")}),[r,a,u]);let _=()=>{A(\"User exited before wallet could be connected\"),c({shouldCallAuthOnSuccess:!1})};return y.current=_,/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{onClose:_}),f?/*#__PURE__*/e(n,{children:[/*#__PURE__*/e(xt,{children:[/*#__PURE__*/t(ii,{fill:\"var(--privy-color-error)\",width:\"64px\",height:\"64px\"}),/*#__PURE__*/t(ql,{title:\"Something went wrong\",description:\"We’re on it. Please try again later.\"})]}),/*#__PURE__*/t(st,{onClick:()=>c({shouldCallAuthOnSuccess:!1}),children:\"Close\"})]}):/*#__PURE__*/t(Rc,{}),/*#__PURE__*/t(Zc,{})]})},[cr.EMBEDDED_WALLET_PASSWORD_RECOVERY_SCREEN]:()=>{let[r,a]=s(!0),{authenticated:i,getAccessToken:l,user:c}=ur(),{walletProxy:d,closePrivyModal:u,createAnalyticsEvent:h}=x(),{navigate:p,data:m,onUserCloseViaDialogOrKeybindRef:y}=lr(),[g,f]=s(void 0),[w,v]=s(\"\"),[C,E]=s(!1),{entropyId:T,entropyIdVerifier:b,onCompleteNavigateTo:A,onSuccess:_,onFailure:k}=m.recoverWallet,I=(e=\"User exited before their wallet could be recovered\")=>{u({shouldCallAuthOnSuccess:!1}),k(\"string\"==typeof e?new R(e):e)};y.current=I,o((()=>{if(!i)return I(\"User must be authenticated and have a Privy wallet before it can be recovered\")}),[i]);/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{onClose:I}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(fy,{children:[/*#__PURE__*/e(gy,{children:[/*#__PURE__*/t(ro,{height:48,width:48,stroke:\"var(--privy-color-accent)\"}),/*#__PURE__*/t(\"h3\",{style:{color:\"var(--privy-color-foreground)\"},children:\"Enter your password\"}),/*#__PURE__*/t(\"p\",{style:{color:\"var(--privy-color-foreground-2)\"},children:\"Please provision your account on this new device. To continue, enter your recovery password.\"})]}),/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/e(pd,{children:[/*#__PURE__*/t(ud,{type:r?\"password\":\"text\",onChange:e=>(e=>{e&&f(e)})(e.target.value),disabled:C,style:{paddingRight:\"2.3rem\"}}),/*#__PURE__*/t(wd,{style:{right:\"0.75rem\"},children:r?/*#__PURE__*/t(Cd,{onClick:()=>a(!1)}):/*#__PURE__*/t(Ed,{onClick:()=>a(!0)})})]}),!!w&&/*#__PURE__*/t(wy,{children:w})]}),/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/e(vn,{children:[/*#__PURE__*/t(\"h4\",{children:\"Why is this necessary?\"}),/*#__PURE__*/t(\"p\",{children:\"You previously set a password for this wallet. This helps ensure only you can access it\"})]}),/*#__PURE__*/t(vy,{loading:C||!d,disabled:!g,onClick:async()=>{E(!0);let e=await l(),t=mr(c,T);if(!e||!t||null===g)return I(\"User must be authenticated and have a Privy wallet before it can be recovered\");try{h({eventName:\"embedded_wallet_recovery_started\",payload:{walletAddress:t.address}}),await(d?.recover({accessToken:e,entropyId:T,entropyIdVerifier:b,recoveryPassword:g})),v(\"\"),A?p(A):u({shouldCallAuthOnSuccess:!1}),_?.(t),h({eventName:\"embedded_wallet_recovery_completed\",payload:{walletAddress:t.address}})}catch(e){!function(e){return Uc(e)&&(\"invalid_recovery_pin\"===e.type||\"invalid_request_arguments\"===e.type)}(e)?v(\"An error has occurred, please try again.\"):v(\"Invalid recovery password, please try again.\")}finally{E(!1)}},warn:!1,hideAnimations:!T&&C,children:\"Recover your account\"})]})]}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]})},[cr.EMBEDDED_WALLET_RECOVERY_SELECTION_SCREEN]:()=>{let[r,a]=s(!1),{navigate:i,lastScreen:o,navigateBack:l,setModalData:c,data:d,onUserCloseViaDialogOrKeybindRef:u}=lr(),{user:h}=ur(),{embeddedWallets:p}=dr(),{closePrivyModal:m}=x(),y=wr(h),g=null===y,{isInAccountCreateFlow:f,isResettingPassword:w}=d.recoverySelection,v=y&&\"privy\"!==y.recoveryMethod,C=v?/*#__PURE__*/e(\"span\",{children:[\"Your account is currently secured using\",\" \",/*#__PURE__*/t(\"strong\",{children:ky[y?.recoveryMethod||\"user-passcode\"]}),\".\"]}):\"Select a method for logging in on new devices and recovering your account.\";function E(e){c({recoveryOAuthStatus:{provider:e,action:g?\"create-wallet\":\"set-recovery\",isInAccountCreateFlow:f}}),i(cr.EMBEDDED_WALLET_RECOVERY_OAUTH_SCREEN)}function T(){d?.setWalletPassword?.onFailure(Error(\"User exited set recovery flow\")),m({shouldCallAuthOnSuccess:d?.setWalletPassword?.callAuthOnSuccessOnClose??!1})}return u.current=T,/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{onClose:T,backFn:r?()=>a(!1):o?l:void 0,infoFn:o||r?void 0:()=>a(!0)},\"header\"),r?/*#__PURE__*/t(Iy,{onClose:()=>a(!1)}):/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ql,{title:v?\"Update backup method\":\"Secure your account\",icon:/*#__PURE__*/t(ho,{width:48}),description:C}),/*#__PURE__*/t(Ty,{children:p.userOwnedRecoveryOptions.filter((e=>![\"icloud\",\"google-drive\"].includes(y?.recoveryMethod||\"\")||e!==y?.recoveryMethod)).sort().map((n=>{switch(n){case\"google-drive\":/*#__PURE__*/return e(el,{onClick:()=>E(\"google-drive\"),children:[/*#__PURE__*/t(_y,{children:/*#__PURE__*/t(Ey,{style:{width:18}})}),\"Back up to Google Drive\"]},n);case\"icloud\":/*#__PURE__*/return e(el,{onClick:()=>E(\"icloud\"),children:[/*#__PURE__*/t(_y,{children:/*#__PURE__*/t(Cy,{style:{width:24}})}),\"Back up to Apple iCloud\"]},n);case\"user-passcode\":/*#__PURE__*/return e(el,{onClick:()=>{i(jc({isCreatingWallet:g,skipSplashScreen:!0}))},children:[/*#__PURE__*/t(_y,{children:/*#__PURE__*/t(po,{style:{width:18}})}),w?\"Reset your\":\"Set a\",\" password\"]},n);default:return null}}))})]}),/*#__PURE__*/t(ct,{})]})},[cr.EMBEDDED_WALLET_SET_AUTOMATIC_RECOVERY_SCREEN]:()=>{let{user:r,getAccessToken:a}=ur(),{walletProxy:i,refreshSessionAndUser:o,closePrivyModal:l}=x(),c=lr(),{entropyId:d,entropyIdVerifier:u}=c.data?.recoverWallet,[h,p]=s(!1),[m,y]=s(null),[g,f]=s(null);function w(){if(!h){if(g)return c.data?.setWalletPassword?.onFailure(g),void l();if(!m)return c.data?.setWalletPassword?.onFailure(Error(\"User exited set recovery flow\")),void l()}}c.onUserCloseViaDialogOrKeybindRef.current=w;let v=!(!h&&!m);/*#__PURE__*/return e(n,g?{children:[/*#__PURE__*/t(ot,{onClose:w},\"header\"),/*#__PURE__*/t(Ny,{$color:\"var(--privy-color-error)\",style:{alignSelf:\"center\"},children:/*#__PURE__*/t(Ya,{height:38,width:38,stroke:\"var(--privy-color-error)\"})}),/*#__PURE__*/t(St,{style:{marginTop:\"0.5rem\"},children:\"Something went wrong\"}),/*#__PURE__*/t(Ks,{style:{minHeight:\"2rem\"}}),/*#__PURE__*/t(Jt,{onClick:()=>f(null),children:\"Try again\"}),/*#__PURE__*/t(ct,{})]}:{children:[/*#__PURE__*/t(ot,{onClose:w},\"header\"),/*#__PURE__*/t(ho,{style:{width:\"3rem\",height:\"3rem\",alignSelf:\"center\"}}),/*#__PURE__*/t(St,{style:{marginTop:\"0.5rem\"},children:\"Automatically secure your account\"}),/*#__PURE__*/t(Rt,{style:{marginTop:\"1rem\"},children:\"When you log into a new device, you’ll only need to authenticate to access your account. Never get logged out if you forget your password.\"}),/*#__PURE__*/t(Ks,{style:{minHeight:\"2rem\"}}),/*#__PURE__*/t(Jt,{loading:h,disabled:v,onClick:()=>async function(){p(!0);try{let e=await a(),t=mr(r,d);if(!e||!i||!t)return;if(!(await i.setRecovery({accessToken:e,entropyId:d,entropyIdVerifier:u,existingRecoveryMethod:t.recoveryMethod,recoveryMethod:\"privy\"})).entropyId)throw Error(\"Unable to set recovery on wallet\");let n=await o();if(!n)throw Error(\"Unable to set recovery on wallet\");let s=mr(n,t.address);if(!s)throw Error(\"Unabled to set recovery on wallet\");y(!!n),setTimeout((()=>{c.data?.setWalletPassword?.onSuccess(s),l()}),hr)}catch(e){f(e)}finally{p(!1)}}(),children:m?\"Success\":\"Confirm\"}),/*#__PURE__*/t(ct,{})]})},[cr.EMBEDDED_WALLET_RECOVERY_OAUTH_SCREEN]:()=>{let{logout:r}=ur(),{navigate:a,setModalData:i,data:l}=lr(),{recoveryOAuthFlow:d,closePrivyModal:u,createAnalyticsEvent:h}=x(),[p,m]=s(!1),{provider:y,action:g,isInAccountCreateFlow:f}=l?.recoveryOAuthStatus,[w,v]=s(void 0),[C,E]=s(\"create-wallet\"===g);if(\"user-passcode\"===y)throw Error(\"RecoveryOAuthScreen should never be called with a wallet that specifies recoveryMethod: `user-passcode`\");let T=Ay[y].name,b=Ay[y].component,A=l?.recoverWallet?.onCompleteNavigateTo,_=new Ge((async(e=\"create-wallet\")=>(E(!0),new Promise(((t,n)=>{setTimeout((async()=>{try{let n=window.open();await d(y,e,n),m(!0),t()}catch(t){v({message:`${\"recover\"===e?\"Recovery\":\"Back up\"} with ${T} unsuccessful`,detail:\"recover\"===g?`Please verify that you are selecting the ${T} account associated with your backup.`:\"\",retryable:!0}),n()}}),0)})))));o((()=>{\"recover\"!==g&&_.execute(f?\"create-wallet\":\"set-recovery\")}),[]),o((()=>{if(!p)return;let e=setTimeout((()=>{f?(i({createWallet:{onSuccess:()=>{},onFailure:e=>{h({eventName:\"embedded_wallet_creation_failure_logout\",payload:{error:e,screen:\"RecoveryOAuthScreen\"}}),r()},callAuthOnSuccessOnClose:!0}}),a(cr.EMBEDDED_WALLET_CREATED_SCREEN)):u({shouldCallAuthOnSuccess:!1})}),hr);return()=>clearTimeout(e)}),[p]);let k=c((async()=>{await _.execute(\"recover\"),A?a(A):m(!0)}),[]),I=\"google-drive\"===y?\"Google Drive\":\"Apple iCloud\",N=p&&`Successfully ${\"recover\"===g?\"recovered\":\"backed up\"} with ${I}.`||w&&w.message||`${\"recover\"===g?\"Recovering\":\"Backing up\"} with ${I}...`,S=w?w.detail:\"\";/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{}),C?/*#__PURE__*/t(n,{children:/*#__PURE__*/e(Ty,{children:[/*#__PURE__*/t(ql,{title:N,icon:/*#__PURE__*/t(b,{style:{width:\"38px\",height:\"38px\"}}),description:S}),w&&w?.retryable?/*#__PURE__*/t(st,{onClick:()=>{Vo(),v(void 0),\"create-wallet\"===g?_.execute(\"create-wallet\"):k()},disabled:!p&&!w?.retryable,children:\"Try again\"}):null]})}):/*#__PURE__*/e(Ty,{children:[/*#__PURE__*/t(ql,{title:\"Confirm it's really you\",icon:/*#__PURE__*/t(b,{style:{height:42,width:48}}),description:`To confirm your identity, please log in to ${I} where your account is backed up.`}),/*#__PURE__*/e(st,{onClick:k,children:[\"Confirm with \",I]})]}),/*#__PURE__*/t(ct,{})]})},[cr.EMBEDDED_WALLET_KEY_EXPORT_SCREEN]:()=>{let[r,a]=s(null),{authenticated:i,user:l,getAccessToken:c}=ur(),{closePrivyModal:d,createAnalyticsEvent:u,clientAnalyticsId:h}=x(),p=dr(),{data:m,onUserCloseViaDialogOrKeybindRef:y}=lr(),{onFailure:g,onSuccess:f,origin:w,appId:v,appClientId:C,walletToExport:E,primaryWallet:T}=m.keyExport,b=e=>{d({shouldCallAuthOnSuccess:!1}),g(\"string\"==typeof e?Error(e):e)},A=()=>{d({shouldCallAuthOnSuccess:!1}),f(),u({eventName:\"embedded_wallet_key_export_completed\",payload:{walletAddress:E.address}})};return o((()=>{if(!i||!E)return b(\"User must be authenticated before exporting their wallet\");c().then(a,b)}),[i,l]),y.current=A,/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{onClose:A}),/*#__PURE__*/e(ed,{children:[/*#__PURE__*/t(St,{children:\"Transfer wallet\"}),/*#__PURE__*/e(Rt,{children:[\"Either copy your private key or seed phrase to transfer your wallet.\",\" \",/*#__PURE__*/t(\"a\",{href:\"https://privy-io.notion.site/Transferring-your-account-9dab9e16c6034a7ab1ff7fa479b02828\",target:\"blank\",rel:\"noopener noreferrer\",children:\"Learn more\"})]}),/*#__PURE__*/t(Jc,{theme:p.appearance.palette.colorScheme,children:\"Never share your private key or seed phrase with anyone.\"}),/*#__PURE__*/t(Nt,{isLoading:!1,isPulsing:!1,title:\"Your wallet\",address:E.address,showIcon:!0}),/*#__PURE__*/t(\"div\",{style:{width:\"100%\"},children:r&&/*#__PURE__*/t(Xc,{origin:w,appId:v,appClientId:C,accessToken:r,clientAnalyticsId:h,walletToExport:E,primaryWallet:T,dimensions:{height:\"44px\"}})})]}),/*#__PURE__*/t(ct,{})]})},[cr.EMBEDDED_WALLET_SIGN_REQUEST_SCREEN]:()=>{let{authenticated:r}=ur(),{initializeWalletProxy:a,closePrivyModal:i}=x(),{navigate:l,data:c,onUserCloseViaDialogOrKeybindRef:d}=lr(),[u,h]=s(!0),[p,m]=s(\"\"),[y,g]=s(),[f,w]=s(null),[v,C]=s(!1),E=null!==f;o((()=>{r||l(cr.LANDING)}),[r]),o((()=>{a(fr).then((e=>{h(!1),e||(m(\"An error has occurred, please try again.\"),g(new ca(new da(p,Ui.E32603_DEFAULT_INTERNAL_ERROR.eipCode))))}))}),[]);let{method:T,data:b,confirmAndSign:A,onSuccess:_,onFailure:k,uiOptions:I}=c.signMessage,N={title:I?.title||\"Sign message\",description:I?.description||\"Signing this message will not cost you any fees.\",buttonText:I?.buttonText||\"Sign and continue\"},S=e=>{e?_(e):k(y||new ca(new da(\"The user rejected the request.\",Ui.E4001_USER_REJECTED_REQUEST.eipCode))),i({shouldCallAuthOnSuccess:!1}),setTimeout((()=>{w(null),m(\"\"),g(void 0)}),200)};return d.current=()=>{S(f)},/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{onClose:()=>S(f)}),/*#__PURE__*/t(_t,{}),I?.iconUrl&&\"string\"==typeof I.iconUrl?/*#__PURE__*/t(Zg,{children:/*#__PURE__*/t($g,{size:\"sm\",src:I.iconUrl,alt:\"app image\"})}):null,/*#__PURE__*/t(St,{children:N.title}),/*#__PURE__*/t(Rt,{children:N.description}),\"personal_sign\"===T&&/*#__PURE__*/t(Eg,{children:jg(b)}),\"eth_signTypedData_v4\"===T&&/*#__PURE__*/t(qg,{typedData:b}),\"solana_signMessage\"===T&&/*#__PURE__*/t(Eg,{children:b}),/*#__PURE__*/t(Jg,{}),/*#__PURE__*/t(Kg,{$fail:!0,children:p}),/*#__PURE__*/t(Jt,{disabled:v||E||u,loading:v,onClick:async()=>{C(!0),m(\"\");try{let e=await A();w(e),C(!1),setTimeout((()=>{S(e)}),hr)}catch(e){console.error(e),m(\"An error has occurred, please try again.\"),g(new ca(new da(p,Ui.E32603_DEFAULT_INTERNAL_ERROR.eipCode))),C(!1)}},children:v?\"Signing...\":E?/*#__PURE__*/e(Yg,{children:[/*#__PURE__*/t(lu,{style:{height:\"0.9rem\",width:\"0.9rem\"},strokeWidth:2}),\" \",/*#__PURE__*/t(\"span\",{children:\"Success\"})]}):N.buttonText}),I?.isCancellable&&/*#__PURE__*/t(mn,{style:{marginTop:\"1rem\"},onClick:()=>S(null),isSubmitting:!1,children:\"Not now\"}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]})},[cr.EMBEDDED_WALLET_SEND_TRANSACTION_SCREEN]:()=>{let{data:e,onUserCloseViaDialogOrKeybindRef:n,setModalData:r,navigate:a}=lr(),{rpcConfig:l,chains:c,closePrivyModal:d,walletProxy:u,client:h,showFiatPrices:p}=x(),{getAccessToken:m,user:y}=ur(),g=dr(),[f,w]=s(0),v=(e=>e?.sendTransaction?\"transactionRequest\"in e.sendTransaction?0:e.sendTransaction.transactionRequests.length-1:0)(e),[C,E]=s(Vg(e,f)),[T,b]=s(null),[A,_]=s(),[k,I]=s(!1),[N,S]=s(null),[R,O]=s(null),[W,M]=s(null),[P,L]=s(void 0),[D,U]=s(void 0),[F,B]=s(!1),[z,H]=s(!1),[V,$]=s([]),[j,G]=s([]),[q,K]=s(!1),[Y,Z]=s(void 0);if(!C||!e?.sendTransaction||!e?.sendTransaction.transactingWallet)/*#__PURE__*/return t(au,{error:Error(\"Invalid transaction request\"),onClick:()=>{e?.sendTransaction?.onFailure(Hg),d({shouldCallAuthOnSuccess:!1})}});let{entropyId:J,entropyIdVerifier:Q,transactingWallet:X}=e.sendTransaction,ee=i((()=>c.find((e=>Number(e.id)===Number(C.chainId)))),[C.chainId]),te=ee?.nativeCurrency.symbol??\"ETH\",ne=i((()=>Ug(C.data,!!g.embeddedWallets.extendedCalldataDecoding)),[C.data]),{action:re,isErc20Ish:ae,isNFTIsh:ie}=ne,{toAddress:oe,tokenAddress:se}=i((()=>({toAddress:ne.isErc20Ish?ne.transferTo:C.to??void 0,tokenAddress:ne.isErc20Ish?C.to:void 0})),[ne]);o((()=>{C.to&&ee&&ae&&ln({address:C.to,chain:ee,rpcConfig:g.rpcConfig,privyAppId:g.id}).then(b).catch(console.error)}),[C.to,ee]);let{tokenPrice:le,isTokenPriceLoading:ce}=Iu(C.chainId),{balance:de}=dn({rpcConfig:g.rpcConfig,appId:g.id,address:X.address,chain:ee}),ue=i((()=>Fa(Number(C.chainId),c,l,{appId:g.id})),[C.chainId,l]),he=zg(C,X,ue);o((()=>{E(Vg(e,f))}),[f]),o((()=>{e.sendTransaction?.getIsSponsored?e.sendTransaction.getIsSponsored().then(_).catch(console.error):_(!1)}),[e.sendTransaction.getIsSponsored]);let pe=()=>{if(!k)return N?e?.sendTransaction?.onSuccess({hash:N}):W||he?.errors[0]?e?.sendTransaction?.onFailure(W??he?.errors[0]??Hg):e?.sendTransaction?.onFailure(new ca(new da(\"The user rejected the request\",Ui.E4001_USER_REJECTED_REQUEST.eipCode))),d({shouldCallAuthOnSuccess:!1})};n.current=pe;let me=!!(e.funding&&e.funding.supportedOptions.length>0),ye=Yt(BigInt(he?.totalGasEstimate??0n),te),ge=p&&le?tn(BigInt(he?.totalGasEstimate??0n),le):void 0,fe=Yt(de??0n,te,void 0,!0),we=p&&le?tn(de??0n,le):void 0,ve=e.sendTransaction?.uiOptions?.transactionInfo?.title;ve||(ve=\"approve\"===re?ae?\"Confirm address\":\"Confirm action\":`Approve ${re}`);let Ce=e.sendTransaction?.uiOptions?.description||(ae&&\"approve\"===re?`${g.name} would like your permission for ${Ct(ne.spender)} to spend tokens on your behalf.`:`${g.name} wants your permission to approve the following transaction.`),Ee=e.sendTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?/*#__PURE__*/t(\"img\",{src:e.sendTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:e.sendTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,Te=!(!he||he.errors[0]||he.hasFunds||!1!==A),be=Te&&me,Ae=be?\"Add funds\":e.sendTransaction?.uiOptions?.buttonText||(f<v?\"Continue\":\"Approve\");if(o((()=>{let e=(e,t,n)=>{if(t.isErc20Ish&&t.amount&&n)Z(nn({amount:t.amount,decimals:n.decimals})),$([{value:Y,symbol:n?.symbol}]);else if(e.value){let t=BigInt(e.value),n=le&&tn(t,le);$(p&&n?[{value:n}]:[{value:Tn(t),symbol:te}])}else $(p?[{value:\"$0\"}]:[{value:\"0\",symbol:te}])},t=he?.tx??C;g.embeddedWallets.transactionScanning.enabled&&t?(K(!0),(async e=>{if(h)return await h.scanTransaction({metadata:{domain:g.embeddedWallets.transactionScanning.domain},chain_id:e.chainId.toString(),request:{method:\"eth_sendTransaction\",params:[{from:e.from,to:e.to,value:e.value?.toString(),gas:e.gas?.toString(),gasPrice:e.gasPrice?.toString(),nonce:e.nonce?.toString(),data:e.data}]}})})(t).then((e=>{if(!e)throw Error(\"Transaction scan failed\");if(\"Success\"===e.validation.status&&(\"Benign\"===e.validation.result_type?U(\"safe\"):\"Warning\"===e.validation.result_type?U(\"warn\"):\"Malicious\"===e.validation.result_type&&(U(\"error\"),H(!0))),\"Success\"!==e.simulation.status)throw Error(\"Simulation failed\");{L(e.simulation.params);let{assetsIn:t,assetsOut:n}=function(e,t){let n=[],r=[];if(e)for(let t of e)if(t.in[0]){let e;e=\"ERC721\"===t.asset.type||\"approve_for_all\"===t.in[0].value?{nftName:t.asset.name}:{iconUrl:t.asset.logo_url,value:t.in[0].value,symbol:t.asset.symbol,usdValue:t.in[0].usd_price},n.push(e)}else if(t.out[0]?.value){let e;e=\"ERC721\"===t.asset.type||\"approve_for_all\"===t.out[0].value?{nftName:t.asset.name}:{iconUrl:t.asset.logo_url,value:t.out[0].value,symbol:t.asset.symbol,usdValue:t.out[0].usd_price},r.push(e)}for(let e of t)for(let t of Object.keys(e.spenders)){let n;n=\"ERC721\"===e.asset.type||\"approve_for_all\"===e.spenders[t]?.value?{nftName:e.asset.name}:{iconUrl:e.asset.logo_url,value:e.spenders[t]?.value,symbol:e.asset.symbol,usdValue:e.spenders[t]?.usd_price},r.push(n)}return{assetsIn:n,assetsOut:r}}(e.simulation.assets_diffs,e.simulation.exposures);if(0===n.length&&0===t.length)throw Error(\"No tokens found\");$(n),G(t)}K(!1)})).catch((()=>{K(!1),e(t,ne,T)}))):e(t,ne,T)}),[C,he?.tx,ne,T]),R/*#__PURE__*/)return t(Ig,{txn:he?.tx??C,onClose:pe,receipt:R,transactionInfo:e.sendTransaction?.uiOptions.transactionInfo,tokenPrice:le,tokenSymbol:te,receiptHeader:e.sendTransaction?.uiOptions.successHeader,receiptDescription:e.sendTransaction?.uiOptions.successDescription});if(W)/*#__PURE__*/return t(Ky,{transactionError:W,transactionHash:N??void 0,network:\"ethereum\",chainId:he?.tx.chainId??C.chainId,onClose:pe,onRetry:({resetNonce:e})=>{M(null);let t={...he?.tx??C};e&&(t.nonce=void 0),E(t)}});let _e=0!==v&&\"number\"==typeof f&&0!==f?()=>{w(f-1)}:void 0;return F&&P?/*#__PURE__*/t(_g,{details:P,onBack:()=>B(!1)}):/*#__PURE__*/t(Hy,{transactionIndex:f,onBack:_e,maxIndex:v,disabled:Te&&!me||z,isSubmitting:k,submitError:W,isPreparing:!he,isTokenPriceLoading:ce,isTokenContractInfoLoading:!ie&&!T,prepareError:he?.errors[0],symbol:T?.symbol,chain:ee,img:Ee,title:ve,subtitle:Ce,txValue:C.value,fee:ge??ye,isSponsored:A,from:X?.address??\"\",to:oe,tokenAddress:se??void 0,network:g.chains.find((e=>e.id===C.chainId))?.name??\"\",transactionDetails:{...ne,formattedAmount:Y},cta:Ae,missingFunds:Te,action:re,balance:we??fe,onClose:pe,onClick:be?async()=>{if(!X)return;if(!me)throw Error(\"Funding wallet is not enabled\");let t=cr.FUNDING_METHOD_SELECTION_SCREEN;r({...e,funding:{...e.funding,methodScreen:t,chainType:\"ethereum\",amount:Da(BigInt(he?.tx.value??0)+BigInt(he?.totalGasEstimate?.toString()??0)),chain:ee}}),a(t)}:async()=>{if(f<v)w(f+1);else{I(!0);try{let t=await m();if(k||!t||!X||!u||!y)return;let n=e?.sendTransaction?.onConfirm?await e.sendTransaction.onConfirm():await wg({accessToken:t,transactingWallet:X,entropyId:J,entropyIdVerifier:Q,walletProxy:u,transactionRequest:he?.tx??C,publicClient:ue,requesterAppId:e.sendTransaction?.requesterAppId});if(S(n),e.sendTransaction?.signOnly)return await new Promise((e=>setTimeout(e,hr))),e?.sendTransaction?.onSuccess({hash:n}),d({shouldCallAuthOnSuccess:!1});let r=await ue.waitForTransactionReceipt({hash:n});if(\"reverted\"===r.status)throw Error(\"Transaction failed\");O(r)}catch(e){console.warn({transaction:he?.tx??C,error:e}),M(e)}finally{I(!1)}}},validation:D,hasScanDetails:!!P,setIsScanDetailsOpen:B,preventMaliciousTransaction:z,setPreventMaliciousTransaction:H,tokensSent:V,tokensReceived:j,isScanning:q,isCancellable:e.sendTransaction?.uiOptions?.isCancellable??!1})},[cr.EMBEDDED_WALLET_SEND_SOLANA_TRANSACTION_SCREEN]:()=>{let{data:e,onUserCloseViaDialogOrKeybindRef:n,setModalData:r,navigate:a}=lr(),{client:l,closePrivyModal:c,walletProxy:d,showFiatPrices:u}=x(),h=dr(),{user:p,getAccessToken:m}=ur(),[y,g]=s(e?.sendSolanaTransaction?.transactionRequest),[f,w]=s(),[v,C]=s(),[E,T]=s(0),[b,A]=s({value:0n,isLoading:!1}),[_,k]=s(!1),[I,N]=s(),[S,R]=s(),O=e?.sendSolanaTransaction?.connection,W=e?.sendSolanaTransaction?.transactingWallet,M=e?.sendSolanaTransaction?.signOnly??!1,P=f?.instructions.length??1,L=W?.imported?Lr(p):wr(p),D=Er(O?.rpcEndpoint||\"\"),{solPrice:U,isSolPriceLoading:F}=ku({enabled:u}),B=i((()=>{let e,t;if(!f)return;let n=f.spender;0===E&&W?.address===n&&(e=Ru(f.fee));let r=Ru(b.value,3,!0),a=f.instructions[E];if(!a)return{fee:e,spender:n,balance:r};if(\"unknown\"===a.type)return{fee:e,spender:n,program:a.program,balance:r};if(\"ata-creation\"===a.type)return{fee:e,spender:n,balance:r,tokenAccountOwner:a.owner,tokenAccount:a.ata,tokenAddress:a.mint};let i=a.fromAccount,o=\"sol-transfer\"===a.type?a.toAccount:a.toAccount||a.toAta,s=\"spl-transfer\"===a.type?a.token.address:void 0;return null!=e&&\"SOL\"===a.token.symbol&&(t=Ru(a.value+f.fee)),{fee:e,spender:n,from:i,to:o,tokenAddress:s,amount:`${Ra(a.value,a.token.decimals)} ${a.token.symbol}`.trim(),total:t,balance:r}}),[f,E,W?.address,b]),z=i((()=>{let e,t;if(!f||!u||!U||F)return;function n(...e){return Ou(e.reduce(((e,t)=>e+t),0n),U??0)}0===E&&W?.address===f.spender&&(e=n(f.fee));let r=n(b.value),a=f.instructions[E];return a&&\"unknown\"!==a.type&&\"ata-creation\"!==a.type?(null!=e&&\"SOL\"===a.token.symbol&&(t=n(a.value,f.fee)),{fee:e,amount:\"SOL\"===a.token.symbol?n(a.value):`${Ra(a.value,a.token.decimals)} ${a.token.symbol}`.trim(),total:t,balance:r}):{fee:e,balance:r}}),[f,u,U,F,W?.address,E,b]),H=i((()=>{if(M||!f||b.isLoading||E>0)return!1;let e=f.instructions[E];if(!e)return!1;let t=0n;return W?.address===f.spender&&(t+=f.fee),\"value\"in e&&W?.address===e.fromAccount&&\"SOL\"===e.token.symbol&&(t+=e.value),b.value<t}),[f,b,E,M]);if(o((()=>{!async function(){if(y&&O&&l)try{C(void 0);let e=await Lu({tx:y,connection:O,client:l});w(e),T(0)}catch(e){console.error(\"Failed to prepare transaction\",e),C(e)}}()}),[y,O,l]),o((()=>{(async function(){if(!W||!O)return;A({value:b.value,isLoading:!0});let e=new Di({name:\"mainnet-beta\",rpcUrl:O.rpcEndpoint});A({value:await e.getBalance(W.address).catch((()=>0n))??0n,isLoading:!1})})().catch(console.error)}),[f,O]),!(y&&e?.sendSolanaTransaction&&W&&O)){let n=Error(\"Invalid transaction request\");/*#__PURE__*/return t(au,{error:n,onClick:()=>{e?.sendSolanaTransaction?.onFailure(n),c({shouldCallAuthOnSuccess:!1})}})}let V=()=>{if(!_)return I?e?.sendSolanaTransaction?.onSuccess(I):(e?.sendSolanaTransaction?.onFailure(S??v??Error(\"User exited the modal before submitting the transaction\")),T(0)),c({shouldCallAuthOnSuccess:!1})};n.current=V;let $=e.sendSolanaTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?/*#__PURE__*/t(\"img\",{src:e.sendSolanaTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:e.sendSolanaTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,j=!!(e.funding&&e.funding.supportedOptions.length>0),G=H&&j;return I?/*#__PURE__*/t(gg,{instructions:f?.instructions.reduce(((e,t)=>(\"ata-creation\"===t.type&&e.push({tokenAccountOwner:t.owner,tokenAccount:t.ata}),\"spl-transfer\"===t.type&&e.push({from:t.fromAccount,to:t.toAccount||t.toAta,amount:t.value,token:t.token}),\"sol-transfer\"===t.type&&e.push({from:t.fromAccount,to:t.toAccount,amount:t.value,token:t.token}),e)),[])??[],fees:0===E?I.fees:0n,onClose:V,transactionInfo:e.sendSolanaTransaction?.uiOptions.transactionInfo,solPrice:U,receiptHeader:e.sendSolanaTransaction?.uiOptions.successHeader,receiptDescription:e.sendSolanaTransaction?.uiOptions.successDescription,rpcEndpoint:O.rpcEndpoint,signOnly:M}):S?/*#__PURE__*/t(Ky,{transactionError:S,connection:O,onClose:V,network:\"solana\",onRetry:async()=>{R(void 0);let{blockhash:e}=await O.getLatestBlockhash();Mu(y)?y.message.recentBlockhash=e:y.recentBlockhash=e,g(y)}}):/*#__PURE__*/t(Vy,{img:$,title:e.sendSolanaTransaction?.uiOptions?.transactionInfo?.title||\"Confirm transaction\",subtitle:e.sendSolanaTransaction?.uiOptions?.description||`${h.name} wants your permission to approve the following transaction.`,cta:G?\"Add funds\":e.sendSolanaTransaction?.uiOptions?.buttonText||\"Approve\",transactionIndex:E,maxIndex:P-1,network:\"mainnet-beta\"==D?\"Solana\":D,blockExplorerUrl:\"https://explorer.solana.com\",total:u?z?.total:B?.total,amount:u?z?.amount:B?.amount,fee:u?z?.fee:B?.fee,balance:u?z?.balance:B?.balance,from:B?.from,to:B?.to,tokenAccount:B?.tokenAccount,tokenAccountOwner:B?.tokenAccountOwner,tokenAddress:B?.tokenAddress,transactingWalletAddress:W.address,programAddress:B?.program,disabled:H&&!j,isSubmitting:_,isPreparing:!f||b.isLoading,isTokenPriceLoading:u&&F,isMissingFunds:H,submitError:S??void 0,parseError:v,onClick:G?async()=>{if(!W)return;if(!j)throw Error(\"Funding wallet is not enabled\");let t=cr.FUNDING_METHOD_SELECTION_SCREEN;r({...e,funding:{...e.funding,methodScreen:t}}),a(t)}:async()=>{if(E<(f?.instructions.length??1)-1)T(E+1);else try{k(!0);let t=await m();if(_||!t||!W||!d||!p||!L)return;let{rootWallet:n}=Dr(p,W.address);if(!n)throw Error(\"No root wallet for transacting wallet found\");let{entropyId:r,entropyIdVerifier:a}=jn(n);if(M)await xy({tx:y,accessToken:t,walletProxy:d,entropyId:r,entropyIdVerifier:a,transactingWalletAddress:W.address,transactingWalletIndex:W.walletIndex??0}),N(Pu(\"\",y,null));else{let{signature:n,receipt:i}=await Sy({tx:y,accessToken:t,connection:O,walletProxy:d,entropyId:r,entropyIdVerifier:a,transactingWalletAddress:W.address,transactingWalletIndex:W.walletIndex??0,transactionOptions:e.sendSolanaTransaction?.transactionOptions});N(Pu(n,y,i))}}catch(e){console.warn({transaction:y,error:e}),R(e)}finally{k(!1)}},onClose:V,onBack:E>0&&P>1?()=>T(E-1):void 0})},[cr.EMBEDDED_WALLET_DELEGATED_ACTIONS_CONSENT_SCREEN]:()=>{let{app:r,data:a}=lr(),{closePrivyModal:i}=x(),[l,c]=s(!1),[d,u]=s(),{address:h,onDelegate:p,onSuccess:m,onError:y}=a.delegatedActions.consent,g=async()=>{l?m():y(d??new T(\"User declined delegating actions.\")),i({shouldCallAuthOnSuccess:!1})};return o((()=>{if(!l&&!d)return;let e=setTimeout(g,pr);return()=>clearTimeout(e)}),[l,d]),/*#__PURE__*/e(n,l||d?{children:[/*#__PURE__*/t(ot,{onClose:g}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(ht,{children:[d?/*#__PURE__*/t(Ja,{stroke:\"var(--privy-color-error)\",width:\"64px\",height:\"64px\"}):/*#__PURE__*/t(oi,{stroke:\"var(--privy-color-success)\",width:\"64px\",height:\"64px\"}),/*#__PURE__*/t(It,{height:20}),/*#__PURE__*/t(ql,{title:d?\"Something went wrong\":\"Success!\",description:d?\"Please try again.\":`You’ve successfully granted delegated action permissions to ${r.name}.`})]}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]}:{children:[/*#__PURE__*/t(ot,{closeable:!0,onClose:g}),/*#__PURE__*/t(si,{width:56,height:56,style:{margin:\"auto\"}}),/*#__PURE__*/t(bl,{style:{marginTop:24,color:\"var(--privy-color-foreground)\"},children:\"Enable offline access\"}),/*#__PURE__*/e(Al,{style:{marginBottom:24,textWrap:\"pretty\"},children:[\"By confirming, \",r.name,\" will be able to use your wallet for you even when you're not around. You can revoke this later.\"]}),/*#__PURE__*/t(xc,{showIcon:!0,address:h,title:\"Wallet\",isLoading:!1}),/*#__PURE__*/e(Nc,{style:{marginTop:24},children:[/*#__PURE__*/t(dt,{onClick:g,children:\"Not now\"}),/*#__PURE__*/t(st,{onClick:async()=>{try{await p(),c(!0)}catch(e){u(e)}},children:\"Accept\"})]}),/*#__PURE__*/t(ct,{})]})},[cr.EMBEDDED_WALLET_DELEGATED_ACTIONS_REVOKE_SCREEN]:()=>{let{app:r,data:a}=lr(),{closePrivyModal:i}=x(),[l,c]=s(!1),[d,u]=s(),{onRevoke:h,onSuccess:p,onError:m}=a.delegatedActions.revoke,y=async()=>{l?p():m(d??new T(\"User declined revoking access to their delegated wallet.\")),i({shouldCallAuthOnSuccess:!1})};return o((()=>{if(!l&&!d)return;let e=setTimeout(y,pr);return()=>clearTimeout(e)}),[l,d]),/*#__PURE__*/e(n,l||d?{children:[/*#__PURE__*/t(ot,{onClose:y}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(ht,{children:[d?/*#__PURE__*/t(Ja,{stroke:\"var(--privy-color-error)\",width:\"64px\",height:\"64px\"}):/*#__PURE__*/t(oi,{stroke:\"var(--privy-color-success)\",width:\"64px\",height:\"64px\"}),/*#__PURE__*/t(It,{height:20}),/*#__PURE__*/t(ql,{title:d?\"Something went wrong\":\"Success!\",description:d?\"Please try again.\":\"You've successfully revoked permissions.\"})]}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]}:{children:[/*#__PURE__*/t(ot,{closeable:!0,onClose:y}),/*#__PURE__*/t(li,{width:56,height:56,style:{margin:\"auto\"}}),/*#__PURE__*/t(bl,{style:{marginTop:24},children:\"Revoke offline access to wallet\"}),/*#__PURE__*/e(Al,{children:[\"By confirming, \",r.name,\" will no longer be able to use this wallet on your behalf when you are not online.\"]}),/*#__PURE__*/e(Sc,{style:{marginTop:24},children:[/*#__PURE__*/t(dt,{onClick:y,children:\"Deny\"}),/*#__PURE__*/t(st,{onClick:async()=>{try{await h(),c(!0)}catch(e){u(e)}},children:\"Confirm\"})]}),/*#__PURE__*/t(ct,{})]})},[cr.FUNDING_METHOD_SELECTION_SCREEN]:()=>{let{wallets:r}=Tr(),{wallets:a}=oa(),{navigate:s,data:l,setModalData:c}=lr(),{client:d}=x(),u=dr(),h=l?.funding,p=jh(Qh),m=jh(Xh),y=\"solana\"===h.chainType,g=y?void 0:h,f=i((()=>((e,t,n,r,a,i)=>{let o,s,l=\"solana\"===n.chainType,c=l?void 0:n,d=n.isUSDC?\"USDC\":c?.erc20Address?void 0:\"native-currency\",u=!!l||d&&Ai(Number(n.chain.id),d),h=!!l||d&&_i(Number(n.chain.id),d),p=[];for(let o of(n.preferredCardProvider&&n.supportedOptions.sort((e=>e.provider===n.preferredCardProvider?-1:1)),n.supportedOptions))\"card\"===o.method&&\"coinbase\"===o.provider&&h&&p.push((()=>Yh(t,n,r,a,i,\"buy\"))),\"card\"===o.method&&\"moonpay\"===o.provider&&u&&d&&p.push((()=>Zh(t,n,e,d,r,a,i,\"credit_debit_card\")));for(let e of n.supportedOptions)\"exchange\"===e.method&&\"coinbase\"===e.provider&&h&&(o=()=>Yh(t,n,r,a,i,\"buy\"));for(let e of i?.funding?.supportedOptions??[])\"wallets\"===e.method&&(s=()=>a(cr.FUNDING_TRANSFER_FROM_WALLET_SCREEN));return{onFundWithCard:p,onFundWithExchange:o,onFundWithWallet:s}})(u,d,h,c,s,l)),[u,d,h,l,c,s]);o((()=>{if(h?.defaultFundingMethod&&h.usingDefaultFundingMethod)switch(c({funding:{...h,usingDefaultFundingMethod:!1}}),h?.defaultFundingMethod){case\"card\":f.onFundWithCard[0]&&f.onFundWithCard[0]();break;case\"exchange\":f.onFundWithExchange&&f.onFundWithExchange();break;case\"wallet\":f.onFundWithWallet&&f.onFundWithWallet();break;case\"manual\":s(cr.FUNDING_MANUAL_TRANSFER_SCREEN)}}),[]),o((()=>{g?.erc20Address&&!g.erc20ContractInfo&&ln({address:g.erc20Address,chain:g.chain,rpcConfig:u.rpcConfig,privyAppId:u.id}).then((e=>{c({...l,funding:{...g,erc20ContractInfo:e?{symbol:e.symbol,decimals:e.decimals}:void 0}})})).catch(console.error)}),[g?.erc20Address,g?.chain]);let w=y?a.find((({address:e})=>e===h.address)):r.find((({address:e})=>C(e)===C(h.address))),v=ft(w?.walletClientType||\"unknown\"),E=v?.name||\"wallet\",T=w&&\"privy\"!==w.walletClientType?E:u.name,b=!(!g?.erc20Address||g?.erc20ContractInfo);/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(Cu,{}),/*#__PURE__*/e(\"h3\",{children:[\"Add funds to your\",\" \",T?.toLowerCase().endsWith(\"wallet\")?T:T+\" wallet\"]}),/*#__PURE__*/e(vh,{children:[h.errorMessage&&/*#__PURE__*/t(Fh,{theme:u.appearance.palette.colorScheme,children:h.errorMessage}),f.onFundWithCard?.[0]&&/*#__PURE__*/e(el,{disabled:b,onClick:f.onFundWithCard[0],children:[/*#__PURE__*/t(Ch,{children:/*#__PURE__*/t(Yi,{style:{width:24}})}),\"Pay with card\",p?/*#__PURE__*/t(Vh,{style:{marginLeft:\"auto\",maxWidth:\"100%\",width:\"auto\",height:\"0.875rem\"}}):m?/*#__PURE__*/t($h,{style:{marginLeft:\"auto\",maxWidth:\"100%\",width:\"auto\",height:\"0.875rem\"}}):null]}),f.onFundWithExchange&&/*#__PURE__*/e(el,{disabled:b,onClick:f.onFundWithExchange,children:[/*#__PURE__*/t(Ch,{children:/*#__PURE__*/t(Ki,{style:{width:24}})}),\"Transfer from an exchange\"]}),f.onFundWithWallet&&/*#__PURE__*/e(el,{disabled:b,onClick:f.onFundWithWallet,children:[/*#__PURE__*/t(Ch,{children:/*#__PURE__*/t(cn,{style:{width:24}})}),\"Transfer from wallet\"]}),/*#__PURE__*/e(el,{disabled:b,onClick:()=>s(cr.FUNDING_MANUAL_TRANSFER_SCREEN),children:[/*#__PURE__*/t(Ch,{children:/*#__PURE__*/t(Zi,{style:{width:24}})}),\"Receive funds\"]}),h?.showAlternateFundingMethod&&f.onFundWithCard?.[1]&&/*#__PURE__*/t(zh,{theme:u.appearance.palette.colorScheme,children:/*#__PURE__*/e(Ih,{children:[\"Having trouble or facing location restrictions?\",\" \",/*#__PURE__*/t(Nh,{onClick:f.onFundWithCard[1],children:\"Try a different provider.\"})]})})]}),/*#__PURE__*/t(ct,{})]})},[cr.MOONPAY_STATUS_SCREEN]:()=>{let{app:r,data:a,setModalData:i,navigateBack:o}=lr(),{closePrivyModal:s}=x(),{externalTransactionId:l}=a?.moonpayStatus,c=la(l||null,r.fundingMethodConfig.moonpay.useSandbox??!1);/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{title:\"Fund account\",backFn:()=>{let e={...a?.funding,showAlternateFundingMethod:!0};e.usingDefaultFundingMethod&&(e.usingDefaultFundingMethod=!1),i({funding:e}),o()}}),/*#__PURE__*/t(rp,{status:c,onClickCta:s}),/*#__PURE__*/t(ct,{})]})},[cr.COINBASE_ONRAMP_STATUS_SCREEN]:()=>{let{data:r,setModalData:a,navigate:i,navigateBack:c}=lr(),{closePrivyModal:d,createAnalyticsEvent:u,client:h}=x(),[p,m]=s(\"pending-in-flow\"),y=l(0),g={...r?.funding,showAlternateFundingMethod:!0};g.usingDefaultFundingMethod&&(g.usingDefaultFundingMethod=!1);let{partnerUserId:f,popup:w}=r?.coinbaseOnrampStatus??{};return o((()=>{if(\"pending-in-flow\"===p||\"pending-after-flow\"===p){let e=setInterval((async()=>{if(f)try{let{status:e}=await h.getCoinbaseOnRampStatus({partnerUserId:f});if(\"success\"===e)return void m(\"success\");if(\"failure\"===e)throw Error(\"There was an error completing Coinbase Onramp flow.\");if(y.current>=3)return a({funding:g}),void i(cr.FUNDING_METHOD_SELECTION_SCREEN);w?.closed&&(y.current=y.current+1,m(\"pending-after-flow\"))}catch(e){console.error(e),m(\"error\"),u({eventName:ia,payload:{status:\"failure\",provider:\"coinbase-onramp\",error:e.message}}),a({funding:{...g,errorMessage:\"Something went wrong adding funds. Please try again or use another method.\"}}),i(cr.FUNDING_METHOD_SELECTION_SCREEN)}}),1500);return()=>clearInterval(e)}}),[f,w,p]),/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{title:\"Fund account\",backFn:()=>{a({funding:g}),c()}},\"header\"),/*#__PURE__*/t(Ph,{status:p,onClickCta:d}),/*#__PURE__*/t(ct,{})]})},[cr.FUNDING_TRANSFER_FROM_WALLET_SCREEN]:()=>{let r,{connectors:a}=x(),{app:i,setModalData:l,data:c,navigate:d}=lr(),{wallets:u}=Tr(),{wallets:h}=oa(),[p,m]=s(\"default\"),y=\"solana\"===c?.funding?.chainType,g=!!c?.funding?.crossChainBridgingEnabled;r=\"ethereum\"===c?.funding?.chainType?c.funding.erc20Address&&!c.funding.isUSDC?\"ethereum-only\":g&&!c.funding.chain.testnet?\"ethereum-and-solana\":\"ethereum-only\":g?\"ethereum-and-solana\":\"solana-only\";let f=u.filter((e=>\"privy\"!==e.walletClientType)),w=f.map((e=>e.walletClientType)),v=h.filter((e=>\"privy\"!==e.walletClientType)),C=v.map((e=>e.walletClientType)),E=[],T={...c.funding};T.usingDefaultFundingMethod&&(T.usingDefaultFundingMethod=!1);let b=({address:e,walletChainType:t})=>{l({...c,funding:{...T,connectedWalletAddress:e,onContinueWithExternalWallet:()=>d(_({destChainType:y?\"solana\":\"ethereum\",sourceChainType:t}))}}),d(cr.FUNDING_EDIT_AMOUNT_SCREEN)};\"solana-only\"!==r&&E.push(...f.map(((e,n)=>/*#__PURE__*/t(lp,{onClick:()=>b({address:e.address,walletChainType:\"ethereum\"}),icon:e.meta.icon,name:e.meta.name,chainType:e.type},n)))),\"ethereum-only\"!==r&&E.push(...v.map(((e,n)=>/*#__PURE__*/t(lp,{onClick:()=>b({address:e.address,walletChainType:\"solana\"}),icon:e.meta.icon,name:e.meta.name,chainType:e.type},n)))),E.push(...Ac({walletList:i.appearance.walletList.filter((e=>!f.some((t=>t.walletClientType===e))&&!v.some((t=>t.walletClientType===e)))),walletChainType:r,connectors:a,connectOnly:!0,ignore:[...i.appearance.walletList,...w,...C],walletConnectEnabled:i.externalWallets.walletConnect.enabled}));let A=/*#__PURE__*/t(sp,{text:\"More wallets\",onClick:()=>m(\"overflow\")}),_=({sourceChainType:e,destChainType:t})=>\"ethereum\"===e&&\"solana\"===t?cr.FUNDING_AWAITING_EVM_TO_SOL_BRIDGING_SCREEN:\"ethereum\"===e&&\"ethereum\"===t?cr.FUNDING_AWAITING_TRANSFER_FROM_EXTERNAL_WALLET_SCREEN:\"solana\"===e&&\"ethereum\"===t?cr.FUNDING_AWAITING_SOL_TO_EVM_BRIDGING_SCREEN:cr.FUNDING_AWAITING_TRANSFER_FROM_EXTERNAL_SOLANA_WALLET_SCREEN;return o((()=>{l({...c,externalConnectWallet:{onCompleteNavigateTo:({walletChainType:e})=>(l({...c,funding:{...T,onContinueWithExternalWallet:()=>{d(_({destChainType:y?\"solana\":\"ethereum\",sourceChainType:e??\"ethereum\"}))}}}),cr.FUNDING_EDIT_AMOUNT_SCREEN)}})}),[]),/*#__PURE__*/e(n,\"overflow\"===p?{children:[/*#__PURE__*/t(ot,{backFn:()=>m(\"default\")},\"header\"),/*#__PURE__*/e(Zs,{children:[/*#__PURE__*/t(Rt,{style:{color:\"var(--privy-color-foreground-3)\",textAlign:\"left\"},children:\"More wallets\"}),E]}),/*#__PURE__*/t(ct,{})]}:{children:[/*#__PURE__*/t(Cu,{}),/*#__PURE__*/t(ql,{title:\"Transfer from wallet\",description:\"Connect a wallet to deposit funds or send funds manually to your wallet address.\"}),/*#__PURE__*/e(Zs,{children:[E.length>4?E.slice(0,3):E,E.length>4&&A]}),/*#__PURE__*/t(ct,{})]})},[cr.FUNDING_EDIT_AMOUNT_SCREEN]:()=>{let{data:r,setModalData:a}=lr(),i=r?.funding,o=\"solana\"===i.chainType,s=l(null),{tokenPrice:c}=Iu(o?\"solana\":i.chain.id),d=o?void 0:i,u=!(!d?.erc20Address||d?.erc20ContractInfo),h=o?\"SOL\":i.erc20Address?i.erc20ContractInfo?.symbol:i.chain.nativeCurrency.symbol||\"ETH\",p=parseFloat(i.amount),m=!isNaN(p)&&p>0,y=c?en(i.amount,c):void 0;/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(Cu,{}),/*#__PURE__*/t(St,{children:\"Confirm or edit amount\"}),/*#__PURE__*/e(sn,{style:{marginTop:\"32px\"},children:[/*#__PURE__*/t(Eh,{children:u?/*#__PURE__*/t(Eu,{size:\"50px\"}):/*#__PURE__*/e(n,{children:[/*#__PURE__*/e(Th,{onClick:()=>s.current?.focus(),children:[/*#__PURE__*/t(Ah,{ref:s,value:i.amount,onChange:e=>{let t=e.target.value;/^[0-9.]*$/.test(t)&&t.split(\".\").length-1<=1&&a({...r,funding:{...i,amount:t}})}}),/*#__PURE__*/t(_h,{children:h})]}),!d?.erc20Address&&/*#__PURE__*/t(kh,{children:y&&m?`${y} USD`:\"\"})]})}),/*#__PURE__*/t(Jt,{style:{marginTop:\"1rem\"},disabled:!m,onClick:i.onContinueWithExternalWallet,children:\"Continue\"})]}),/*#__PURE__*/t(ct,{})]})},[cr.FUNDING_AWAITING_TRANSFER_FROM_EXTERNAL_WALLET_SCREEN]:()=>{let{rpcConfig:r,appId:a,closePrivyModal:i,createAnalyticsEvent:l}=x(),{navigate:c,setModalData:d,app:u,data:h}=lr(),{wallets:p}=Tr(),[m,y]=s(!1),[g,f]=s(0n),[w,v]=s(!1),[C,E]=s(null),[b,_]=s(null),[k,I]=s([]),[N,S]=s(0),[R,O]=s(!1),[W,M]=s(!1),[P,L]=s(!1),[D,U]=s(!1),[F,B]=s(),[z,H]=s();if(!h?.funding||\"ethereum\"!==h.funding.chainType)throw Error(\"Invalid funding data\");let{erc20ContractInfo:V,chain:$,connectedWalletAddress:j}=h.funding,G=h.funding.address,q=h.funding.erc20Address,[K,Y]=s(h.funding.amount);o((()=>{q&&!V&&E(Error(\"Unable to fetch token details\"))}),[]);let Z=!!q&&!!V,J=Z?BigInt(parseFloat(K)*10**V.decimals):Oa(K),Q=j?p.find((({address:e})=>e===j)):p[0],X=ft(Q?.walletClientType||\"unknown\"),ee=X?.name||\"wallet\",[te,ne]=s(null);o((()=>{(async()=>{if(!Q)return;let e=await Q.getEthereumProvider();ne(Na({account:Q.address,transport:xa(e)}).extend(Sa))})().catch(console.error)}),[Q]);let[re,ae]=s(0n);o((()=>{ka({chain:$,transport:Ia(Ba($,r,a))}).getBalance({address:G}).then(ae).catch(console.error)}),[]);let[ie,oe]=s(0n);o((()=>{Z&&Xt({chain:$,address:G,appId:a,rpcConfig:r,erc20Address:q}).then((e=>oe(e.balance))).catch(console.error)}),[]);let{tokenPrice:se}=Iu($.id),[le,ce]=s({to:G,chain:$,value:J,data:void 0});o((()=>{(async()=>{let e,t;if(!te||!Q||R||P)return;O(!0);let n=ka({chain:le.chain,transport:Ia(Ba(le.chain,r,a))});if(Z&&!le.data)return await n.simulateContract({address:q,chain:le.chain,abi:Mh,functionName:\"transfer\",args:[G,J],account:Q.address}).catch((e=>{console.warn(\"Simulated token transfer failed with error, fetching bridge options.\",e)}))?(O(!1),void ce({to:q,chain:le.chain,data:Wa({abi:Mh,functionName:\"transfer\",args:[G,J]}),value:\"0x0\"})):(O(!1),void v(!0));try{e=await n.prepareTransactionRequest({account:Q.address,to:le.to,chain:le.chain,data:le.data,value:BigInt(le.value??0)})}catch(e){if(console.error(e),k.length>1)_(e.shortMessage??\"Something went wrong\");else if(W&&0===k.length)return void E(new T(`Wallet ${Ct(Q.address)} does not have enough funds.`,void 0,A.INSUFFICIENT_BALANCE))}if(!e)return O(!1),void v(!0);O(!1),L(!0),y(!0),f(e.gas);try{await te.switchChain({id:le.chain.id})}catch(e){await te.addChain({chain:le.chain}),await te.switchChain({id:le.chain.id})}try{t=await te.sendTransaction(e)}catch(e){if(console.error(e),\"TransactionExecutionError\"===e.name)if(k.length<1){let t=e.shortMessage;(e.shortMessage.includes(\"rejected the request\")||e.details.includes(\"rejected the request\"))&&(t=\"User rejected the request.\"),E(new T(t,void 0,A.TRANSACTION_FAILURE))}else _(e.shortMessage??\"Something went wrong\")}if(t)return await te.waitForTransactionReceipt({hash:t}),L(!1),W?(B(t),void H(\"pending\")):(U(!0),void l({eventName:ia,payload:{provider:\"external\",status:\"success\",txHash:t,address:Q.address,chainId:le.chain.id,chainType:\"ethereum\",value:le.value?Ra(BigInt(le.value),V?.decimals??18):void 0,token:V?.symbol??q??\"ETH\",destinationAddress:G,destinationChainId:$.id,destinationChainType:\"ethereum\",destinationValue:J?Ra(J,V?.decimals??18):void 0,destinationToken:V?.symbol??q??$.nativeCurrency.name}}));L(!1)})().catch(console.error)}),[te,le]),o((()=>{(async()=>{if(!w||!te||!Q)return;let e=vr(u.chains).filter((e=>e.id!==$.id&&!!e.testnet==!!$.testnet));Z&&e.unshift($);let t=await Bu({chains:e,address:Q.address,appId:a,rpcConfig:r}),n=Z?t.filter((e=>e.balance>0n)):t.filter((e=>e.balance>J));if(n.length<1)return void E(new T(`Wallet ${Ct(Q.address)} does not have enough funds.`,void 0,A.INSUFFICIENT_BALANCE));n.sort(((e,t)=>Number(t.balance-e.balance)));let i=(await Promise.allSettled(n.map((async e=>({quote:await eu({isTestnet:!!$.testnet,input:Jd({amount:J.toString(),user:Q.address,recipient:G,destinationChainId:$.id,destinationCurrency:q,originChainId:e.chain.id})}),...e}))))).filter((e=>\"fulfilled\"===e.status)).map((e=>e.value));if(i.length<1)return void E(new T(`Wallet ${Ct(Q.address)} does not have enough funds.`,void 0,A.INSUFFICIENT_BALANCE));let o=i.map((e=>({bridgeTx:tu(e.quote),balance:e.balance,chain:e.chain}))).filter((e=>!!e.bridgeTx));if(o.length>1)return void I(o);let s=o[0];s?(M(!0),ce({data:s.bridgeTx.data,to:s.bridgeTx.to,value:s.bridgeTx.value,chain:s.chain})):E(new T(`Wallet ${Ct(Q.address)} does not have enough funds.`,void 0,A.INSUFFICIENT_BALANCE))})().catch(console.error)}),[w]),nu({transactionHash:F,wallet:Q,isTestnet:!!$.testnet,bridgingStatus:z,setBridgingStatus:H,onSuccess({transactionHash:e,wallet:t}){M(!1),U(!0),l({eventName:ia,payload:{provider:\"external\",status:\"success\",txHash:e,address:t.address,chainId:le.chain.id,chainType:\"ethereum\",value:le.value?Ra(BigInt(le.value),V?.decimals??18):void 0,token:V?.symbol??q??\"ETH\",destinationAddress:G,destinationChainId:$.id,destinationChainType:\"ethereum\",destinationValue:J?Ra(J,V?.decimals??18):void 0,destinationToken:V?.symbol??q??$.nativeCurrency.name}})},onFailure({error:e}){M(!1),E(e)}}),o((()=>{if(!C)return;let e={error:C,previousScreen:cr.FUNDING_TRANSFER_FROM_WALLET_SCREEN};d({funding:h?.funding,sendTransaction:h?.sendTransaction,errorModalData:e}),c(cr.ERROR_SCREEN,!1)}),[C]);let de=!Z&&se?en(K??\"0\",se):void 0,ue=Z?g:rn([g,J]),he=ue&&se?tn(ue,se):void 0,pe=ue?Yt(ue,\"ETH\"):void 0,me=g&&se?tn(g,se):void 0,ye=g?Yt(g,\"ETH\"):void 0;if(o((()=>{if(!D)return;let e=setTimeout(i,_r);return()=>clearTimeout(e)}),[D]),D/*#__PURE__*/)return e(n,{children:[/*#__PURE__*/t(Cu,{}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(xt,{children:[/*#__PURE__*/t(oi,{color:\"var(--privy-color-success)\",width:\"64px\",height:\"64px\"}),/*#__PURE__*/t(ql,{title:\"Success!\",description:`You’ve successfully added ${K} ${Z?V.symbol:$.nativeCurrency.symbol} to your ${u.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]});let ge=Z?`${nn({amount:ie,decimals:V.decimals})} ${V.symbol}`:Yt(re,$.nativeCurrency.symbol,3,!0),fe=k[N];return k.length>1&&fe?/*#__PURE__*/t(xh,{displayName:ee,configuredFundingChain:$,formattedBalance:ge,fundingAmount:K,fundingCurrency:Z?V.symbol:$.nativeCurrency.symbol,fundingAmountInUsd:de,options:k,selectedOption:fe,isPreparing:R,isSubmitting:P,addressToFund:G,fundingWalletAddress:Q?.address||\"\",errorMessage:b,onSubmit:()=>{h.funding?.amount!==K?async function(){if(Q&&fe)try{let e=await eu({isTestnet:!!$.testnet,input:Jd({amount:J.toString(),user:Q.address,recipient:G,destinationChainId:$.id,destinationCurrency:q,originChainId:fe.chain.id})}),t=tu(e);if(!t)throw Error(\"Invalid transaction request\");M(!0),ce({data:t.data,to:t.to,value:t.value,chain:fe.chain})}catch(e){console.error(e),E(new T(\"Unable to fetch quotes for bridging\",e,A.INSUFFICIENT_BALANCE))}}().catch(console.error):ce({to:fe.bridgeTx.to,data:fe.bridgeTx.data,value:fe.bridgeTx.value,chain:fe.chain})},onSelect:e=>{e!==N&&(_(null),S(e))},onAmountChange:Y}):m&&g&&Q&&h?.funding?/*#__PURE__*/t(Sh,{wallet:Q,displayName:ee,addressToFund:G,isBridging:W,isErc20Flow:Z,totalPriceInUsd:he,totalPriceInNativeCurrency:pe,gasPriceInUsd:me,gasPriceInNativeCurrency:ye,chainId:$.id,chainName:$.name}):\n/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(Cu,{}),/*#__PURE__*/t(Eu,{}),/*#__PURE__*/t(\"div\",{style:{marginTop:\"1rem\"}}),/*#__PURE__*/t(ct,{})]})},[cr.FUNDING_AWAITING_TRANSFER_FROM_EXTERNAL_SOLANA_WALLET_SCREEN]:()=>{let{closePrivyModal:r,createAnalyticsEvent:a}=x(),{navigate:i,setModalData:c,app:d,data:u}=lr(),{wallets:h}=oa(),p=ra(),[m,y]=s(0n),[g,f]=s(null),[w,v]=s(!1),[C,E]=s(!1),b=l(!1);if(!u?.funding||\"solana\"!==u.funding.chainType)throw Error(\"Invalid funding data\");let{address:_,amount:k,cluster:I,connectedWalletAddress:N}=u.funding,S=kr(I),{tokenPrice:R}=Iu(\"solana\"),{fundingAmountInBaseUnit:O,totalPriceInUsd:W,totalPriceInNativeCurrency:M,feePriceInNativeCurrency:P,feePriceInUsd:L}=Wu({amount:k,fee:m,tokenPrice:R}),D=N?h.find((({address:e})=>e===N)):h[0],U=ft(D?.walletClientType||\"unknown\"),F=U?.name||\"wallet\";return o((()=>{(async()=>{if(\"solana\"===D?.type&&D.sendTransaction&&!w&&!b.current){b.current=!0;try{let e=p(aa);if(!e)throw new T(\"Unable to load solana plugin\");let{connection:t,transaction:n}=await e.createTransferTransaction({from:D.address,to:_,amount:O,cluster:I}),r=await n.getEstimatedFee(t);null!=r&&y(BigInt(r)),v(!0);let i=await t.simulateTransaction(n);if(i.value.err)return i.value.logs?.find((e=>/insufficient (lamports|funds)/gi.test(e)))?void f(new T(`Wallet ${Ct(D.address,void 0,void 0,\"solana\")} does not have enough funds.`,void 0,A.INSUFFICIENT_BALANCE)):(console.error(\"Transaction failed:\",i.value.err),void f(new T(\"Something went wrong\",void 0,A.TRANSACTION_FAILURE)));let o=await D.sendTransaction(n,t);a({eventName:ia,payload:{provider:\"external\",status:\"success\",txHash:o,rpcEndpoint:S,address:D.address,value:Ra(O,9),chainType:\"solana\",clusterName:I.name,token:\"SOL\",destinationAddress:_,destinationValue:Ra(O,9),destinationChainType:\"solana\",destinationClusterName:I.name,destinationToken:\"SOL\"}}),v(!1),E(!0)}catch(e){if(console.error(e),v(!1),/user rejected the request/gi.test(e.message||\"\"))return void f(new T(\"Transaction was rejected by the user\",void 0,A.TRANSACTION_FAILURE));f(new T(\"Something went wrong\",void 0,A.TRANSACTION_FAILURE))}}})().catch(console.error).finally((()=>b.current=!1))}),[]),o((()=>{if(!g)return;let e={error:g,previousScreen:cr.FUNDING_TRANSFER_FROM_WALLET_SCREEN};c({funding:u?.funding,sendTransaction:u?.sendTransaction,errorModalData:e}),i(cr.ERROR_SCREEN,!1)}),[g]),o((()=>{if(!C)return;let e=setTimeout(r,_r);return()=>clearTimeout(e)}),[C]),C?/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(Cu,{}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(xt,{children:[/*#__PURE__*/t(oi,{color:\"var(--privy-color-success)\",width:\"64px\",height:\"64px\"}),/*#__PURE__*/t(ql,{title:\"Success!\",description:`You’ve successfully added ${k} SOL to your ${d.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]}):D&&w?/*#__PURE__*/t(Sh,{wallet:D,displayName:F,addressToFund:_,isBridging:!1,isErc20Flow:!1,totalPriceInUsd:W,totalPriceInNativeCurrency:M,gasPriceInUsd:L,gasPriceInNativeCurrency:P,chainId:\"solana\",chainName:I.name}):\n/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(Cu,{}),/*#__PURE__*/t(Eu,{}),/*#__PURE__*/t(\"div\",{style:{marginTop:\"1rem\"}}),/*#__PURE__*/t(ct,{})]})},[cr.FUNDING_AWAITING_EVM_TO_SOL_BRIDGING_SCREEN]:()=>{let{rpcConfig:r,appId:a,closePrivyModal:i,createAnalyticsEvent:l}=x(),{navigate:c,setModalData:d,app:u,data:h}=lr(),{wallets:p}=Tr(),m=ra(),[y,g]=s(null),[f,w]=s(null),[v,C]=s([]),[E,b]=s(0),[_,k]=s(!1),[I,N]=s(!1),[S,R]=s(!1),[O,W]=s(!1),[M,P]=s(),[L,D]=s();if(!h?.funding||\"solana\"!==h.funding.chainType)throw Error(\"Invalid funding data\");let{address:U,cluster:F,connectedWalletAddress:B}=h.funding,[z,H]=s(h.funding.amount),V=B?p.find((({address:e})=>e===B)):p[0],$=ft(V?.walletClientType||\"unknown\"),j=$?.name||\"wallet\",[G,q]=s(null);o((()=>{(async()=>{if(!V)return;let e=await V.getEthereumProvider();q(Na({account:V.address,transport:xa(e)}).extend(Sa))})().catch(console.error)}),[V]);let[K,Y]=s(0n),Z=Ru(K);o((()=>{let e=m(aa);e?e.getBalance({address:U,cluster:F}).then((e=>Y(BigInt(e)))):console.warn(\"Unable to load solana plugin, skipping balance\")}),[]);let[J,Q]=s(),{tokenPrice:X}=Iu(\"solana\"),{fundingAmountInBaseUnit:ee,fundingAmountInUsd:te}=Wu({amount:z,fee:0n,tokenPrice:X});if(o((()=>{(async()=>{if(!G||!V)return;let e=[\"testnet\",\"devnet\"].includes(F.name);e&&console.warn(\"Solana testnets are not supported for bridging\");let t=vr(u.chains).filter((({testnet:t})=>!!t===e)),n=(await Bu({chains:t,address:V.address,appId:a,rpcConfig:r})).filter((e=>e.balance>0n));if(n.length<1)return void g(new T(`Wallet ${Ct(V.address)} does not have enough funds.`,void 0,A.INSUFFICIENT_BALANCE));n.sort(((e,t)=>Number(t.balance-e.balance)));let i=(await Promise.allSettled(n.map((async e=>({...e,quote:await eu({isTestnet:!1,input:Jd({amount:ee.toString(),user:V.address,recipient:U,destinationChainId:br,destinationCurrency:Ar,originChainId:e.chain.id})})}))))).filter((e=>\"fulfilled\"===e.status)).map((e=>e.value));if(i.length<1)return void g(new T(`Unable to fetch quotes for bridging. Wallet ${Ct(V.address)} does not have enough funds.`,void 0,A.INSUFFICIENT_BALANCE));let o=i.map((({quote:e,balance:t,chain:n})=>({bridgeTx:tu(e),balance:t,chain:n}))).filter((({bridgeTx:e})=>!!e));if(o.length>1)return void C(o);let s=o.at(0);s?(N(!0),Q({data:s.bridgeTx.data,to:s.bridgeTx.to,value:s.bridgeTx.value,chain:s.chain})):g(new T(`Unable to select bridge option from quotes. Wallet ${Ct(V.address)} does not have enough funds.`,void 0,A.INSUFFICIENT_BALANCE))})().catch(console.error)}),[G]),o((()=>{(async()=>{let e,t;if(!G||!V||_||S||!J)return;k(!0);let n=ka({chain:J.chain,transport:Ia(Ba(J.chain,r,a))});try{e=await n.prepareTransactionRequest({account:V.address,to:J.to,chain:J.chain,data:J.data,value:BigInt(J.value??0)})}catch(e){console.error(e),v.length>1&&w(e.shortMessage??\"Something went wrong\")}if(e){k(!1),R(!0);try{await G.switchChain({id:J.chain.id})}catch(e){await G.addChain({chain:J.chain}),await G.switchChain({id:J.chain.id})}try{t=await G.sendTransaction(e)}catch(e){console.error(e),\"TransactionExecutionError\"===e.name&&(v.length<1?g(new T(e.shortMessage,void 0,A.TRANSACTION_FAILURE)):w(e.shortMessage??\"Something went wrong\"))}if(t)return await G.waitForTransactionReceipt({hash:t}),I?(D(\"pending\"),void P(t)):(R(!1),W(!0),void l({eventName:ia,payload:{provider:\"external\",status:\"success\",txHash:t,address:V.address,chainId:J.chain.id,chainType:\"ethereum\",value:J.value?Ra(BigInt(J.value),18):void 0,token:\"ETH\",destination:U,destinationClusterName:\"mainnet-beta\",destinationChainType:\"solana\",destinationValue:Ra(ee,9),destinationToken:\"SOL\"}}));R(!1)}else k(!1)})().catch(console.error)}),[G,J]),nu({transactionHash:M,wallet:V,isTestnet:!1,bridgingStatus:L,setBridgingStatus:D,onSuccess({transactionHash:e,wallet:t}){N(!1),W(!0),l({eventName:ia,payload:{provider:\"external\",status:\"success\",txHash:e,address:t.address,chainId:J?.chain.id,chainType:\"ethereum\",value:J?.value?Ra(BigInt(J.value),18):void 0,token:\"ETH\",destination:U,destinationClusterName:\"mainnet-beta\",destinationChainType:\"solana\",destinationValue:Ra(ee,9),destinationToken:\"SOL\"}})},onFailure({error:e}){N(!1),g(e)}}),o((()=>{if(!y)return;let e={error:y,previousScreen:cr.FUNDING_TRANSFER_FROM_WALLET_SCREEN};d({funding:h?.funding,sendTransaction:h?.sendTransaction,errorModalData:e}),c(cr.ERROR_SCREEN,!1)}),[y]),o((()=>{if(!O)return;let e=setTimeout(i,_r);return()=>clearTimeout(e)}),[O]),O/*#__PURE__*/)return e(n,{children:[/*#__PURE__*/t(Cu,{}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(xt,{children:[/*#__PURE__*/t(oi,{color:\"var(--privy-color-success)\",width:\"64px\",height:\"64px\"}),/*#__PURE__*/t(ql,{title:\"Success!\",description:`You’ve successfully added ${z} SOL to your ${u.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]});let ne=v[E];return v.length>1&&ne?/*#__PURE__*/t(xh,{displayName:j,configuredFundingChain:F,formattedBalance:Z,fundingAmount:z,fundingCurrency:\"SOL\",fundingAmountInUsd:te,options:v,selectedOption:ne,isPreparing:_,isSubmitting:S,addressToFund:U,fundingWalletAddress:V?.address||\"\",errorMessage:f,onSubmit:()=>{h.funding?.amount!==z?async function(){if(V&&ne)try{let e=await eu({isTestnet:!1,input:Jd({amount:ee.toString(),user:V.address,recipient:U,destinationChainId:br,destinationCurrency:Ar,originChainId:ne.chain.id})}),t=tu(e);if(!t)throw Error(\"Invalid transaction request\");N(!0),Q({data:t.data,to:t.to,value:t.value,chain:ne.chain})}catch(e){console.error(e),g(new T(\"Unable to fetch quotes for bridging\",e,A.INSUFFICIENT_BALANCE))}}().catch(console.error):Q({to:ne.bridgeTx.to,data:ne.bridgeTx.data,value:ne.bridgeTx.value,chain:ne.chain})},onSelect:e=>{e!==E&&(w(null),b(e))},onAmountChange:H}):S&&V?/*#__PURE__*/t(Sh,{wallet:V,displayName:j,addressToFund:U,isBridging:I,isErc20Flow:!1,chainId:\"solana\",chainName:F.name,totalPriceInUsd:void 0,totalPriceInNativeCurrency:void 0,gasPriceInUsd:void 0,gasPriceInNativeCurrency:void 0}):\n/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(Cu,{}),/*#__PURE__*/t(Eu,{}),/*#__PURE__*/t(\"div\",{style:{marginTop:\"1rem\"}}),/*#__PURE__*/t(ct,{})]})},[cr.FUNDING_AWAITING_SOL_TO_EVM_BRIDGING_SCREEN]:function(){let{closePrivyModal:r,createAnalyticsEvent:a}=x(),{navigate:i,setModalData:c,app:d,data:u}=lr(),{wallets:h}=oa(),p=l(!1),m=ra(),[y,g]=s(!1),[f,w]=s(!1),[v,C]=s(null),[E,b]=s(),[_,k]=s();if(!u?.funding||\"ethereum\"!==u.funding.chainType)throw Error(\"Invalid funding data\");let{amount:I,connectedWalletAddress:N,chain:S,cluster:R,isUSDC:O}=u.funding,W=u.funding.address,M=u.funding.erc20Address,P=u.funding.isUSDC?\"USDC\":S.nativeCurrency.symbol,L=R??{name:\"mainnet-beta\"},D=N?h.find((({address:e})=>e===N)):h[0],U=ft(D?.walletClientType||\"unknown\"),F=U?.name||\"wallet\";return o((()=>{(async function(){if(!D||!S||p.current)return;let e=m(aa);if(!e)return void C(new T(\"Unable to solana plugin\"));p.current=!0,S?.testnet&&console.warn(\"Solana testnets are not supported for bridging\");let t=O?1e6*parseFloat(I):Oa(I),n=await eu({isTestnet:!!S.testnet,input:Jd({amount:t.toString(),user:D.address,recipient:W,destinationChainId:S.id,originChainId:br,originCurrency:O?Ir:Ar,destinationCurrency:O?M:void 0})}).catch(console.error);if(!n)return void C(new T(`Unable to fetch quotes for bridging. Wallet ${an(D.address)} does not have enough funds.`,void 0,A.INSUFFICIENT_BALANCE));let r=await e.createBridgeTransactionFromRelayQuote({quote:n,from:D.address,cluster:L});if(r)try{g(!0);let{connection:e,transaction:t}=r,a=await e.simulateTransaction(t);if(a.value.err)return a.value.logs?.find((e=>/insufficient (lamports|funds)/gi.test(e)))?void C(new T(`Wallet ${an(D?.address)} does not have enough funds. ${n.details.currencyIn.amountFormatted} ${P} are needed to complete the transaction.`,void 0,A.INSUFFICIENT_BALANCE)):(console.error(\"Transaction failed:\",a.value.err),void C(new T(\"Something went wrong\",void 0,A.TRANSACTION_FAILURE)));let i=await D.sendTransaction(t,e),o=await e.confirmTransaction(i);if(o.value.err)return console.error(\"Transaction failed:\",o.value.err),void C(new T(\"Something went wrong\",void 0,A.TRANSACTION_FAILURE));b(i),k(\"pending\")}catch(e){if(console.error(e),/user rejected the request/gi.test(e.message||\"\"))return void C(new T(\"Transaction was rejected by the user\",void 0,A.TRANSACTION_FAILURE));C(new T(\"Something went wrong\",void 0,A.TRANSACTION_FAILURE))}else C(new T(`Unable to select bridge option from quotes. Wallet ${an(D.address)} does not have enough funds.`,void 0,A.INSUFFICIENT_BALANCE))})().catch(console.error)}),[]),nu({transactionHash:E,wallet:D,isTestnet:!1,bridgingStatus:_,setBridgingStatus:k,onSuccess({transactionHash:e,wallet:t}){g(!1),w(!0),a({eventName:ia,payload:{provider:\"external\",status:\"success\",txHash:e,address:t.address,chainType:\"solana\",clusterName:L.name,token:\"SOL\",destinationAddress:W,destinationChainId:S.id,destinationChainType:\"ethereum\",destinationValue:I,destinationToken:O?\"USDC\":\"ETH\"}})},onFailure({error:e}){g(!1),C(e)}}),o((()=>{if(!f)return;let e=setTimeout(r,_r);return()=>clearTimeout(e)}),[f]),o((()=>{if(!v)return;let e={error:v,previousScreen:cr.FUNDING_TRANSFER_FROM_WALLET_SCREEN};c({funding:u?.funding,sendTransaction:u?.sendTransaction,errorModalData:e}),i(cr.ERROR_SCREEN,!1)}),[v]),f?/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(Cu,{}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(xt,{children:[/*#__PURE__*/t(oi,{color:\"var(--privy-color-success)\",width:\"64px\",height:\"64px\"}),/*#__PURE__*/t(ql,{title:\"Success!\",description:`You’ve successfully added ${I} ${P} to your ${d.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]}):y&&D?/*#__PURE__*/t(Sh,{wallet:D,displayName:F,addressToFund:W,isBridging:y,isErc20Flow:!1,chainId:S.id,chainName:S.name,totalPriceInUsd:void 0,totalPriceInNativeCurrency:void 0,gasPriceInUsd:void 0,gasPriceInNativeCurrency:void 0}):\n/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(Cu,{}),/*#__PURE__*/t(Eu,{}),/*#__PURE__*/t(\"div\",{style:{marginTop:\"1rem\"}}),/*#__PURE__*/t(ct,{})]})},[cr.FUNDING_MANUAL_TRANSFER_SCREEN]:()=>{let{wallets:r}=Tr(),{wallets:a}=oa(),{data:l,setModalData:c,navigate:d,lastScreen:u}=lr(),{rpcConfig:h,appId:p,createAnalyticsEvent:m,closePrivyModal:y}=x(),g=dr(),[f,w]=s(void 0),[v,C]=s(!1),E=ra(),T=l?.funding,{reloadBalance:b}=dn({rpcConfig:h,appId:p,address:\"ethereum\"===T.chainType?T.address:void 0,chain:\"ethereum\"===T.chainType?T.chain:void 0}),A=\"solana\"===T.chainType,_=A?\"SOL\":T.erc20Address?T.erc20ContractInfo?.symbol:T.chain.nativeCurrency.symbol,k=A?a.find((({address:e})=>e===T.address)):r.find((({address:e})=>Ct(e)===Ct(T.address)));if(!T)return c({errorModalData:{error:Error(\"Couldn't find funding config\"),previousScreen:u||cr.FUNDING_METHOD_SELECTION_SCREEN},funding:l?.funding,sendTransaction:l?.sendTransaction}),d(cr.ERROR_SCREEN),/*#__PURE__*/t(n,{});o((()=>{let e=A?async function(){if(\"solana\"!==T.chainType)return;let e=E(aa);e?e.getBalance({address:T.address,cluster:T.cluster}).then((e=>{let t=BigInt(e);f&&t>f&&(C(!0),m({eventName:ia,payload:{provider:\"manual\",status:\"success\",chainType:\"solana\",address:k?.address,value:Ra(t-f,9),token:\"SOL\"}})),w(t)})):console.warn(\"Unable to load solana plugin, skipping balance\")}:async function(){\"ethereum\"===T.chainType&&(async()=>{if(!T.erc20Address)return await b()??BigInt(0);{let{balance:e}=await Xt({chain:T.chain,address:T.address,erc20Address:T.erc20Address,rpcConfig:h,appId:p});return e}})().then((e=>{f&&e>f&&(C(!0),m({eventName:ia,payload:{provider:\"manual\",status:\"success\",chainType:\"ethereum\",address:k?.address,chainId:T.chain.id,value:Ra(e-f,T.erc20ContractInfo?.decimals??18),token:T.erc20ContractInfo?.symbol??T.erc20Address??\"ETH\"}})),w(e)})).catch((()=>w(void 0)))},t=setInterval(e,2e3);return e(),()=>clearInterval(t)}),[f]);let I=i((()=>void 0!==f&&f>=parseFloat(T.amount)),[f,T.amount]),N=i((()=>null==f?\"\":T.isUSDC?ki({amount:f,decimals:6}):A?Ru(f,3,!0,!0):null!=T.erc20ContractInfo?.decimals?ki({amount:f,decimals:T.erc20ContractInfo.decimals}):Ii({wei:f})),[f,A,T]),S=\"ethereum\"===T.chainType?T.chain.name:tp[T.cluster.name],R=i((()=>\"\"===T.uiConfig?.receiveFundsTitle?null:/*#__PURE__*/t(St,{children:T.uiConfig?.receiveFundsTitle??`Receive ${T.amount} ${_??\"\"}`.trim()})),[T.uiConfig?.receiveFundsTitle,T.amount,_]),O=i((()=>\"\"===T.uiConfig?.receiveFundsSubtitle?null:/*#__PURE__*/t(Rt,{children:T.uiConfig?.receiveFundsSubtitle??`Scan this code or copy your wallet address to receive funds on ${S}.`})),[T.uiConfig?.receiveFundsSubtitle,S]);/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(Cu,{}),R,O,/*#__PURE__*/e(sn,{style:{gap:\"1rem\",margin:R||O?\"1rem 0\":\"0\"},children:[/*#__PURE__*/t(zt,{url:`${T.chainType}:${T.address}`,size:200,squareLogoElement:ep}),/*#__PURE__*/e(zh,{theme:g.appearance.palette.colorScheme,children:[\"Make sure to send funds on \",S,\".\"]}),/*#__PURE__*/t(Nt,{title:\"Your wallet\",errMsg:void 0,showIcon:!0,isLoading:!T||void 0===f,isPulsing:!I,balance:`${N} ${_}`,address:T.address,statusColor:I?\"green\":\"gray\"}),v&&/*#__PURE__*/t(st,{onClick:()=>y({shouldCallAuthOnSuccess:!1,isSuccess:!0}),children:\"Continue\"})]}),/*#__PURE__*/t(ct,{})]})},[cr.EMBEDDED_WALLET_PASSWORD_UPDATE_SPLASH_SCREEN]:()=>{let{closePrivyModal:r}=x(),{data:a,setModalData:i,navigate:o,onUserCloseViaDialogOrKeybindRef:s}=lr(),{onSuccess:l,onFailure:c}=a.setWalletPassword,d=()=>{c(new R(\"Exited before password was added to wallet\")),r({shouldCallAuthOnSuccess:!1})};return s.current=d,/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{onClose:d}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(xt,{children:[/*#__PURE__*/e(Lt,{children:[/*#__PURE__*/t(vi,{stroke:\"var(--privy-color-accent)\",width:\"64px\",height:\"64px\"}),/*#__PURE__*/t(Dt,{style:{width:24,height:24,position:\"absolute\",bottom:0,right:0},children:/*#__PURE__*/t(Ci,{width:\"12px\",height:\"12px\",fill:\"white\"})})]}),/*#__PURE__*/e(ql,{title:\"Secure Your Account\",children:[\"Please set a password to secure your account.\",/*#__PURE__*/t(\"p\",{children:\"Losing access to this password and this device will make your account inaccessible.\"})]})]}),/*#__PURE__*/t(st,{onClick:()=>{i({createWallet:{onFailure:c,onSuccess:l,callAuthOnSuccessOnClose:!1,addPasswordToExistingWallet:!0}}),o(cr.EMBEDDED_WALLET_PASSWORD_UPDATE_SCREEN)},children:\"Add password\"}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]})},[cr.EMBEDDED_WALLET_PASSWORD_UPDATE_SCREEN]:()=>{let[e,n]=s(null),[r,a]=s(!1),[i,l]=s(null),[c,d]=s(\"\"),{authenticated:u,getAccessToken:h,user:p}=ur(),{walletProxy:m,refreshSessionAndUser:y,closePrivyModal:g,createAnalyticsEvent:f}=x(),{app:w,navigate:v,data:C,onUserCloseViaDialogOrKeybindRef:E}=lr(),{onSuccess:T,onFailure:b}=C.createWallet,A=wr(p),_=\"user-passcode\"===e?.recoveryMethod,k=\"user-passcode\"===A?.recoveryMethod;o((()=>{u||(v(cr.LANDING),b(new O(\"User must be authenticated before setting a password on a Privy wallet\")))}),[u]);let I=()=>i?(b(i),void g({shouldCallAuthOnSuccess:!1})):_?(T(e),void g({shouldCallAuthOnSuccess:!1})):(b(new R(\"Exited before password was added to wallet\")),void g({shouldCallAuthOnSuccess:!1}));E.current=I;/*#__PURE__*/return t(Yd,{appName:w?.name||\"privy\",config:{initiatedBy:\"user\",onCancel:I},error:i?\"An error has occurred, please try again.\":void 0,buttonLoading:r,buttonHideAnimations:!1,password:c,isResettingPassword:k,onPasswordGenerate:()=>d(Fd()),onPasswordChange:d,onSubmit:async()=>{_?(T(e),g({shouldCallAuthOnSuccess:!1})):(a(!0),l(null),await(async()=>{let e=await h();if(e&&A?.address&&c&&m)try{f({eventName:\"embedded_wallet_set_recovery_started\",payload:{walletAddress:A.address,existingRecoveryMethod:A.recoveryMethod,targetRecoveryMethod:\"user-passcode\",isResettingPassword:k}});let{entropyId:t,entropyIdVerifier:r}=jn(A);if(!(await m.setRecovery({accessToken:e,entropyId:t,entropyIdVerifier:r,recoveryPassword:c,recoveryMethod:\"user-passcode\"})).entropyId)return l(new R(\"Error setting password on privy wallet\")),void f({eventName:\"embedded_wallet_set_recovery_failed\",payload:{walletAddress:A.address,existingRecoveryMethod:A.recoveryMethod,targetRecoveryMethod:\"user-passcode\",isResettingPassword:k,reason:\"error setting password\"}});let a=await y(),i=wr(a);if(!i)return l(new R(\"Error setting password on privy wallet\")),void f({eventName:\"embedded_wallet_set_recovery_failed\",payload:{walletAddress:A.address,existingRecoveryMethod:A.recoveryMethod,targetRecoveryMethod:\"user-passcode\",isResettingPassword:k,reason:\"wallet disconnected\"}});n(i),f({eventName:\"embedded_wallet_set_recovery_completed\",payload:{walletAddress:A.address,existingRecoveryMethod:A.recoveryMethod,targetRecoveryMethod:\"user-passcode\",isResettingPassword:k}})}catch(e){console.warn(e),l(e instanceof Error?e:Error(\"Error setting password on privy wallet\")),f({eventName:\"embedded_wallet_set_password_failed\",payload:{walletAddress:A.address,reason:e}})}})(),a(!1))},onClose:I})},[cr.EMBEDDED_WALLET_PASSWORD_CREATE_SCREEN]:()=>{let{app:e,navigate:n,data:r,onUserCloseViaDialogOrKeybindRef:a}=lr(),[i,l]=s(\"\"),[c,d]=s(!1),[u,h]=s(),[p,m]=s(null),{authenticated:y,user:g}=ur(),{closePrivyModal:f,isNewUserThisSession:w,initializeWalletProxy:v}=x(),{onSuccess:C,onFailure:E,callAuthOnSuccessOnClose:T}=r.createWallet,{createWallet:b}=rd(),[A,_]=s(null),k=new Ge((async()=>{try{let e=await b({recoveryPassword:u,user:g});if(!e)return;_(e),w?n(cr.EMBEDDED_WALLET_CREATED_SCREEN):(C(e),f({shouldCallAuthOnSuccess:T}))}catch(e){l(e.message)}}));o((()=>{p||v(3e4).then((e=>m(e)))}),[p]),o((()=>{if(!y||!g)return n(cr.LANDING),void E(Error(\"User must be authenticated before creating a Privy wallet\"))}),[y]),a.current=()=>null;/*#__PURE__*/return t(Yd,{config:{initiatedBy:\"automatic\"},appName:e?.name||\"privy\",loading:!p,buttonLoading:c,buttonHideAnimations:!A&&c,isResettingPassword:!1,error:i,password:u||\"\",onClose:()=>{A&&\"user-passcode\"!==A?.recoveryMethod?(E(new R(\"User created a wallet but failed to set a password for it\")),f({shouldCallAuthOnSuccess:!1})):A?(C(A),f({shouldCallAuthOnSuccess:T})):(E(new R(\"User wallet creation failed\")),f({shouldCallAuthOnSuccess:!1}))},onPasswordChange:h,onPasswordGenerate:()=>h(Fd()),onSubmit:async()=>(d(!0),k.execute().then((()=>new Promise((e=>setTimeout(e,250))))).finally((()=>d(!1))))})},[cr.MFA_ENROLLMENT_FLOW_SCREEN]:()=>{let{user:r,enrollInMfa:a}=ur(),[i,l]=s(null),{unenrollWithSms:c,unenrollWithTotp:d,unenrollWithPasskey:u}=tm(),{app:h,ready:p,data:m,onUserCloseViaDialogOrKeybindRef:y}=lr(),{closePrivyModal:g}=x(),{promptMfa:f}=em(),{initEnrollmentWithTotp:w}=tm(),[v,C]=s(!1),[E,T]=s(null),[b,A]=s(null),_=()=>{g({shouldCallAuthOnSuccess:!0}),a(!1),setTimeout((()=>{l(null),T(null)}),500)},{initEnrollmentWithPasskey:k,submitEnrollmentWithPasskey:I}=tm(),[N,S]=s(!1),[R,O]=s(null);y.current=_;let W=r?.mfaMethods.includes(\"sms\"),M=!!r?.phone,P=r?.mfaMethods.includes(\"totp\"),L=r?.mfaMethods.includes(\"passkey\"),D=W||P||L,U=r?.linkedAccounts.filter((e=>\"passkey\"===e.type)).map((e=>e.credentialId))??[];function F(){l(null),T(null)}if(o((()=>{D&&C(!0)}),[D]),!p||!r||!h/*#__PURE__*/)return e(n,{children:[/*#__PURE__*/t(ot,{onClose:_},\"header\"),/*#__PURE__*/t(Tl,{children:/*#__PURE__*/t(nm,{})}),/*#__PURE__*/t(_l,{children:/*#__PURE__*/t(Ht,{})}),/*#__PURE__*/t(yt,{})]});if(\"sms\"===i)/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{backFn:F,onClose:_},\"header\"),/*#__PURE__*/t(Ul,{style:{marginBottom:\"1.5rem\"},children:/*#__PURE__*/t(Ka,{})}),/*#__PURE__*/t(bl,{children:\"Remove SMS verification?\"}),/*#__PURE__*/e(Al,{children:[\"MFA adds an extra layer of security to your \",h?.name,\" account. Make sure you have other methods to secure your account.\"]}),/*#__PURE__*/t(xl,{children:/*#__PURE__*/t(st,{warn:!0,onClick:async function(){l(null);try{await c()}catch(e){l(null)}},children:\"Remove SMS for MFA\"})}),/*#__PURE__*/t(yt,{})]});if(\"totp\"===i)/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{backFn:F,onClose:_},\"header\"),/*#__PURE__*/t(Ul,{style:{marginBottom:\"1.5rem\"},children:/*#__PURE__*/t(Ka,{})}),/*#__PURE__*/t(bl,{children:\"Remove Authenticator App verification?\"}),/*#__PURE__*/e(Al,{children:[\"MFA adds an extra layer of security to your \",h?.name,\" account. Make sure you have other methods to secure your account.\"]}),/*#__PURE__*/t(xl,{children:/*#__PURE__*/t(st,{warn:!0,onClick:async function(){l(null);try{await d()}catch(e){l(null)}},children:\"Remove Authenticator App for MFA\"})}),/*#__PURE__*/t(yt,{})]});if(\"passkey\"===i){let r=m?.mfaEnrollmentFlow?.shouldUnlinkOnUnenrollMfa??!0;/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{backFn:F,onClose:_},\"header\"),/*#__PURE__*/t(Ul,{style:{marginBottom:\"1.5rem\"},children:/*#__PURE__*/t(Ka,{})}),/*#__PURE__*/t(bl,{children:\"Are you sure you want to remove this passkey?\"}),/*#__PURE__*/t(Al,{children:r?\"Removing your passkey will remove as both a verification method and a login method.\":\"Removing your passkey will remove as a verification method.\"}),/*#__PURE__*/t(xl,{children:/*#__PURE__*/t(st,{warn:!0,onClick:async function(){l(null);try{await u({removeForLogin:m?.mfaEnrollmentFlow?.shouldUnlinkOnUnenrollMfa})}catch(e){l(null)}},children:\"Yes, remove\"})}),/*#__PURE__*/t(yt,{})]})}if(0===m.mfaEnrollmentFlow.mfaMethods.length&&!D)/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{onClose:_},\"header\"),/*#__PURE__*/t(Ul,{style:{marginBottom:\"1.5rem\"},children:/*#__PURE__*/t(ro,{})}),/*#__PURE__*/t(bl,{children:\"Add more security\"}),/*#__PURE__*/e(Al,{children:[h?.name,\" does not have any verification methods enabled.\"]}),/*#__PURE__*/t(xl,{children:/*#__PURE__*/t(st,{onClick:_,children:\"Close\"})}),/*#__PURE__*/t(yt,{})]});let B=!D&&!v;return B?/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{onClose:_},\"header\"),/*#__PURE__*/t(Ul,{style:{marginBottom:\"1.5rem\"},children:/*#__PURE__*/t(ro,{})}),/*#__PURE__*/t(bl,{children:\"Transaction Protection\"}),/*#__PURE__*/t(Al,{children:\"Set up transaction protection to add an extra layer of security to your account\"}),/*#__PURE__*/e(kl,{children:[/*#__PURE__*/e(Nl,{children:[/*#__PURE__*/t(Il,{children:/*#__PURE__*/t(no,{})}),\"Enable 2-Step verification for your \",h?.name,\" wallet.\"]}),/*#__PURE__*/e(Nl,{children:[/*#__PURE__*/t(Il,{children:/*#__PURE__*/t(ao,{})}),\"You'll be prompted to authenticate to complete transactions.\"]})]}),/*#__PURE__*/e(xl,{children:[/*#__PURE__*/t(st,{onClick:()=>C(!0),children:\"Continue\"}),/*#__PURE__*/t(dt,{onClick:_,children:\"Not now\"})]}),/*#__PURE__*/t(yt,{})]}):\"sms\"===E?/*#__PURE__*/t(bm,{appName:h?.name||\"Privy\",onComplete:_,onReset:F,onClose:_}):\"totp\"===E&&b?/*#__PURE__*/t(_m,{onComplete:_,onClose:_,onReset:F,totpInfo:{...b,appName:h?.name||\"Privy\"}}):\"passkey\"===E?/*#__PURE__*/t(om,{appName:h?.name||\"Privy\",onComplete:_,onReset:F,onClose:_}):/*#__PURE__*/t(am,{showIntro:B,userMfaMethods:r.mfaMethods,appMfaMethods:h.mfa.methods,userHasAuthSms:M,onBackToIntro:function(){C(!1)},handleSelectMethod:async function(e){return await f().catch(O),\"totp\"===e?(T(e),A(null),void w().then((e=>{A(e)})).catch((()=>{A(null),F()}))):\"passkey\"===e&&1===U.length?await async function(){S(!0);try{await k(),await I({credentialIds:U},{removeForLogin:m?.mfaEnrollmentFlow?.shouldUnlinkOnUnenrollMfa})}catch(e){O(e)}finally{S(!1)}}():void T(e)},isTotpLoading:\"totp\"===E&&!b,isPasskeyLoading:N,error:R,onClose:_,setRemovingMfaMethod:async e=>{await f().catch(O),l(e)}})},[cr.CAPTCHA_SCREEN]:()=>{let{lastScreen:r,currentScreen:a,data:i,navigateBack:c,navigate:d,setModalData:u}=lr(),{status:h,token:p,waitForResult:m,reset:y,execute:g}=it(),f=l([]),w=e=>{f.current=[e,...f.current]},[v,C]=s(!0);o((()=>(w(setTimeout(C,1e3,!1)),()=>{f.current.forEach((e=>clearTimeout(e))),f.current=[]})),[]);let[E,T]=s(\"\"),[b,A]=s(\"Checking that you are a human...\"),[_,k]=s(/*#__PURE__*/t(st,{onClick:()=>{},disabled:!0,children:\"Continue\"})),[I,N]=s(!1),[x,S]=s(3),R=i?.captchaModalData,O=async e=>{try{await(R?.callback(e)),R?.onSuccessNavigateTo&&d(R?.onSuccessNavigateTo,!1)}catch(e){if(e instanceof qe)return;u({errorModalData:{error:e,previousScreen:r||cr.LANDING}}),d(R?.onErrorNavigateTo||cr.ERROR_SCREEN,!1)}};o((()=>{\"success\"===h?w(setTimeout((async()=>{let e=await m();!e||R?.userIntentRequired||O(e)}),1e3)):\"ready\"===h&&w(setTimeout((()=>{\"ready\"===h&&g()}),500))}),[h]),o((()=>{if(!v)switch(h){case\"success\":T(\"Success!\"),A(\"CAPTCHA passed successfully.\"),k(/*#__PURE__*/t(st,{onClick:()=>{N(!0),O(p)},disabled:!R?.userIntentRequired,loading:I,children:R?.userIntentRequired?\"Continue\":\"Continuing...\"}));break;case\"loading\":T(\"\"),A(\"Checking that you are a human...\"),k(/*#__PURE__*/t(st,{onClick:()=>{},disabled:!0,children:\"Continue\"}));break;case\"error\":T(\"Something went wrong\"),x<=0?(A(\"If you use an adblocker or VPN, try disabling and re-attempting.\"),k(null)):(A(\"You did not pass CAPTCHA. Please try again.\"),k(/*#__PURE__*/t(st,{onClick:W,children:\"Retry\"})))}}),[h,v,I]);let W=async()=>{if(x<=0)return;S((e=>e-1)),y(),g();let e=await m();!e||R?.userIntentRequired||O(e)};/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{backFn:r&&a!==r?c:void 0}),/*#__PURE__*/e(uc,{children:[\"success\"===h?/*#__PURE__*/t(ai,{fill:\"var(--privy-color-success)\",width:\"64px\",height:\"64px\"}):\"error\"===h?/*#__PURE__*/t(ii,{fill:\"var(--privy-color-error)\",width:\"64px\",height:\"64px\"}):/*#__PURE__*/t(cc,{}),/*#__PURE__*/e(mt,{children:[E?/*#__PURE__*/t(\"h3\",{children:E}):null,/*#__PURE__*/t(\"p\",{children:b})]}),_]}),/*#__PURE__*/t(yt,{})]})},[cr.ERROR_SCREEN]:()=>{let{navigate:e,navigateBack:n,data:r,lastScreen:a,currentScreen:i}=lr(),o=r?.errorModalData?.previousScreen||(a===i?void 0:a);/*#__PURE__*/return t(au,{error:r?.errorModalData?.error||Error(),backFn:()=>o?e(o,!1):n(),onClick:()=>e(o||cr.LANDING,!1)})},[cr.IN_APP_BROWSER_LOGIN_NOT_POSSIBLE]:()=>{let{closePrivyModal:r}=x();/*#__PURE__*/return e(n,{children:[/*#__PURE__*/t(ot,{},\"header\"),/*#__PURE__*/t(cp,{children:/*#__PURE__*/t(Xa,{style:{width:32,height:32}})}),/*#__PURE__*/t(Gl,{title:\"Could not log in with provider\",description:\"It looks like you're using an in-app browser. To log in, please try again using an external browser.\",style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",justifyContent:\"center\",textAlign:\"center\"}}),/*#__PURE__*/t(un,{children:/*#__PURE__*/t(st,{onClick:()=>r(),children:\"Close\"})}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(ct,{})]})},[cr.AFFIRMATIVE_CONSENT_SCREEN]:()=>{let{user:e,logout:n}=ur(),{app:r,onUserCloseViaDialogOrKeybindRef:a,setModalData:i,navigate:o}=lr(),{acceptTerms:s,closePrivyModal:l,createAnalyticsEvent:c}=x(),d=e=>{e?.preventDefault(),l({shouldCallAuthOnSuccess:!1}),n()};a.current=d;/*#__PURE__*/return t(Bl,{termsAndConditionsUrl:r?.legal.termsAndConditionsUrl,privacyPolicyUrl:r?.legal.privacyPolicyUrl,onAccept:async t=>{t.preventDefault(),await s(),e&&ut(e,r.embeddedWallets)?(i({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),c({eventName:\"embedded_wallet_creation_failure_logout\",payload:{error:e,screen:\"AffirmativeConsentScreen\"}}),n()},callAuthOnSuccessOnClose:!0}}),o(cr.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)):l()},onDecline:d})},[cr.TELEGRAM_AUTH_SCREEN]:()=>{let{authenticated:r,logout:a,ready:i,user:l}=ur(),{app:c,setModalData:d,navigate:u,resetNavigation:h,data:p}=lr(),{initLoginWithTelegram:m,loginWithTelegram:y,updateWallets:g,setReadyToTrue:f,closePrivyModal:w,createAnalyticsEvent:v,getAuthMeta:C}=x(),[E,T]=s(!1),[b,_]=s(void 0),k=it();async function I(){try{let e=await async function(){let e;if(!r){if(k.enabled&&\"error\"===k.status)throw new qe(k.error,null,A.CAPTCHA_FAILURE);return k.enabled&&\"success\"!==k.status&&(k.execute(),e=await k.waitForResult()),e}}();await y({captchaToken:e}),T(!0),f(!0)}catch(e){if(e?.privyErrorCode===A.ALLOWLIST_REJECTED)return _(void 0),h(),void u(cr.ALLOWLIST_REJECTION_SCREEN);if(e?.privyErrorCode===A.USER_LIMIT_REACHED)return console.error(new S(e).toString()),_(void 0),h(),void u(cr.USER_LIMIT_REACHED_SCREEN);if(e?.privyErrorCode===A.USER_DOES_NOT_EXIST)return _(void 0),h(),void u(cr.ACCOUNT_NOT_FOUND_SCREEN);if(e?.privyErrorCode===A.ACCOUNT_TRANSFER_REQUIRED&&e.data?.data?.nonce)return _(void 0),h(),d({accountTransfer:{nonce:e.data?.data?.nonce,account:e.data?.data?.subject,telegramAuthResult:C()?.telegramAuthResult,telegramWebAppData:C()?.telegramWebAppData,displayName:e.data?.data?.account?.displayName,linkMethod:\"telegram\",embeddedWalletAddress:e.data?.data?.otherUser?.embeddedWalletAddress}}),void u(cr.LINK_CONFLICT_SCREEN);let{retryable:t,detail:n}=Ko(e);_({retryable:t,detail:n,message:\"Authentication failed\"})}}o((()=>{I()}),[]),o((()=>{if(!(i&&r&&E&&l))return;if(c?.legal.requireUsersAcceptTerms&&!l.hasAcceptedTerms){let e=setTimeout((()=>{u(cr.AFFIRMATIVE_CONSENT_SCREEN)}),hr);return()=>clearTimeout(e)}if(ut(l,c.embeddedWallets)){let e=setTimeout((()=>{d({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),v({eventName:\"embedded_wallet_creation_failure_logout\",payload:{error:e,provider:\"telegram\",screen:\"TelegramAuthScreen\"}}),a()},callAuthOnSuccessOnClose:!0}}),u(cr.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)}),hr);return()=>clearTimeout(e)}g();let e=setTimeout((()=>w({shouldCallAuthOnSuccess:!0,isSuccess:!0})),hr);return()=>clearTimeout(e)}),[i,r,E,l]);let N=E?\"Successfully connected with Telegram\":b?b.message:\"Verifying connection to Telegram\",R=\"\";return R=E?\"You’re good to go!\":b?b.detail:\"Just a few moments more\",/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/e(Qg,{children:[/*#__PURE__*/t(qs,{children:/*#__PURE__*/e(\"div\",{children:[/*#__PURE__*/t(pt,{success:E,fail:!!b}),/*#__PURE__*/t(Bp,{style:{width:\"38px\",height:\"38px\"}})]})}),/*#__PURE__*/e(mt,{children:[/*#__PURE__*/t(\"h3\",{children:N}),/*#__PURE__*/t(\"p\",{children:R})]}),b&&b?.retryable?/*#__PURE__*/t(hn,{onClick:async()=>{try{_(void 0),p?.telegramAuthModalData?.seamlessAuth||await m(void 0,p?.login?.disableSignup),await I()}catch(e){let{retryable:t,detail:n}=Ko(e);_({retryable:t,detail:n,message:\"Authentication failed\"})}},disabled:!E&&!b?.retryable,children:\"Retry\"}):null]}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(yt,{})]})},[cr.LINK_CONFLICT_SCREEN]:()=>{let{initiateAccountTransfer:e,closePrivyModal:n}=x(),{data:r,navigate:a,lastScreen:i,setModalData:o}=lr(),[l,c]=s(void 0),[d,u]=s(!1),[h,p]=s(!1),m=async()=>{try{if(!r?.accountTransfer?.nonce||!r?.accountTransfer?.account)throw Error(\"missing account transfer inputs\");p(!0),await e({nonce:r?.accountTransfer?.nonce,account:r?.accountTransfer?.account,accountType:r?.accountTransfer?.linkMethod,externalWalletMetadata:r?.accountTransfer?.externalWalletMetadata,telegramWebAppData:r?.accountTransfer?.telegramWebAppData,telegramAuthResult:r?.accountTransfer?.telegramAuthResult,farcasterEmbeddedAddress:r?.accountTransfer?.farcasterEmbeddedAddress,oAuthUserInfo:r?.accountTransfer?.oAuthUserInfo}),u(!0),p(!1),setTimeout(n,1e3)}catch(e){o({errorModalData:{error:e,previousScreen:i||cr.LINK_CONFLICT_SCREEN}}),a(cr.ERROR_SCREEN,!0)}};return l?/*#__PURE__*/t(vl,{address:l,onClose:n,onRetry:()=>c(void 0),onTransfer:m,isTransferring:h,transferSuccess:d}):/*#__PURE__*/t(Cl,{onClose:n,onInfo:()=>c(r?.accountTransfer?.embeddedWalletAddress),onContinue:()=>c(r?.accountTransfer?.embeddedWalletAddress),onTransfer:m,isTransferring:h,transferSuccess:d,data:r})}},gf=[cr.LANDING,cr.AWAITING_CONNECTION],ff=({isMfaVerifying:r,onMfaVerificationComplete:a})=>{let{ready:i,isModalOpen:s}=ur(),{headless:l}=dr(),{ready:c,currentScreen:d}=lr(),{status:u,execute:h,reset:p,enabled:m}=it(),y=s&&d&&gf.includes(d)&&!l&&\"ready\"===u;return o((()=>{y&&h()}),[y]),o((()=>{!s&&m&&p()}),[s,m]),i&&c||d===cr.AWAITING_OAUTH_SCREEN||d===cr.CROSS_APP_AUTH_SCREEN||d===cr.TELEGRAM_AUTH_SCREEN?!d&&r?/*#__PURE__*/t(uy,{open:r,onClose:a}):d?/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(nl,{$if:!!r,children:/*#__PURE__*/t(yf[d],{})}),/*#__PURE__*/t(nl,{$if:!r,children:/*#__PURE__*/t(uy,{open:r,onClose:a})})]}):null:/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(ot,{}),/*#__PURE__*/t(_t,{}),/*#__PURE__*/t(mf,{children:/*#__PURE__*/t(Ht,{})}),/*#__PURE__*/t(kt,{}),/*#__PURE__*/t(yt,{})]})},wf=({isMfaVerifying:e,onMfaVerificationComplete:n})=>{let r=l(null);/*#__PURE__*/return t(Ef,{style:{height:kn(r)},id:\"privy-modal-content\",children:/*#__PURE__*/t(\"div\",{ref:r,children:/*#__PURE__*/t(ff,{isMfaVerifying:e,onMfaVerificationComplete:n})})})};const vf=({open:e})=>{let{app:n}=lr(),{gracefulClosePrivyModal:r}=(()=>{let{closePrivyModal:e}=x(),{onUserCloseViaDialogOrKeybindRef:t}=lr();return{gracefulClosePrivyModal:c((()=>{if(!t?.current)return e({shouldCallAuthOnSuccess:!1});t.current()}),[e])}})(),[a,i]=s(!1);js({onMfaRequired:()=>{n?.mfa.noPromptOnMfaRequired||i(!0)}});let o=e||a;return n.render.standalone?/*#__PURE__*/t(lf,{children:/*#__PURE__*/t(Cf,{id:\"privy-modal-content\",children:/*#__PURE__*/t(ff,{isMfaVerifying:a,onMfaVerificationComplete:()=>i(!1)})})}):/*#__PURE__*/t(cf,{open:o,id:\"privy-dialog\",\"aria-label\":\"log in or sign up\",\"aria-labelledby\":\"privy-dialog-title\",onClick:()=>r(),children:/*#__PURE__*/t(lf,{children:/*#__PURE__*/t(wf,{isMfaVerifying:a,onMfaVerificationComplete:()=>i(!1)})})})};let Cf=/*#__PURE__*/ja.div.withConfig({displayName:\"ContentWrapper\",componentId:\"sc-ca7fbebb-0\"})([\"display:flex;flex-direction:column;text-align:center;font-size:14px;line-height:20px;width:100%;background:var(--privy-color-background);padding:0 16px;\"]),Ef=/*#__PURE__*/ja(Cf).withConfig({displayName:\"BaseModal\",componentId:\"sc-ca7fbebb-1\"})([\"transition:height 150ms ease-out;overflow-x:hidden;overflow-y:auto;scrollbar-width:none;max-height:calc(100svh - 32px);border-radius:var(--privy-border-radius-lg) var(--privy-border-radius-lg) 0 0;box-shadow:0px 0px 36px rgba(55,65,81,0.15);@media (min-width:441px){box-shadow:0px 8px 36px rgba(55,65,81,0.15);border-radius:var(--privy-border-radius-lg);}\"]);function Tf(e){let n=l(null),r=l();return o((()=>{r.current?.remove(),r.current=function({botUsername:e,scriptHost:t}){let n=document.createElement(\"script\"),{origin:r}=new URL(t);return n.async=!0,n.src=`${r}/js/telegram-login.js`,n.setAttribute(\"data-telegram-login\",e),n.setAttribute(\"data-request-access\",\"write\"),n.setAttribute(\"data-lang\",\"en\"),n}(e),n.current?.after(r.current)}),[e]),/*#__PURE__*/t(\"div\",{ref:n,hidden:!0})}async function bf(e,t,n,r,a,i=!1){let o=i,s=async s=>{if(o&&t&&t.length>0){s===(i?0:1)?a(\"configureMfa\",\"onMfaRequired\",{mfaMethods:t}):r.current?.reject(new Dc(\"missing_or_invalid_mfa\",\"MFA verification failed, retry.\"));let o=await new Promise(((e,t)=>{n.current={resolve:e,reject:t},setTimeout((()=>{let e=new Dc(\"mfa_timeout\",\"Timed out waiting for MFA code\");r.current?.reject(e),t(e)}),3e5)}));return await e(o)}return await e()},l=null;for(let e=0;e<4;e++)try{l=await s(e),r.current?.resolve(void 0);break}catch(e){if(\"missing_or_invalid_mfa\"!==e.type)throw r.current?.resolve(void 0),e;o=!0}if(null===l){let e=new Dc(\"mfa_verification_max_attempts_reached\",\"Max MFA verification attempts reached\");throw r.current?.reject(e),e}return l}var Af;let _f=(Af=0,()=>\"id-\"+Af++);function kf(e){return void 0!==e.error}let If=new class{enqueue(e,t){this.callbacks[e]=t}dequeue(e,t){let n=this.callbacks[t];if(!n)throw Error(`cannot dequeue ${e} event: no event found for id ${t}`);switch(delete this.callbacks[t],e){case\"privy:iframe:ready\":case\"privy:wallets:create\":case\"privy:wallets:add\":case\"privy:wallets:import\":case\"privy:wallets:set-recovery\":case\"privy:wallets:connect\":case\"privy:wallets:recover\":case\"privy:wallets:rpc\":case\"privy:wallet:create\":case\"privy:mfa:verify\":case\"privy:mfa:init-enrollment\":case\"privy:mfa:submit-enrollment\":case\"privy:mfa:unenroll\":case\"privy:mfa:clear\":case\"privy:auth:unlink-passkey\":case\"privy:farcaster:init-signer\":case\"privy:farcaster:sign\":case\"privy:solana-wallet:create\":case\"privy:delegated-actions:consent\":return n;default:throw Error(`invalid wallet event type ${e}`)}}constructor(){this.callbacks={}}},Nf=new Map,xf=(e,t)=>\"bigint\"==typeof t?t.toString():t,Sf=(e,t)=>`${e}${JSON.stringify(t,xf)}`;function Rf(e,t,n,r){let a=n.contentWindow;if(!a)throw Error(\"iframe not initialized\");let i=Sf(e,t);if(\"privy:wallet:create\"===e){let e=Nf.get(i);if(e)return e}let o=new Promise(((n,i)=>{let o=_f();If.enqueue(o,{resolve:n,reject:i}),a.postMessage({id:o,event:e,data:t},r)})).finally((()=>{Nf.delete(i)}));return Nf.set(i,o),o}function Of(e){let n=l(null),r=l(e.mfaMethods),a=ua(),[i,c]=s(!1);return o((()=>{r.current=e.mfaMethods}),[e.mfaMethods]),o((()=>{if(!i)return;let t=n.current;if(!t)return;function o(t){var n;t&&t.origin===e.origin&&\"string\"==typeof(n=t.data).event&&/^privy:.+/.test(n.event)&&function(e){switch(e.event){case\"privy:iframe:ready\":let t=If.dequeue(e.event,e.id);return kf(e)?t.reject(new Dc(e.error.type,e.error.message)):t.resolve(e.data);case\"privy:wallets:create\":{let t=If.dequeue(e.event,e.id);return kf(e)?t.reject(new Dc(e.error.type,e.error.message)):t.resolve(e.data)}case\"privy:wallets:add\":{let t=If.dequeue(e.event,e.id);return kf(e)?t.reject(new Dc(e.error.type,e.error.message)):t.resolve(e.data)}case\"privy:wallets:set-recovery\":{let t=If.dequeue(e.event,e.id);return kf(e)?t.reject(new Dc(e.error.type,e.error.message)):t.resolve(e.data)}case\"privy:wallets:connect\":{let t=If.dequeue(e.event,e.id);return kf(e)?t.reject(new Dc(e.error.type,e.error.message)):t.resolve(e.data)}case\"privy:wallets:recover\":{let t=If.dequeue(e.event,e.id);return kf(e)?t.reject(new Dc(e.error.type,e.error.message)):t.resolve(e.data)}case\"privy:wallets:rpc\":{let t=If.dequeue(e.event,e.id);return kf(e)?t.reject(new Dc(e.error.type,e.error.message)):t.resolve(e.data)}case\"privy:wallet:create\":let n=If.dequeue(e.event,e.id);return kf(e)?n.reject(new Dc(e.error.type,e.error.message)):n.resolve(e.data);case\"privy:wallets:import\":let r=If.dequeue(e.event,e.id);return kf(e)?r.reject(new Dc(e.error.type,e.error.message)):r.resolve(e.data);case\"privy:mfa:verify\":let a=If.dequeue(e.event,e.id);return kf(e)?a.reject(new Dc(e.error.type,e.error.message)):a.resolve(e.data);case\"privy:mfa:init-enrollment\":{let t=If.dequeue(e.event,e.id);return kf(e)?t.reject(new Dc(e.error.type,e.error.message)):t.resolve(e.data)}case\"privy:mfa:submit-enrollment\":{let t=If.dequeue(e.event,e.id);return kf(e)?t.reject(new Dc(e.error.type,e.error.message)):t.resolve(e.data)}case\"privy:mfa:unenroll\":{let t=If.dequeue(e.event,e.id);return kf(e)?t.reject(new Dc(e.error.type,e.error.message)):t.resolve(e.data)}case\"privy:mfa:clear\":{let t=If.dequeue(e.event,e.id);return kf(e)?t.reject(new Dc(e.error.type,e.error.message)):t.resolve(e.data)}case\"privy:auth:unlink-passkey\":{let t=If.dequeue(e.event,e.id);return kf(e)?t.reject(new Dc(e.error.type,e.error.message)):t.resolve(e.data)}case\"privy:solana-wallet:create\":let i=If.dequeue(e.event,e.id);return kf(e)?i.reject(new Dc(e.error.type,e.error.message)):i.resolve(e.data);case\"privy:farcaster:init-signer\":{let t=If.dequeue(e.event,e.id);return kf(e)?t.reject(new Dc(e.error.type,e.error.message)):t.resolve(e.data)}case\"privy:farcaster:sign\":{let t=If.dequeue(e.event,e.id);return kf(e)?t.reject(new Dc(e.error.type,e.error.message)):t.resolve(e.data)}case\"privy:delegated-actions:consent\":{let t=If.dequeue(e.event,e.id);return kf(e)?t.reject(new Dc(e.error.type,e.error.message)):t.resolve(e.data)}default:console.warn(\"Unsupported wallet proxy method:\",e)}}(t.data)}let s={createWallet:n=>bf((r=>Rf(\"privy:wallets:create\",{...n,...r},t,e.origin)),r.current,e.mfaPromise,e.mfaSubmitPromise,a),addWallet:n=>bf((r=>Rf(\"privy:wallets:add\",{...n,...r},t,e.origin)),r.current,e.mfaPromise,e.mfaSubmitPromise,a),setRecovery:n=>bf((r=>Rf(\"privy:wallets:set-recovery\",{...n,...r},t,e.origin)),r.current,e.mfaPromise,e.mfaSubmitPromise,a),connect:n=>bf((r=>Rf(\"privy:wallets:connect\",{...n,...r},t,e.origin)),r.current,e.mfaPromise,e.mfaSubmitPromise,a),recover:n=>bf((r=>Rf(\"privy:wallets:recover\",{...n,...r},t,e.origin)),r.current,e.mfaPromise,e.mfaSubmitPromise,a,!n.recoveryAccessToken&&!n.recoveryPassword&&!n.recoverySecretOverride),rpc:n=>bf((r=>Rf(\"privy:wallets:rpc\",{...n,...r},t,e.origin)),r.current,e.mfaPromise,e.mfaSubmitPromise,a),create:n=>Rf(\"privy:wallet:create\",n,t,e.origin),importWallet:n=>Rf(\"privy:wallets:import\",n,t,e.origin),createSolana:n=>bf((r=>Rf(\"privy:solana-wallet:create\",{...n,...r},t,e.origin)),r.current,e.mfaPromise,e.mfaSubmitPromise,a),createDelegatedAction:n=>Rf(\"privy:delegated-actions:consent\",n,t,e.origin),verifyMfa:n=>bf((r=>Rf(\"privy:mfa:verify\",{...n,...r},t,e.origin)),r.current,e.mfaPromise,e.mfaSubmitPromise,a,!0),initEnrollMfa:n=>bf((r=>Rf(\"privy:mfa:init-enrollment\",{...n,...r},t,e.origin)),r.current,e.mfaPromise,e.mfaSubmitPromise,a),submitEnrollMfa:n=>bf((r=>Rf(\"privy:mfa:submit-enrollment\",{...n,...r},t,e.origin)),r.current,e.mfaPromise,e.mfaSubmitPromise,a),unenrollMfa:n=>bf((r=>Rf(\"privy:mfa:unenroll\",{...n,...r},t,e.origin)),r.current,e.mfaPromise,e.mfaSubmitPromise,a),clearMfa:n=>Rf(\"privy:mfa:clear\",n,t,e.origin),unlinkPasskeyAccount:n=>bf((r=>Rf(\"privy:auth:unlink-passkey\",{...n,...r},t,e.origin)),r.current,e.mfaPromise,e.mfaSubmitPromise,a),initFarcasterSigner:n=>Rf(\"privy:farcaster:init-signer\",n,t,e.origin),signFarcasterMessage:n=>Rf(\"privy:farcaster:sign\",n,t,e.origin)};window.addEventListener(\"message\",o);let l=new AbortController;return In((()=>Rf(\"privy:iframe:ready\",{},t,e.origin)),{abortSignal:l.signal}).then((()=>e.onLoad(s)),((...t)=>{console.warn(\"Privy iframe failed to load: \",...t),e.onLoadFailed()})),()=>{window.removeEventListener(\"message\",o),l.abort()}}),[i]),\n/*#__PURE__*/t(\"iframe\",{ref:n,width:\"0\",height:\"0\",style:{display:\"none\",height:\"0px\",width:\"0px\"},onLoad:()=>c(!0),src:Ot(e.origin,`/apps/${e.appId}/embedded-wallets`,{caid:e.clientAnalyticsId,client_id:e.appClientId})})}const Wf=e=>e.linkedAccounts.filter((e=>\"wallet\"===e.type&&\"privy\"===e.walletClientType&&e.delegated));class Mf{async handleSignMessage(e){if(!e.params||\"string\"!=typeof e.params.message)throw Error(\"Message must be provided as a string for Solana signMessage RPC\");return await sw({message:e.params.message,options:{address:this.address,uiOptions:{}}})}async request(e){if(console.debug(\"EmbeddedSolanaProvider.request() called with args\",e),!await ew())throw Error(\"User must be authenticated to use embedded Solana wallet\");if(!await ow())throw new T(\"Unable to connect to Solana embedded wallet\");if(\"signMessage\"===e.method)return await this.handleSignMessage(e);throw Error(\"Embedded Solana provider does not yet support this RPC method.\")}constructor(e,t){this.walletProxy=e,this.address=t}}const Pf=()=>{let e=dr();o((()=>{(async e=>{let t=new URL(\"v3/wallets\",\"https://explorer-api.walletconnect.com\");t.searchParams.append(\"projectId\",e);let n=await fetch(t);return n.ok?Object.values((await n.json()).listings).sort((({slug:e},{slug:t})=>\"rainbow\"===e&&\"metamask\"===t?1:\"metamask\"===e||\"rainbow\"===e?-1:1)):(console.debug(`Failed to fetch WalletConnect listings: ${await n.text().catch((()=>\"No response.\"))}`),[])})(e.walletConnectCloudProjectId).then((e=>Nn({listings:e}))).catch(console.error)}),[e.walletConnectCloudProjectId])},Lf=\"popup-privy-oauth\",Df=\"PRIVY_OAUTH_USE_BROADCAST_CHANNEL\";class Uf{async authenticate(){if(!this.api)throw new T(\"Auth flow has no API instance\");try{return await this.api.post(K,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode,code_verifier:this.meta.codeVerifier,provider:this.meta.provider})}catch(e){throw b(e)}}async link(){if(!this.api)throw new T(\"Auth flow has no API instance\");try{return await this.api.post(Y,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode,code_verifier:this.meta.codeVerifier,provider:this.meta.provider})}catch(e){throw b(e)}}constructor({authorizationCode:e,stateCode:t,codeVerifier:n,provider:r}){this.meta={authorizationCode:e,stateCode:t,codeVerifier:n,provider:r}}}async function Ff({api:e,requesterAppId:t,providerAppId:n}){let r=(await e.get(`/api/v1/apps/${t}/cross-app/connections`)).connections.find((e=>e.provider_app_id===n));if(!r)throw new T(\"Invalid connected app\");return{name:r.provider_app_name,logoUrl:r.provider_app_icon_url||void 0,apiUrl:r.provider_app_custom_api_url,readOnly:r.read_only}}const Bf=async({user:e,address:t,client:n,request:r,requesterAppId:a,reconnect:i})=>{n.createAnalyticsEvent({eventName:\"cross_app_request_started\",payload:{address:t,method:r.method}});let o=e?.linkedAccounts.find((e=>\"cross_app\"===e.type&&(e.embeddedWallets.some((e=>e.address===t))||e.smartWallets.some((e=>e.address===t)))));if(!e||!o)throw n.createAnalyticsEvent({eventName:\"cross_app_request_error\",payload:{error:\"Cannot request a signature with this wallet address\",address:t}}),new T(\"Cannot request a signature with this wallet address\");let s=n.getProviderAccessToken(o.providerApp.id),l=await Ff({api:n.api,requesterAppId:a,providerAppId:o.providerApp.id});if(!s){if(l.readOnly)throw console.error(\"cannot transact against a read-only provider app\"),new T(\"Cannot transact against a read-only provider app\");await i({appId:o.providerApp.id,action:\"link\"})&&(s=n.getProviderAccessToken(o.providerApp.id))}if(!s)throw n.createAnalyticsEvent({eventName:\"cross_app_request_error\",payload:{error:\"Transactions require a valid token\",address:t}}),new T(\"Transactions require a valid token\");let c=Gh();if(!c)throw n.createAnalyticsEvent({eventName:\"cross_app_request_error\",payload:{error:\"Missing token\",address:t}}),new T(\"Failed to initialize signature request\");let d=new URL(`${l.apiUrl}/oauth/transact`);return d.searchParams.set(\"token\",s||\"\"),d.searchParams.set(\"request\",zf(r)),c.location=d.href,new Promise(((e,a)=>{let i=setTimeout((()=>{d(),a(new T(\"Request timeout\")),n.createAnalyticsEvent({eventName:\"cross_app_request_error\",payload:{error:\"Request timeout\",address:t}})}),12e4),s=setInterval((()=>{c.closed&&(d(),a(new T(\"User rejected request\")),n.createAnalyticsEvent({eventName:\"cross_app_request_error\",payload:{error:\"User rejected request\",address:t}}))}),300),l=i=>{i.data&&(\"set\"===i.data.token?.action&&void 0!==i.data.token?.value?n.storeProviderAccessToken(o.providerApp.id,i.data.token.value):\"clear\"===i.data.token?.action&&n.storeProviderAccessToken(o.providerApp.id,null),\"PRIVY_CROSS_APP_ACTION_RESPONSE\"===i.data.type&&i.data.result&&(d(),e(i.data.result),n.createAnalyticsEvent({eventName:\"cross_app_request_success\",payload:{address:t,method:r.method}})),\"PRIVY_CROSS_APP_ACTION_ERROR\"===i.data.type&&i.data.error&&(d(),a(i.data.error),n.createAnalyticsEvent({eventName:\"cross_app_request_error\",payload:{error:i.data.error,address:t}})))};window.addEventListener(\"message\",l);let d=()=>{c.close(),clearInterval(s),clearTimeout(i),window.removeEventListener(\"message\",l)}}))};let zf=e=>JSON.stringify({content:{request:{request:Hf(e,_a)}},timestamp:Date.now(),callbackUrl:window.origin});const Hf=(e,t)=>\"bigint\"==typeof e?t(e):Array.isArray(e)?e.map((e=>Hf(e,t))):e&&\"object\"==typeof e?Object.fromEntries(Object.entries(e).map((([e,n])=>[e,Hf(n,t)]))):e,Vf=e=>!!e.fundingConfig&&ha(e.fundingConfig.options).length>=1;async function $f({url:e,popup:t,provider:n}){return t.location=e,new Promise(((e,n)=>{function r(){t?.close(),window.removeEventListener(\"message\",a)}function a(t){t.data&&(\"PRIVY_OAUTH_RESPONSE\"===t.data.type&&t.data.stateCode&&t.data.authorizationCode&&(e(t.data),r()),\"https://cdn.apple-cloudkit.com\"===t.origin&&t.data.ckSession&&(e({type:\"PRIVY_OAUTH_RESPONSE\",ckWebAuthToken:t.data.ckSession}),r()),\"PRIVY_OAUTH_ERROR\"===t.data.type&&(n(t.data.error),r()))}window.addEventListener(\"message\",a)}))}let jf,Gf,qf,Kf,Yf,Zf,Jf,Qf;function Xf(){return jf?jf.getCustomerAccessToken():Promise.resolve(Zr.get(Kn)||null)}async function ew(){return jf?jf.getAccessToken():Promise.resolve(Zr.get(Yn)||Zr.get(Kn)||null)}const tw=(e,t)=>Gf(e,t),nw=(e,t)=>qf(e,t),rw=(e,t)=>Kf(e,t),aw=(e,t)=>Yf(e,t),iw=()=>Zf(),ow=()=>Jf(),sw=({message:e,options:t})=>Qf({message:e,options:t}),lw=({config:e,...n})=>{var r;if(\"undefined\"!=typeof window&&0>[\"localhost\",\"127.0.0.1\"].indexOf(window.location.hostname)&&\"https:\"!==window.location.protocol)throw new T(\"Embedded wallet is only available over HTTPS\");if(\"string\"!=typeof(r=n.appId)||25!==r.length)throw new T(\"Cannot initialize the Privy provider with an invalid Privy app ID\");jf||(jf=new Hs({appId:n.appId,appClientId:n.clientId,apiUrl:n.apiUrl}));let a=Object.assign({},e);/*#__PURE__*/\nreturn t(Ur,{client:jf,clientConfig:a,children:/*#__PURE__*/t(pa,{children:/*#__PURE__*/t(cw,{...n,client:jf})})})};let cw=n=>{let a=n.client,d=ra();Pf();let[u,h]=s(!1),[p,m]=s(!1),[y,g]=s(!1),[f,w]=s(null),[k,I]=s([]),[N,x]=s([]),[S,R]=s([]),[O,W]=s(!1),[U,F]=s(null),[B,z]=s(!1),[H,V]=s({status:\"disconnected\",connectedWallet:null,connectError:null,connector:null,connectRetry:P}),[$,j]=s({status:\"initial\"}),[G,q]=s({status:\"initial\"}),[K,Y]=s({status:\"initial\"}),[J,Q]=s({status:\"initial\"}),[X,ee]=s({status:\"initial\"}),[te,ne]=s({status:\"initial\"}),[re,ae]=s(null),ie=dr(),oe=Fr(),[se,le]=s(!0),[ce,de]=s({}),[ue,he]=s(null),[pe,me]=s(null),[ye,ge]=s(!1),[fe,we]=s(!1),[ve,Ce]=s(ie.customAuth?.enabled?{status:\"initial\"}:{status:\"not-enabled\"}),Ee=l(null),Te=l(null),be=l(ma),[Ae,_e]=s(!1);a.onStoreCustomerAccessToken=e=>{e&&ya(be,\"accessToken\",\"onAccessTokenGranted\",{accessToken:e})},a.onDeleteCustomerAccessToken=()=>{w(null),g(!1),ya(be,\"accessToken\",\"onAccessTokenRemoved\")};let ke=l(null),Ie=l(null),Ne=l(!1),xe=({showWalletUIs:e})=>Ne.current?Ne.current:void 0!==e?!e:!ie.embeddedWallets.showWalletUIs,Se=e=>{F(e),setTimeout((()=>{h(!0)}),15)},Re=e=>{(\"off\"!==ie.embeddedWallets.ethereum.createOnLogin||\"off\"!==ie.embeddedWallets.solana.createOnLogin)&&le(!0),Se(e)};o((()=>{let e=[...Br(f),Lr(f)].filter((e=>!!e));re&&R(e.map((e=>({type:\"solana\",imported:e.imported,address:e.address,connectedAt:Date.now(),walletClientType:\"privy\",connectorType:\"embedded\",walletIndex:e.walletIndex??void 0,meta:{name:\"Privy Wallet\",icon:void 0,id:\"io.privy.solana.wallet\"},linked:!0,fund(){throw new T(\"'fund' is deprecated for Solana wallets - use 'fundWallet' instead\")},unlink:()=>{throw new T(\"Cannot unlink an embedded Solana wallet\")},getProvider:async()=>new Mf(re,e.address),async signMessage(t){let n=await ew();if(!n||!re)throw new T(\"Must have valid access token and Privy wallet to send transaction\",A.MUST_BE_AUTHENTICATED);let r=e.imported?Lr(f):wr(f);if(!r)throw new T(\"Attempting to sign a transaction without a root wallet\");let{entropyId:a,entropyIdVerifier:i}=jn(r);if(!await lt.recoverPrimaryWallet().catch((()=>!1)))throw new T(\"Wallet couldn't be connected\",A.UNKNOWN_CONNECT_WALLET_ERROR);if(!f)throw new T(\"Attempting to sign a transaction with no user initialized\");let{response:o}=await re.rpc({accessToken:n,entropyId:a,entropyIdVerifier:i,chainType:\"solana\",hdWalletIndex:e.walletIndex??0,request:{method:\"signMessage\",params:{message:Buffer.from(t).toString(\"base64\")}}});return Buffer.from(o.data.signature,\"base64\")},async sendTransaction(e,t,n){let{signature:r}=await Qe({transaction:e,connection:t,transactionOptions:n,wallet:this,signOnly:!1});return r},async signTransaction(t){let n=await ew();if(!n||!re)throw new T(\"Must have valid access token and Privy wallet to send transaction\",A.MUST_BE_AUTHENTICATED);if(!await lt.recoverPrimaryWallet().catch((()=>!1)))throw new T(\"Wallet couldn't be connected\",A.UNKNOWN_CONNECT_WALLET_ERROR);let r=e.imported?e:wr(f);if(!r)throw new T(\"Attempting to sign a transaction without a root wallet\");let{entropyId:a,entropyIdVerifier:i}=jn(r);return await xy({tx:t,accessToken:n,walletProxy:re,entropyId:a,entropyIdVerifier:i,transactingWalletAddress:e.address,transactingWalletIndex:e.walletIndex??0}),t},async signAllTransactions(t){let n=await ew();if(!n||!re)throw new T(\"Must have valid access token and Privy wallet to send transaction\",A.MUST_BE_AUTHENTICATED);if(!await lt.recoverPrimaryWallet().catch((()=>!1)))throw new T(\"Wallet couldn't be connected\",A.UNKNOWN_CONNECT_WALLET_ERROR);let r=e.imported?e:wr(f);if(!r)throw new T(\"Attempting to sign a transaction without a root wallet\");let{entropyId:a,entropyIdVerifier:i}=jn(r);for(let r of t)await xy({tx:r,accessToken:n,walletProxy:re,entropyId:a,entropyIdVerifier:i,transactingWalletAddress:e.address,transactingWalletIndex:e.walletIndex??0});return t},loginOrLink:async()=>{throw new T(\"Cannot login or link with an embedded Solana wallet\")},disconnect:()=>{},isConnected:async()=>!0}))))}),[re,f]),o((()=>{if(!f)return void a.connectors?.removeEmbeddedWalletConnectors();let e=yr(f),t=zr(f),r=Hr(f);e&&t.length||a.connectors?.removeEmbeddedWalletConnectors(),r||a.connectors?.removeImportedWalletConnector(),a.connectors?re?(e&&a.connectors.addEmbeddedWalletConnectors({walletProxy:re,rootWallet:e,embeddedWallets:t,defaultChain:ie.defaultChain,appId:n.appId}),r&&a.connectors.addImportedWalletConnector(re,r.address,ie.defaultChain,n.appId)):console.debug(\"Failed to add embedded wallet connector: Wallet proxy not initialized\"):console.debug(\"Failed to add embedded wallet connector: Client connectors not initialized\")}),[re,f]),o((()=>{re&&pe?.(re)}),[re]);let Oe=l();o((()=>{(async()=>{if(!ie.customAuth?.enabled)return void Ce({status:\"not-enabled\"});le(!0);let{getCustomAccessToken:e,isLoading:t}=ie.customAuth;if(p&&!t&&\"loading\"!==ve.status){Ce({status:\"loading\"});try{let t=await e();if(t===Oe.current)return void Ce({status:\"done\"});if(!t&&y)return Oe.current=t,await st.logout(),Ce({status:\"done\"}),void ya(be,\"customAuth\",\"onUnauthenticated\");if(!t)return Oe.current=t,void Ce({status:\"done\"});a.startAuthFlow(new wo(t));let{user:n,isNewUser:r}=await a.authenticate();if(!n)return await st.logout(),Ce({status:\"error\",error:new T(\"Failed to sync with custom auth provider\")}),void ya(be,\"customAuth\",\"onUnauthenticated\");void 0!==r&&ya(be,\"login\",\"onComplete\",{user:n,isNewUser:r,wasAlreadyAuthenticated:!1,loginMethod:\"custom\",loginAccount:null}),Oe.current=t,ya(be,\"customAuth\",\"onAuthenticated\",{user:n}),Ce({status:\"done\"}),w(n||null),W(r||!1),g(!0),we(!0)}catch(e){if(console.warn(e),await st.logout(),ya(be,\"customAuth\",\"onUnauthenticated\"),\"User already exists with provided custom JWT account.\"===e.message)return void Ce({status:\"initial\"});ya(be,\"login\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR),Ce({status:\"error\",error:e})}}})()}),[\"initial\"===ve.status,ie.customAuth?.enabled,ie.customAuth?.getCustomAccessToken,ie.customAuth?.isLoading,p,y]),o((()=>{fe&&re&&f&&(async()=>{let e=Wt(f,ie.embeddedWallets.ethereum.createOnLogin),t=Mt(f,ie.embeddedWallets.solana.createOnLogin),n=await ew();if(n){if(e&&t){let e=await $e(f,fr);return await re.createSolana({accessToken:n,ethereumAddress:e?.address}),void we(!1)}if(t)return await re.createSolana({accessToken:n,ethereumAddress:yr(f)?.address}),await lt.refreshSessionAndUser(),void we(!1);if(e)return await $e(f,fr),void we(!1)}})().catch(console.error)}),[fe&&re&&f]),o((()=>{if(ie.externalWallets.solana.connectors)return ie.externalWallets.solana.connectors.onMount(),()=>ie.externalWallets.solana.connectors?.onUnmount()}),[ie.externalWallets.solana.connectors]),o((()=>{!p&&oe&&async function(){let e,t=We(),n=Me(),i=r();a.initializeConnectorManager({walletConnectCloudProjectId:ie.walletConnectCloudProjectId,rpcConfig:ie.rpcConfig,chains:ie.chains,defaultChain:ie.defaultChain,store:i,walletList:ie.appearance.walletList,shouldEnforceDefaultChainOnConnect:ie.shouldEnforceDefaultChainOnConnect,externalWalletConfig:ie.externalWallets,appName:ie.name??\"Privy\",walletChainType:ie.appearance.walletChainType}),a.connectors?.on(\"connectorInitialized\",(()=>{e&&clearTimeout(e);let t=a.connectors.walletConnectors.length,n=a.connectors.walletConnectors.reduce(((e,t)=>e+(t.initialized?1:0)),0);n===t?_e(!0):e=setTimeout((()=>{console.debug({message:\"Unable to initialize all expected connectors before timeout\",initialized:n,expected:t}),_e(!0)}),1500)})),a.connectors?.initialize().then((()=>{Fe()}));let o=await a.getAuthenticatedUser(),s=!!o;ie.legal.requireUsersAcceptTerms&&o&&!o.hasAcceptedTerms?(await a.logout(),lt.setReadyToTrue(!0),ya(be,\"logout\",\"onSuccess\")):(ie.customAuth?.enabled||(g(!!o),o&&ya(be,\"login\",\"onComplete\",{user:o,isNewUser:!1,wasAlreadyAuthenticated:!0,loginMethod:null,loginAccount:null}),w(o)),t?Ie.current=s?\"link\":\"login\":n&&!s?(Ie.current=\"login\",de({telegramAuthModalData:{seamlessAuth:!0}}),Re(cr.TELEGRAM_AUTH_SCREEN)):lt.setReadyToTrue(!!o))}()}),[a,ue,p,oe]),o((()=>{if(p){if(!f||!f.linkedAccounts.find((e=>\"wallet\"===e.type&&\"privy\"===e.walletClientType)))return void ge(!0);ge([...k,...S].some((e=>\"privy\"===e.walletClientType)))}}),[p,f,k,S]),o((()=>{a.connectors?.setWalletList(ie.appearance.walletList)}),[ie.appearance.walletList.join()]);let We=()=>{let e=Ho();return e.inProgress&&e.popupFlow?window.opener.location.origin!==window.location.origin?void window.opener.postMessage({type:\"PRIVY_OAUTH_ERROR\",error:\"Origins between parent and child windows do not match.\"}):\"error\"===e.authorizationCode?void window.opener.postMessage({type:\"PRIVY_OAUTH_ERROR\",error:\"Something went wrong. Try again.\"}):void window.opener.postMessage({type:\"PRIVY_OAUTH_RESPONSE\",stateCode:e.stateCode,authorizationCode:e.authorizationCode}):(e.inProgress&&function(e){return e.startsWith(\"privy:\")}(e.provider)&&!e.popupFlow&&(new BroadcastChannel(Lf).postMessage({type:\"PRIVY_OAUTH_RESPONSE\",stateCode:e.stateCode,authorizationCode:e.authorizationCode}),window.close()),!!e.inProgress&&!!e.withPrivyUi&&(a.startAuthFlow(new No(e)),Re(cr.AWAITING_OAUTH_SCREEN),!0))},Me=()=>{let e=function(){let e;return(e=function(){let e=new URLSearchParams(window.location.search),t=Number(e.get(\"id\")||\"\"),n=e.get(\"hash\"),r=Number(e.get(\"auth_date\")||\"\"),a=e.get(\"first_name\");if(t&&a&&r&&n)return Object.fromEntries(e.entries())}())?(Zo(),{flowType:\"login-url\",authData:e}):(e=function(){let e=window.location.hash;if(!e||!e.startsWith(\"#tgWebAppData\"))return;let t=Yo(e.replace(\"#tgWebAppData=\",\"\")),{user:n,auth_date:r,hash:a}=t;return n&&r&&a?t:void 0}())?(Zo(),{flowType:\"web-app\",authData:e}):void 0}();if(!e||!ie.loginMethods.telegram||!ie.loginConfig.telegramAuthConfiguration?.seamlessAuthEnabled)return;let t=new qo;return a.startAuthFlow(t),\"login-url\"===e.flowType&&(t.meta.telegramWebAppData=void 0,t.meta.telegramAuthResult=e.authData),\"web-app\"===e.flowType&&(t.meta.telegramAuthResult=void 0,t.meta.telegramWebAppData=e.authData),!0},Pe=async(e,t,n,r)=>{if(\"solana_adapter\"!==e)Le(await(a.connectors?.createEthereumWalletConnector({connectorType:e,walletClientType:t}))||null,t,n,r);else{let e=a.connectors?.findSolanaWalletConnector(t);if(!e)return;Le(e,t,n,r)}};async function Le(e,t,n,r){if(!e)return V({status:\"disconnected\",connectedWallet:null,connectError:new _(\"Unable to connect to wallet.\"),connector:null,connectRetry:P}),r?.(null,n);V({status:\"disconnected\",connectedWallet:null,connectError:null,connector:e,connectRetry:P}),e instanceof nt&&t&&await e.resetConnection(t),V({connector:e,status:\"connecting\",connectedWallet:null,connectError:null,connectRetry:()=>Le(e,t,n,r)});try{let t=await e.connect({showPrompt:!0});if((!t||rt(t))&&ie.shouldEnforceDefaultChainOnConnect&&!ie.chains.find((e=>e.id===Number(t?.chainId.replace(\"eip155:\",\"\"))))&&(\"wallet_connect_v2\"!==t?.connectorType||\"metamask\"!==t?.walletClientType)){V((t=>({...t,connector:e,status:\"switching_to_supported_chain\",connectedWallet:null,connectError:null,connectRetry:P})));try{await(t?.switchChain(ie.defaultChain.id)),t&&(t.chainId=Wn(Ze(ie.defaultChain.id)))}catch{console.warn(`Unable to switch to default chain: ${ie.defaultChain.id}`)}}return V((e=>({...e,status:\"connected\",connectedWallet:t,connectError:null,connectRetry:P}))),t&&ya(be,\"connectWallet\",\"onSuccess\",{wallet:t}),r?.(t,n)}catch(e){return e instanceof M?(console.warn(e.cause?e.cause:e.message),ya(be,\"connectWallet\",\"onError\",e.privyErrorCode||A.GENERIC_CONNECT_WALLET_ERROR)):(console.warn(e),ya(be,\"connectWallet\",\"onError\",A.UNKNOWN_CONNECT_WALLET_ERROR)),V((t=>({...t,status:\"disconnected\",connectedWallet:null,connectError:e}))),r?.(null,n)}}let De=async(e,t,n)=>{if(null===e||!rt(e))return;let r=new at(e,a,t,n);a.startAuthFlow(r)},Ue=async(e,t,n)=>{if(null===e||!va(e))return;let r=new xn(e,a,t,n);a.startAuthFlow(r)},Fe=()=>{let e=new URLSearchParams(window.location.search),t=e.get(\"privy_connector\"),n=e.get(\"privy_wallet_client\"),r=\"true\"===e.get(\"privy_connect_only\");if(!t||!n)return;let i=As({connectorType:t,walletClientType:n});if(!i||!i.isInstalled)return Re(cr.LOGIN_FAILED_SCREEN);if(!a.connectors)throw new T(\"Connector not initialized\");Se(r?cr.AWAITING_CONNECT_ONLY_CONNECTION:cr.AWAITING_CONNECTION);let o=new URL(window.location.href);o.searchParams.delete(\"privy_connector\"),o.searchParams.delete(\"privy_wallet_client\"),o.searchParams.delete(\"privy_connect_only\"),window.history.pushState({},\"\",o),Pe(t,n,void 0,r?void 0:\"solana_adapter\"===t?Ue:De)};o((()=>{p&&y&&null===f&&a.getAuthenticatedUser().then(w)}),[p,y,f,a]);let Be=e=>{if(!y)throw ya(be,\"linkAccount\",\"onError\",A.MUST_BE_AUTHENTICATED,{linkMethod:e}),new T(\"User must be authenticated before linking an account.\")},ze=e=>{if(!y||!f)return!1;if(\"privy\"===e.walletClientType)return!0;for(let t of f.linkedAccounts)if(\"wallet\"===t.type&&t.address===e.address&&\"privy\"!==t.walletClientType)return!0;return!1},He=async e=>{let t;if(!a.connectors)throw new T(\"Connector not initialized\");t=\"ethereum\"===e.type?a.connectors.findWalletConnector(e.connectorType,e.walletClientType)||null:a.connectors.findSolanaWalletConnector(e.walletClientType)||null,V((n=>({...n,connector:t,status:\"connected\",connectedWallet:e,connectError:null,connectRetry:P}))),ie.captchaEnabled&&!y?(de({captchaModalData:{callback:t=>rt(e)?De(e,t):Ue(e,t),userIntentRequired:!1,onSuccessNavigateTo:cr.AWAITING_CONNECTION,onErrorNavigateTo:cr.ERROR_SCREEN}}),Re(cr.CAPTCHA_SCREEN)):(rt(e)?await De(e):await Ue(e),Re(cr.AWAITING_CONNECTION))},Ve=()=>{I((e=>{let t=a.connectors?.wallets.filter(rt).map((e=>({...e,linked:ze(e),loginOrLink:async()=>{if(!await e.isConnected())throw new T(\"Wallet is not connected\");if(\"embedded\"===e.connectorType&&\"privy\"===e.walletClientType)throw new T(\"Cannot link or login with embedded wallet\");He(e)},fund:async t=>{await lt.fundWallet(e.address,t)},unlink:async()=>{if(!y)throw new T(\"User is not authenticated.\");if(\"embedded\"===e.connectorType&&\"privy\"===e.walletClientType)throw new T(\"Cannot unlink an embedded wallet\");w(await a.unlinkEthereumWallet(e.address))}})))||[];return Mn(e,t)?e:t})),x((e=>{let t=(a.connectors?.wallets??[]).filter(va).map((e=>({...e,linked:ze(e),loginOrLink:async()=>{if(!await e.isConnected())throw new T(\"Wallet is not connected\");if(\"embedded\"===e.connectorType&&\"privy\"===e.walletClientType)throw new T(\"Cannot link or login with embedded wallet\");He(e)},fund:async()=>{throw new T(\"'fund' is deprecated for Solana wallets - use 'fundWallet' instead\")},unlink:async()=>{if(!y)throw new T(\"User is not authenticated.\");if(\"embedded\"===e.connectorType&&\"privy\"===e.walletClientType)throw new T(\"Cannot unlink an embedded wallet\");w(await a.unlinkSolanaWallet(e.address))}})));return Mn(e,t)?e:t}))};o((()=>{Ve()}),[f?.linkedAccounts,y,p]),o((()=>{if(p){if(!a.connectors)throw new T(\"Connector not initialized\");Ve(),a.connectors.on(\"walletsUpdated\",Ve)}}),[p]),o((()=>{[...ie.loginMethodsAndOrder?.primary??[],...ie.loginMethodsAndOrder?.overflow??[]].filter((e=>e.startsWith(\"privy:\"))).forEach((e=>a.getCrossAppProviderDetails(e.replace(\"privy:\",\"\"))))}),[!!a]);let $e=async(e,t,n)=>{let r=yr(e),a=gr(e);if(n&&\"walletIndex\"in n&&\"number\"==typeof n.walletIndex)return Ge(e,t,n.walletIndex,r,a);let i=n&&\"createAdditional\"in n&&n.createAdditional;if(r&&!i)throw ya(be,\"createWallet\",\"onError\",A.EMBEDDED_WALLET_ALREADY_EXISTS),Error(\"User already has an embedded wallet.\");let[o,s]=await Promise.all([lt.initializeWalletProxy(t),ew()]);if(!o&&ie.customAuth?.enabled)throw ya(be,\"createWallet\",\"onError\",A.UNKNOWN_EMBEDDED_WALLET_ERROR),Error(\"Failed to connect to wallet proxy\");if(!o||!s||ie.embeddedWallets?.requireUserOwnedRecoveryOnCreate)return je();if(!r)return a&&await lt.recoverPrimaryWallet(),await o.create({accessToken:s,solanaAddress:a?.address}),Ke(0,\"ethereum\");{let t=(Vr(e)?.walletIndex??0)+1,{entropyId:n,entropyIdVerifier:r}=jn(wr(e));return await lt.recoverPrimaryWallet(),await o.addWallet({accessToken:s,entropyId:n,entropyIdVerifier:r,chainType:\"ethereum\",hdWalletIndex:t}),Ke(t,\"ethereum\")}},je=async()=>new Promise(((e,t)=>{le(!0),de({createWallet:{onSuccess:t=>{ya(be,\"createWallet\",\"onSuccess\",{wallet:t}),e(t)},onFailure:e=>{ya(be,\"createWallet\",\"onError\",A.UNKNOWN_EMBEDDED_WALLET_ERROR),t(e)},callAuthOnSuccessOnClose:!1}}),Se(cr.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)})),Ge=async(e,t,n,r,a)=>{if(n<0)throw ya(be,\"createWallet\",\"onError\",A.EMBEDDED_WALLET_CREATE_ERROR),Error(`A negative walletIndex (${n}) is invalid.`);let[i,o]=await Promise.all([lt.initializeWalletProxy(t),ew()]);if(!i&&ie.customAuth?.enabled)throw ya(be,\"createWallet\",\"onError\",A.UNKNOWN_EMBEDDED_WALLET_ERROR),Error(\"Failed to connect to wallet proxy\");if(!i||!o||ie.embeddedWallets?.requireUserOwnedRecoveryOnCreate){if(0==n)return je();throw ya(be,\"createWallet\",\"onError\",A.UNKNOWN_EMBEDDED_WALLET_ERROR),Error(\"Create wallet UI can only be displayed when walletIndex is 0.\")}if(0==n){if(r)return r;await i.create({accessToken:o,solanaAddress:a?.address})}else{if(!r)throw ya(be,\"createWallet\",\"onError\",A.EMBEDDED_WALLET_CREATE_ERROR),Error(\"A user must have a wallet at HD index 0 before creating a wallet at greater HD indices.\");let t=zr(e).find((e=>e.walletIndex===n));if(t)return t;let{entropyId:a,entropyIdVerifier:s}=jn(wr(e));await lt.recoverPrimaryWallet(),await i.addWallet({accessToken:o,entropyId:a,entropyIdVerifier:s,chainType:\"ethereum\",hdWalletIndex:n})}return Ke(n,\"ethereum\")},qe=async({user:e,wp:t,accessToken:n,walletIndex:r,ethereumWallet:a})=>{let i=Br(e).find((e=>e.walletIndex===r));if(i)return i;if(0===r)a&&await lt.recoverPrimaryWallet(),await t.createSolana({accessToken:n,ethereumAddress:a?.address});else{let a=wr(e);if(!a)throw ya(be,\"createWallet\",\"onError\",A.EMBEDDED_WALLET_CREATE_ERROR),Error(\"User must have a wallet at HD index 0 before creating a wallet at greater HD indices.\");let{entropyId:i,entropyIdVerifier:o}=jn(a);await lt.recoverPrimaryWallet(),await t.addWallet({accessToken:n,entropyId:i,entropyIdVerifier:o,chainType:\"solana\",hdWalletIndex:r})}return Ke(r,\"solana\")},Ke=async(e,t)=>{let n=await lt.refreshSessionAndUser(),r=(\"ethereum\"===t?zr(n):Br(n)).find((t=>t.walletIndex===e));if(!r)throw ya(be,\"createWallet\",\"onError\",A.UNKNOWN_EMBEDDED_WALLET_ERROR),Error(\"Failed to create wallet\");return ya(be,\"createWallet\",\"onSuccess\",{wallet:r}),r},Ye=({transaction:e,uiOptions:t,fundWalletConfig:r,address:a,signOnly:i})=>new Promise((async(o,s)=>{let{requesterAppId:l}=t||{},c=i?\"signTransaction\":\"sendTransaction\";if(!y||!f)return ya(be,c,\"onError\",A.MUST_BE_AUTHENTICATED),void s(Error(\"User must be authenticated before signing with a Privy wallet\"));let d=a??yr(f)?.address;if(!d)throw new T(\"User must have an embedded wallet to send a transaction.\");let{signingWallet:u,rootWallet:h}=$r(f,d);if(!h||!u)return ya(be,c,\"onError\",A.EMBEDDED_WALLET_NOT_FOUND),void s(Error(\"Must have a Privy wallet before signing\"));le(!0);let p=ct.wallets.find((e=>\"privy\"===e.walletClientType&&C(e.address)===C(u.address))),m=await(p?.getEthereumProvider());if(!p||!m)throw new T(`Cannot sendTransaction before embedded wallet ${u.address} is connected`);let g=e.chainId?Number(e.chainId):Ca(p.chainId);(e=>{if(!ie.chains.map((e=>e.id)).includes(e))throw new _(`Chain ID ${e} is not supported. It must be added to the config.supportedChains property of the PrivyProvider.`,A.UNSUPPORTED_CHAIN_ID)})(g);let w={...e,from:e.from??u.address,chainId:g},v=await ew();if(!v||!re)return ya(be,c,\"onError\",A.EMBEDDED_WALLET_NOT_FOUND),void s(Error(\"Must have valid access token and Privy wallet to send transaction\"));let E=Fa(w.chainId,ie.chains,ie.rpcConfig,{appId:n.appId});if(xe({showWalletUIs:t?.showWalletUIs}))(async()=>{try{if(!await lt.recoverPrimaryWallet())return ya(be,c,\"onError\",A.UNKNOWN_CONNECT_WALLET_ERROR),void s(Error(\"Unable to connect to wallet\"));let e=await sy(w,E,w.from),{entropyId:t,entropyIdVerifier:n}=jn(h),r=i?await vg({accessToken:v,entropyId:t,entropyIdVerifier:n,transactingWallet:u,walletProxy:re,transactionRequest:w,requesterAppId:l}):await wg({accessToken:v,entropyId:t,entropyIdVerifier:n,transactingWallet:u,walletProxy:re,transactionRequest:e,publicClient:E,requesterAppId:l});i?ya(be,\"signTransaction\",\"onSuccess\",{signature:r}):ya(be,\"sendTransaction\",\"onSuccess\",{hash:r}),o({hash:r})}catch(e){ya(be,c,\"onError\",A.TRANSACTION_FAILURE),s(e)}})();else{let{entropyId:e,entropyIdVerifier:n}=jn(h),a={entropyId:e,entropyIdVerifier:n,onCompleteNavigateTo:cr.EMBEDDED_WALLET_SEND_TRANSACTION_SCREEN,onFailure:e=>{ya(be,c,\"onError\",A.UNKNOWN_CONNECT_WALLET_ERROR),s(e)}},d=Vf(ie)?fa({address:u.address,appConfig:ie,fundWalletConfig:r,methodScreen:cr.FUNDING_METHOD_SELECTION_SCREEN,chainIdOverride:w.chainId,comingFromSendTransactionScreen:!0}):void 0;de({connectWallet:a,sendTransaction:{transactionRequest:w,transactingWallet:u,entropyId:e,entropyIdVerifier:n,signOnly:i,onConfirm:i?async()=>await vg({accessToken:v,entropyId:e,entropyIdVerifier:n,transactingWallet:u,walletProxy:re,transactionRequest:w,requesterAppId:l}):void 0,onSuccess:e=>{i?ya(be,\"signTransaction\",\"onSuccess\",{signature:e.hash}):ya(be,\"sendTransaction\",\"onSuccess\",{hash:e.hash}),o(e)},onFailure:e=>{ya(be,c,\"onError\",A.TRANSACTION_FAILURE),s(e)},uiOptions:t||{},fundWalletConfig:r,requesterAppId:l},funding:d}),Se(cr.EMBEDDED_WALLET_CONNECTING_SCREEN)}})),Qe=({transaction:e,connection:t,transactionOptions:n,fundWalletConfig:r,uiOptions:a,wallet:i,signOnly:o})=>new Promise((async(s,l)=>{let{requesterAppId:c}=a||{},d=o?\"signSolanaTransaction\":\"sendSolanaTransaction\";if(!y||!f)return ya(be,d,\"onError\",A.MUST_BE_AUTHENTICATED),void l(new T(\"User must be authenticated before signing with a Privy wallet\",A.MUST_BE_AUTHENTICATED));let u=i?f.linkedAccounts.find((e=>\"wallet\"===e.type&&e.address===i.address)):gr(f);if(!u)return ya(be,d,\"onError\",A.EMBEDDED_WALLET_NOT_FOUND),void l(new T(\"Must have a Privy wallet before signing\",A.EMBEDDED_WALLET_NOT_FOUND));le(!0);let{rootWallet:h}=Dr(f,u.address);if(!await lt.recoverPrimaryWallet().catch((()=>!1))||!h)throw ya(be,d,\"onError\",A.EMBEDDED_WALLET_NOT_FOUND),new T(`Cannot sendSolanaTransaction before embedded wallet ${u.address} is connected`,A.EMBEDDED_WALLET_NOT_FOUND);if(xe({showWalletUIs:a?.showWalletUIs}))(async()=>{let r=await ew();if(!r||!re)return ya(be,d,\"onError\",A.EMBEDDED_WALLET_NOT_FOUND),void l(new T(\"Must have valid access token and Privy wallet to send transaction\",A.EMBEDDED_WALLET_NOT_FOUND));try{let i;if(!await lt.recoverPrimaryWallet())return ya(be,d,\"onError\",A.UNKNOWN_CONNECT_WALLET_ERROR),void l(new T(\"Unable to connect to wallet\",A.UNKNOWN_CONNECT_WALLET_ERROR));if(xe({showWalletUIs:a?.showWalletUIs})&&!o)try{if(!await async function(e,t){let{value:n}=await t.simulateTransaction(e);if(\"BlockhashNotFound\"===n.err)throw Error(\"Simulation failed: Blockhash not found\");return null==n.err&&n.logs?.every((e=>!/insufficient funds/gi.test(e)))}(e,t))return ya(be,d,\"onError\",A.INSUFFICIENT_BALANCE),void l(new T(\"Solana wallet has insufficient funds for this transaction.\",A.INSUFFICIENT_BALANCE))}catch(e){return console.error(e),ya(be,d,\"onError\",A.TRANSACTION_FAILURE),void l(new T(e instanceof Error?e.message:\"Transaction failed.\",A.TRANSACTION_FAILURE))}let{entropyId:c,entropyIdVerifier:h}=Kr(f);if(o)await xy({accessToken:r,tx:e,walletProxy:re,entropyId:c,entropyIdVerifier:h,transactingWalletAddress:u.address,transactingWalletIndex:u.walletIndex??0}),i=Pu(\"\",e,null),ya(be,\"signSolanaTransaction\",\"onSuccess\",{signedTransaction:e});else{let{signature:a,receipt:o}=await Sy({accessToken:r,tx:e,connection:t,walletProxy:re,transactionOptions:n,entropyId:c,entropyIdVerifier:h,transactingWalletAddress:u.address,transactingWalletIndex:u.walletIndex??0});i=Pu(a,e,o),ya(be,\"sendSolanaTransaction\",\"onSuccess\",{response:i})}s(i)}catch(e){ya(be,d,\"onError\",A.TRANSACTION_FAILURE),l(e)}})();else{let{entropyId:i,entropyIdVerifier:p}=jn(h),m={entropyId:i,entropyIdVerifier:p,onCompleteNavigateTo:cr.EMBEDDED_WALLET_SEND_SOLANA_TRANSACTION_SCREEN,onFailure:e=>{ya(be,d,\"onError\",A.UNKNOWN_CONNECT_WALLET_ERROR),l(e)}},y=Vf(ie)?ga({address:u.address,appConfig:ie,methodScreen:cr.FUNDING_METHOD_SELECTION_SCREEN,fundWalletConfig:r,comingFromSendTransactionScreen:!0}):void 0;de({connectWallet:m,sendSolanaTransaction:{transactionRequest:e,connection:t,transactionOptions:n,transactingWallet:u,onSuccess:e=>{o?ya(be,\"signSolanaTransaction\",\"onSuccess\",{signedTransaction:e.signedTransaction}):ya(be,\"sendSolanaTransaction\",\"onSuccess\",{response:e}),s(e)},onFailure:e=>{ya(be,d,\"onError\",A.TRANSACTION_FAILURE),l(e)},uiOptions:a||{},requesterAppId:c,signOnly:o},funding:y}),Se(cr.EMBEDDED_WALLET_CONNECTING_SCREEN)}}));function Xe(){return new Promise((async(e,t)=>{let n=await ew();if(!n||!re)throw Error(\"Must have valid access token to enroll in MFA\");try{await re.verifyMfa({accessToken:n}),e()}catch(e){t(e)}}))}let et=e=>e?.linkedAccounts.filter((e=>null!==e.latestVerifiedAt&&!(\"wallet\"===e.type&&\"privy\"===e.walletClientType))).sort(((e,t)=>t.latestVerifiedAt.getTime()-e.latestVerifiedAt.getTime()))[0],tt=e=>{let t=f?.linkedAccounts.filter((t=>t.type===e)).length??0,{displayName:n,loginMethod:r}=fp(e);if(\"passkey\"===e&&t>=5||\"passkey\"!==e&&t>=1)throw ya(be,\"linkAccount\",\"onError\",A.CANNOT_LINK_MORE_OF_TYPE,{linkMethod:r}),new T(`User already has an account of type ${n} linked.`)};async function it({showAutomaticRecovery:e=!1,legacySetWalletPasswordFlow:t=!1}){F(null);let n=t?\"setWalletPassword\":\"setWalletRecovery\";if(!y||!f)throw ya(be,n,\"onError\",A.MUST_BE_AUTHENTICATED),Error(\"User must be authenticated before adding recovery method to Privy wallet\");let r=wr(f);if(!r||!re)throw ya(be,n,\"onError\",A.EMBEDDED_WALLET_NOT_FOUND),Error(\"Must have a Privy wallet to add a recovery method\");try{await Xe()}catch(e){throw ya(be,n,\"onError\",A.MISSING_MFA_CREDENTIALS),e}return new Promise(((a,i)=>{le(!0);let o={onSuccess:e=>{ya(be,n,\"onSuccess\",{method:\"user-passcode\",wallet:e}),a(e)},onFailure:e=>{ya(be,n,\"onError\",A.USER_EXITED_SET_PASSWORD_FLOW),i(e)},callAuthOnSuccessOnClose:!1},s=\"user-passcode\"===r.recoveryMethod,l=Gc({walletAction:\"update\",availableRecoveryMethods:ie.embeddedWallets.userOwnedRecoveryOptions,legacySetWalletPasswordFlow:t,isResettingPassword:s,showAutomaticRecovery:e}),{entropyId:c,entropyIdVerifier:d}=jn(r);de({setWalletPassword:o,recoverWallet:{entropyId:c,entropyIdVerifier:d,onFailure:i},createWallet:o,connectWallet:{onCompleteNavigateTo:l,shouldForceMFA:!1,entropyId:c,entropyIdVerifier:d,onFailure:e=>{ya(be,n,\"onError\",A.UNKNOWN_CONNECT_WALLET_ERROR),i(e)}},recoverySelection:{isInAccountCreateFlow:!1,isResettingPassword:s}}),Se(cr.EMBEDDED_WALLET_CONNECTING_SCREEN)}))}async function ot({appId:e,action:t}){let n=await ew();if(\"link\"===t&&!n)throw ya(be,\"linkAccount\",\"onError\",A.MUST_BE_AUTHENTICATED,{linkMethod:`privy:${e}`}),new T(\"User must be authenticated before linking an account.\");if(\"login\"===t&&n)throw ya(be,\"login\",\"onError\",A.UNKNOWN_AUTH_ERROR),new T(\"Attempted to log in, but user is already logged in. Use a `link` helper instead.\");ke.current=`privy:${e}`,Ie.current=t;let r=Gh();return a.createAnalyticsEvent({eventName:\"cross_app_auth_started\",payload:{providerAppId:e}}),new Promise((async(n,i)=>{let{name:o,logoUrl:s}=await Ff({api:a.api,providerAppId:e,requesterAppId:ie.id});de({crossAppAuth:{appId:e,name:o,logoUrl:s,action:t,popup:r,onSuccess:n,onError:i}}),Re(cr.CROSS_APP_AUTH_SCREEN)}))}let st={ready:p,authenticated:y,user:f,walletConnectors:a.connectors||null,connectWallet:e=>{e&&\"target\"in e&&e&&(e=void 0),de({externalConnectWallet:{walletList:e?.walletList&&e?.walletList.length>0?e.walletList:void 0,suggestedAddress:e?.suggestedAddress,walletChainType:e?.walletChainType}}),Se(y?cr.CONNECT_ONLY_AUTHENTICATED_SCREEN:cr.CONNECT_ONLY_LANDING_SCREEN)},linkWallet:e=>{e&&\"target\"in e&&e&&(e=void 0),Be(\"siwe\"),ke.current=\"siwe\",Ie.current=\"link\",de({...ce,externalConnectWallet:{...ce.externalConnectWallet,suggestedAddress:e?.suggestedAddress,walletList:e?.walletList,walletChainType:e?.walletChainType}}),Se(cr.LINK_WALLET_SCREEN)},startCrossAppAuthFlow:ot,linkEmail:()=>{Be(\"email\"),tt(\"email\"),ke.current=\"email\",Ie.current=\"link\",Se(cr.LINK_EMAIL_SCREEN)},linkPhone:()=>{Be(\"sms\"),tt(\"phone\"),ke.current=\"sms\",Ie.current=\"link\",Se(cr.LINK_PHONE_SCREEN)},linkGoogle:async()=>{Be(\"google\"),tt(\"google_oauth\"),Ie.current=\"link\",await lt.initLoginWithOAuth(\"google\")},linkTwitter:async()=>{Be(\"twitter\"),tt(\"twitter_oauth\"),Ie.current=\"link\",await lt.initLoginWithOAuth(\"twitter\")},linkDiscord:async()=>{Be(\"discord\"),tt(\"discord_oauth\"),Ie.current=\"link\",await lt.initLoginWithOAuth(\"discord\")},linkGithub:async()=>{Be(\"github\"),tt(\"github_oauth\"),Ie.current=\"link\",await lt.initLoginWithOAuth(\"github\")},linkSpotify:async()=>{Be(\"spotify\"),tt(\"spotify_oauth\"),Ie.current=\"link\",await lt.initLoginWithOAuth(\"spotify\")},linkInstagram:async()=>{Be(\"instagram\"),tt(\"instagram_oauth\"),Ie.current=\"link\",await lt.initLoginWithOAuth(\"instagram\")},linkTiktok:async()=>{Be(\"tiktok\"),tt(\"tiktok_oauth\"),Ie.current=\"link\",await lt.initLoginWithOAuth(\"tiktok\")},linkLinkedIn:async()=>{Be(\"linkedin\"),tt(\"linkedin_oauth\"),Ie.current=\"link\",await lt.initLoginWithOAuth(\"linkedin\")},linkApple:async()=>{Be(\"apple\"),tt(\"apple_oauth\"),Ie.current=\"link\",await lt.initLoginWithOAuth(\"apple\")},linkPasskey:async()=>{Be(\"passkey\"),tt(\"passkey\"),await lt.initLinkWithPasskey(),Se(cr.LINK_PASSKEY_SCREEN)},linkTelegram:async e=>{if(Be(\"telegram\"),tt(\"telegram\"),Ie.current=\"link\",ke.current=\"telegram\",e?.launchParams)if(e.launchParams.initDataRaw){let t=new qo;a.startAuthFlow(t),t.meta.telegramAuthResult=void 0,t.meta.telegramWebAppData=Yo(e.launchParams.initDataRaw),de({telegramAuthModalData:{seamlessAuth:!0}}),Re(cr.TELEGRAM_AUTH_SCREEN)}else ya(be,\"linkAccount\",\"onError\",A.INVALID_DATA,{linkMethod:\"telegram\"});else await lt.initLoginWithTelegram();Se(cr.TELEGRAM_AUTH_SCREEN)},linkFarcaster:async()=>{Be(\"farcaster\"),tt(\"farcaster\"),await lt.initLoginWithFarcaster(),Ie.current=\"link\",ke.current=\"farcaster\",Se(cr.AWAITING_FARCASTER_CONNECTION)},updateEmail:()=>{if(Be(\"email\"),!f?.email)throw new T(\"User does not have an email linked to their account.\");Ie.current=\"update\",ke.current=\"email\",Se(cr.UPDATE_EMAIL_SCREEN)},updatePhone:()=>{if(Be(\"sms\"),!f?.phone)throw new T(\"User does not have a phone number linked to their account.\");Ie.current=\"update\",ke.current=\"sms\",Se(cr.UPDATE_PHONE_SCREEN)},login:async e=>{e&&\"target\"in e&&e&&(e=void 0);let t=\"Attempted to log in, but user is already logged in. Use a `link` helper instead.\";if(!p){let e=await new Promise((e=>{he((t=>e.bind(t)))}));if(he(null),e)return void console.warn(t)}!f||f.isGuest?(Ie.current=\"login\",de({login:e}),Re(cr.LANDING)):console.warn(t)},connectOrCreateWallet:async()=>{p||(await new Promise((e=>{he((()=>e))})),he(null)),y?console.warn(\"User must be unauthenticated to `connectOrCreateWallet`\"):(Ie.current=\"login\",Re(cr.CONNECT_OR_CREATE))},logout:async()=>{if(Ie.current=null,ke.current=null,f&&a.clearProviderAcccessTokens(f),F(null),await a.logout(),f&&re)try{await re.clearMfa({userId:f.id})}catch(e){}w(null),g(!1),ya(be,\"logout\",\"onSuccess\"),h(!1),Zr.del(sr),Zr.del(Dn(ie.id))},getAccessToken:c((()=>a.getCustomerAccessToken()),[a]),unlinkWallet:async e=>{let t;return w(t=e.startsWith(\"0x\")?await a.unlinkEthereumWallet(e):await a.unlinkSolanaWallet(e)),t},unlinkEmail:async e=>{let t=await a.unlinkEmail(e);return w(t),t},unlinkPhone:async e=>{let t=await a.unlinkPhone(e);return w(t),t},unlinkGoogle:async e=>{let t=await a.unlinkOAuth(\"google\",e);return w(t),t},unlinkTwitter:async e=>{let t=await a.unlinkOAuth(\"twitter\",e);return w(t),t},unlinkDiscord:async e=>{let t=await a.unlinkOAuth(\"discord\",e);return w(t),t},unlinkGithub:async e=>{let t=await a.unlinkOAuth(\"github\",e);return w(t),t},unlinkSpotify:async e=>{let t=await a.unlinkOAuth(\"spotify\",e);return w(t),t},unlinkInstagram:async e=>{let t=await a.unlinkOAuth(\"instagram\",e);return w(t),t},unlinkTiktok:async e=>{let t=await a.unlinkOAuth(\"tiktok\",e);return w(t),t},unlinkLinkedIn:async e=>{let t=await a.unlinkOAuth(\"linkedin\",e);return w(t),t},unlinkApple:async e=>{let t=await a.unlinkOAuth(\"apple\",e);return w(t),t},unlinkFarcaster:async e=>{let t=await a.unlinkFarcaster(e);return w(t),t},unlinkTelegram:async e=>{let t=await a.unlinkTelegram(e);return w(t),t},unlinkPasskey:async e=>{let t=await ew();if(!t)throw Error(\"Must have valid access token to enroll in MFA\");if(!re)throw Error(\"Wallet proxy not initialized.\");let n=ie.passkeys.shouldUnenrollMfaOnUnlink;await re.unlinkPasskeyAccount({credentialId:e,accessToken:t,removeAsMfa:n});let r=await a.getAuthenticatedUser();return w(r),r},unlinkCrossAppAccount:async({subject:e})=>{let t=f?.linkedAccounts.find((t=>\"cross_app\"===t.type&&t.subject===e))?.providerApp;if(!t)throw new T(\"Invalid subject\");a.storeProviderAccessToken(t.id,null);let n=await a.unlinkOAuth(`privy:${t.id}`,e);return w(n),n},createWallet:async e=>{e&&\"target\"in e&&e&&(e=void 0);let t=await lt.refreshSessionAndUser();if(!t)throw ya(be,\"createWallet\",\"onError\",A.MUST_BE_AUTHENTICATED),Error(\"User must be authenticated before creating a Privy wallet\");return $e(t,15e3,e)},setWalletRecovery:async e=>it({legacySetWalletPasswordFlow:!1,showAutomaticRecovery:e?.showAutomaticRecovery??!1}),setWalletPassword:async()=>it({legacySetWalletPasswordFlow:!0,showAutomaticRecovery:!1}),signMessage:(e,t)=>new Promise((async(n,r)=>{let{requesterAppId:i}=t?.uiOptions||{},o=e.message;if(!y||!f)return ya(be,\"signMessage\",\"onError\",A.MUST_BE_AUTHENTICATED),void r(Error(\"User must be authenticated before signing with a Privy wallet\"));let s=t?.address??yr(f)?.address;if(!s)throw new T(\"User must have an embedded wallet to sign a message.\");let{signingWallet:l,rootWallet:c}=$r(f,s);if(!l||!c)return ya(be,\"signMessage\",\"onError\",A.EMBEDDED_WALLET_NOT_FOUND),void r(Error(\"Must have a Privy wallet before signing\"));if(\"string\"!=typeof o||o.length<1)return ya(be,\"signMessage\",\"onError\",A.INVALID_MESSAGE),void r(Error(\"Message must be a non-empty string\"));le(!0);let d=async()=>{if(!y)throw Error(\"User must be authenticated before signing with a Privy wallet\");let e=await ew();if(!re||!e||!await lt.recoverPrimaryWallet())throw Error(\"Unable to connect to wallet\");a.createAnalyticsEvent({eventName:\"embedded_wallet_sign_message_started\",payload:{walletAddress:l.address,requesterAppId:i}});let{entropyId:t,entropyIdVerifier:n}=jn(c),{response:r}=await re.rpc({accessToken:e,entropyId:t,entropyIdVerifier:n,chainType:\"ethereum\",hdWalletIndex:l.walletIndex??0,requesterAppId:i,request:{method:\"personal_sign\",params:[o,l.address]}}),s=r.data;return a.createAnalyticsEvent({eventName:\"embedded_wallet_sign_message_completed\",payload:{walletAddress:l.address,requesterAppId:i}}),s};if(xe({showWalletUIs:t?.uiOptions?.showWalletUIs}))try{let e=await d();ya(be,\"signMessage\",\"onSuccess\",{signature:e}),n({signature:e})}catch(e){ya(be,\"signMessage\",\"onError\",A.UNABLE_TO_SIGN),r(e??new ca(\"Unable to sign message\"))}else{let e={method:\"personal_sign\",data:o,confirmAndSign:d,onSuccess:e=>{ya(be,\"signMessage\",\"onSuccess\",{signature:e}),n({signature:e})},onFailure:e=>{ya(be,\"signMessage\",\"onError\",A.UNABLE_TO_SIGN),r(e)},uiOptions:t?.uiOptions||{}},{entropyId:a,entropyIdVerifier:i}=jn(c);de({signMessage:e,connectWallet:{entropyId:a,entropyIdVerifier:i,onCompleteNavigateTo:cr.EMBEDDED_WALLET_SIGN_REQUEST_SCREEN,onFailure:e=>{ya(be,\"signMessage\",\"onError\",A.UNKNOWN_CONNECT_WALLET_ERROR),r(e)}}}),Se(cr.EMBEDDED_WALLET_CONNECTING_SCREEN)}})),signTypedData:(e,t)=>new Promise((async(n,r)=>{let{requesterAppId:i}=t?.uiOptions||{};if(!y||!f)return ya(be,\"signTypedData\",\"onError\",A.MUST_BE_AUTHENTICATED),void r(Error(\"User must be authenticated before signing with a Privy wallet\"));let o=t?.address??yr(f)?.address;if(!o)throw new T(\"User must have an embedded wallet to sign a message.\");let{signingWallet:s,rootWallet:l}=$r(f,o);if(!l||!s)return ya(be,\"signTypedData\",\"onError\",A.EMBEDDED_WALLET_NOT_FOUND),void r(Error(\"Must have a Privy wallet before signing\"));le(!0);let c=Je(e),d=async()=>{if(!y)throw Error(\"User must be authenticated before signing with a Privy wallet\");let e=await ew();if(!re||!e||!await lt.recoverPrimaryWallet())throw Error(\"Unable to connect to wallet\");a.createAnalyticsEvent({eventName:\"embedded_wallet_sign_typed_data_started\",payload:{walletAddress:s.address,requesterAppId:i}});let{entropyId:t,entropyIdVerifier:n}=jn(l),{response:r}=await re.rpc({accessToken:e,entropyId:t,entropyIdVerifier:n,chainType:\"ethereum\",hdWalletIndex:s.walletIndex??0,requesterAppId:i,request:{method:\"eth_signTypedData_v4\",params:[s.address,c]}}),o=r.data;return a.createAnalyticsEvent({eventName:\"embedded_wallet_sign_typed_data_completed\",payload:{walletAddress:s.address,requesterAppId:i}}),o};if(xe({showWalletUIs:t?.uiOptions?.showWalletUIs}))try{let e=await d();ya(be,\"signTypedData\",\"onSuccess\",{signature:e}),n({signature:e})}catch(e){ya(be,\"signTypedData\",\"onError\",A.UNABLE_TO_SIGN),r(e??new ca(\"Unable to sign message\"))}else{let e={method:\"eth_signTypedData_v4\",data:c,confirmAndSign:d,onSuccess:e=>{ya(be,\"signTypedData\",\"onSuccess\",{signature:e}),n({signature:e})},onFailure:e=>{ya(be,\"signTypedData\",\"onError\",A.UNABLE_TO_SIGN),r(e)},uiOptions:t?.uiOptions||{}},{entropyId:a,entropyIdVerifier:i}=jn(l);de({signMessage:e,connectWallet:{entropyId:a,entropyIdVerifier:i,onCompleteNavigateTo:cr.EMBEDDED_WALLET_SIGN_REQUEST_SCREEN,onFailure:e=>{ya(be,\"signMessage\",\"onError\",A.UNKNOWN_CONNECT_WALLET_ERROR),r(e)}}}),Se(cr.EMBEDDED_WALLET_CONNECTING_SCREEN)}})),sendTransaction:async(e,t)=>await Ye({transaction:e,uiOptions:t?.uiOptions,fundWalletConfig:t?.fundWalletConfig,address:t?.address,signOnly:!1}),signTransaction:async(e,t)=>({signature:(await Ye({transaction:e,uiOptions:t?.uiOptions,address:t?.address,signOnly:!0})).hash}),exportWallet:e=>new Promise((async(t,r)=>{if(!y||!f)return void r(Error(\"User must be authenticated before exporting their Privy wallet\"));e&&\"target\"in e&&e&&(e=void 0);let i=e?.address??yr(f)?.address;if(!i)return void r(Error(\"User does not have an HD Ethereum wallet. To export an imported wallet, pass the `address` of the wallet to `exportWallet`.\"));if(!E(i))return void r(Error(\"Must provide a valid Ethereum address.\"));let{signingWallet:o,rootWallet:s}=$r(f,i);if(!o||!s)return void r(Error(\"Must have a Privy wallet before exporting\"));le(!0);let{entropyId:l,entropyIdVerifier:c}=jn(s),d={entropyId:l,entropyIdVerifier:c,onCompleteNavigateTo:cr.EMBEDDED_WALLET_KEY_EXPORT_SCREEN,onFailure:r,shouldForceMFA:!0};de(ce),await ew()&&re?re?(de({keyExport:{appId:n.appId,appClientId:n.clientId,origin:a.apiUrl,walletToExport:o,primaryWallet:s,onSuccess:t,onFailure:r},connectWallet:d}),Se(cr.EMBEDDED_WALLET_CONNECTING_SCREEN)):r(Error(\"Must have a Privy wallet before exporting\")):r(Error(\"Must have valid access token to enroll in MFA\"))})),promptMfa:Xe,async init(e){switch(e){case\"sms\":return void await a.initMfaSmsVerification();case\"passkey\":return await a.initMfaPasskeyVerification();case\"totp\":return;default:throw Error(`Unsupported MFA method: ${e}`)}},async submit(e,t){switch(e){case\"totp\":case\"sms\":if(\"string\"!=typeof t)throw new T(\"Invalid MFA code\");Ee.current?.resolve({mfaMethod:e,mfaCode:t,relyingParty:window.origin}),await new Promise(((e,t)=>{Te.current={resolve:e,reject:t}}));break;case\"passkey\":if(\"string\"==typeof t)throw new T(\"Invalid authenticator response\");let n=await import(\"@simplewebauthn/browser\"),r=(e=>({id:e.id,raw_id:e.rawId,response:{client_data_json:e.response.clientDataJSON,authenticator_data:e.response.authenticatorData,signature:e.response.signature,user_handle:e.response.userHandle},authenticator_attachment:e.authenticatorAttachment,client_extension_results:{app_id:e.clientExtensionResults.appid,cred_props:e.clientExtensionResults.credProps,hmac_create_secret:e.clientExtensionResults.hmacCreateSecret},type:e.type}))(await n.startAuthentication(t));Ee.current?.resolve({mfaMethod:e,mfaCode:r,relyingParty:window.origin}),await new Promise(((e,t)=>{Te.current={resolve:e,reject:t}}));break;default:throw Ee.current?.reject(new T(\"Unsupported MFA method\")),new T(`Unsupported MFA method: ${e}`)}},cancel(){Ee.current?.reject(new T(\"MFA canceled\"))},async initEnrollmentWithSms(e){let t=await ew();if(!t||!re)throw Error(\"Must have valid access token to enroll in MFA\");await re.initEnrollMfa({method:\"sms\",accessToken:t,phoneNumber:e.phoneNumber})},enrollInMfa:e=>new Promise(((t,n)=>{if(!e)return lt.closePrivyModal(),void t();ie.mfa.noPromptOnMfaRequired&&console.warn(\"[Privy Warning] Triggering the 'showMfaEnrollmentModal' function when 'noPromptOnMfaRequired' is set to true is unexpected. If this is intentional, ensure that you are building custom UIs for MFA verification.\"),de({mfaEnrollmentFlow:{mfaMethods:ie.mfa.methods,shouldUnlinkOnUnenrollMfa:ie.passkeys.shouldUnlinkOnUnenrollMfa,onSuccess:t,onFailure:n}}),Se(cr.MFA_ENROLLMENT_FLOW_SCREEN)})),async initEnrollmentWithTotp(){let e=await ew();if(!e||!re)throw Error(\"Must have valid access token to enroll in MFA\");let t=await re.initEnrollMfa({method:\"totp\",accessToken:e});return{secret:t.secret,authUrl:t.authUrl}},async submitEnrollmentWithSms(e){let t=await ew();if(!t||!re)throw Error(\"Must have valid access token to enroll in MFA\");await re.submitEnrollMfa({method:\"sms\",accessToken:t,phoneNumber:e.phoneNumber,code:e.mfaCode}),w(await a.getAuthenticatedUser())},async submitEnrollmentWithTotp(e){let t=await ew();if(!t||!re)throw Error(\"Must have valid access token to enroll in MFA\");await re.submitEnrollMfa({method:\"totp\",accessToken:t,code:e.mfaCode}),w(await a.getAuthenticatedUser())},async initEnrollmentWithPasskey(){},async submitEnrollmentWithPasskey({credentialIds:e},t={}){let n=await ew();if(!n||!re)throw Error(\"Must have valid access token to enroll in MFA\");await re.submitEnrollMfa({method:\"passkey\",accessToken:n,credentialIds:e,removeForLogin:t.removeForLogin}),w(await a.getAuthenticatedUser())},async unenroll(e,t={}){let n=await ew();if(!n||!re)throw Error(\"Must have valid access token to remove MFA\");\"passkey\"===e?await re.submitEnrollMfa({method:\"passkey\",accessToken:n,credentialIds:[],removeForLogin:t.removeForLogin}):await re.unenrollMfa({method:e,accessToken:n}),w(await a.getAuthenticatedUser())},requestFarcasterSignerFromWarpcast:async()=>{let e=await ew(),t=f?.linkedAccounts.find((e=>\"wallet\"===e.type&&\"privy\"===e.walletClientType));if(!e)throw Error(\"Must have valid access token to connect with Farcaster\");if(!re||!t)throw Error(\"Must have an embedded wallet to use Farcaster signers\");if(!f?.farcaster?.fid)throw Error(\"Must have Farcaster account to use Farcaster signers\");if(!await lt.recoverPrimaryWallet())throw Error(\"Unable to connect to wallet\");let n=await re.initFarcasterSigner({address:t.address,hdWalletIndex:null,accessToken:e,mfaCode:null,mfaMethod:null,relyingParty:window.origin});\"approved\"===n.status&&w(await a.getAuthenticatedUser()||f||null),de({farcasterSigner:n}),Se(cr.AWAITING_FARCASTER_SIGNER)},getFarcasterSignerPublicKey:async()=>{let e,t=await ew(),n=f?.linkedAccounts.find((e=>\"wallet\"===e.type&&\"privy\"===e.walletClientType));if(!t)throw Error(\"Must have valid access token to connect with Farcaster\");if(!re||!n)throw Error(\"Must have an embedded wallet to use Farcaster signers\");if(!f?.farcaster?.fid)throw Error(\"Must have Farcaster account to use Farcaster signers\");if(!await lt.recoverPrimaryWallet())throw Error(\"Unable to connect to wallet\");if(!f.farcaster?.signerPublicKey)throw Error(\"Must have a Farcaster signer public key to sign\");return e=f.farcaster.signerPublicKey.slice(2),Uint8Array.from(e.match(/.{1,2}/g).map((e=>parseInt(e,16))))},signFarcasterMessage:async e=>{let t=await ew(),n=f?.linkedAccounts.find((e=>\"wallet\"===e.type&&\"privy\"===e.walletClientType));if(!t)throw Error(\"Must have valid access token to connect with Farcaster\");if(!re||!n)throw Error(\"Must have an embedded wallet to use Farcaster signers\");if(!f?.farcaster?.fid)throw Error(\"Must have Farcaster account to use Farcaster signers\");if(!await lt.recoverPrimaryWallet())throw Error(\"Unable to connect to wallet\");if(!f.farcaster?.signerPublicKey)throw Error(\"Must have a Farcaster signer public key to sign\");let r=await import(\"@simplewebauthn/browser\"),a=await re.signFarcasterMessage({address:n.address,hdWalletIndex:null,accessToken:t,mfaCode:null,mfaMethod:null,payload:{hash:r.bufferToBase64URLString(e)},fid:BigInt(f.farcaster.fid),relyingParty:window.origin});return new Uint8Array(r.base64URLStringToBuffer(a.signature))},createGuestAccount:async()=>{if(f&&!f.isGuest)throw Error(\"User cannot already be authenticated to create a guest account\");return f?.isGuest?f:lt.loginWithGuestAccountFlow()},signMessageWithCrossAppWallet(e,{address:t,chainId:n}){let r=f?.linkedAccounts.some((e=>\"cross_app\"===e.type&&e.smartWallets.some((e=>e.address===t))));return Bf({user:f,client:a,address:t,requesterAppId:ie.id,request:{method:r?\"privy_signSmartWalletMessage\":\"personal_sign\",params:[e,t],chainId:n},reconnect:ot})},signTypedDataWithCrossAppWallet(e,{address:t,chainId:n}){let r=f?.linkedAccounts.some((e=>\"cross_app\"===e.type&&e.smartWallets.some((e=>e.address===t)))),i=Je(e);return Bf({user:f,client:a,address:t,requesterAppId:ie.id,request:{method:r?\"privy_signSmartWalletTypedData\":\"eth_signTypedData_v4\",params:[t,i],chainId:n},reconnect:ot})},sendTransactionWithCrossAppWallet(e,{address:t}){let n=f?.linkedAccounts.some((e=>\"cross_app\"===e.type&&e.smartWallets.some((e=>e.address===t))));return Bf({user:f,client:a,address:t,requesterAppId:ie.id,request:{method:n?\"privy_sendSmartWalletTx\":\"eth_sendTransaction\",params:[e],chainId:e.chainId},reconnect:ot})},isModalOpen:u,mfaMethods:ie.mfa.methods};Gf=st.signMessage,qf=st.signTypedData,Yf=async(e,t)=>await Ye({transaction:e,...t,signOnly:!1}),Kf=async(e,t)=>({signature:(await Ye({transaction:e,...t,signOnly:!0})).hash});let lt={setAuthenticated:g,setUser:w,isNewUserThisSession:O,pendingTransaction:null,walletConnectionStatus:H,connectors:a.connectors?.walletConnectors??[],solanaWallets:N,rpcConfig:ie.rpcConfig,chains:ie.chains,appId:n.appId,showFiatPrices:\"native-token\"!==ie.embeddedWallets.priceDisplay.primary,clientAnalyticsId:a.clientAnalyticsId,customAuthStatus:ve,hideWalletUIs:Ne,isHeadlessSigning:c(xe,[ie.embeddedWallets.showWalletUIs]),emailOtpState:G,setEmailOtpState:q,smsOtpState:K,setSmsOtpState:Y,oAuthState:X,setOAuthState:ee,telegramAuthState:te,setTelegramAuthState:ne,siweState:J,setSiweState:Q,isHeadlessOAuthLoading:B,nativeTokenSymbolForChainId:e=>ie.chains.find((t=>t.id===Number(e)))?.nativeCurrency.symbol,initializeWalletProxy:async e=>{if(re)return re;let t=new Promise((e=>{me((()=>t=>e(t)))})),n=new Promise((t=>setTimeout((()=>t(null)),e))),r=await Promise.race([t,n]);return me(null),r},getAuthFlow:()=>a.authFlow,getAuthMeta:()=>a.authFlow?.meta,client:a,closePrivyModal:async(e={shouldCallAuthOnSuccess:!0,isSuccess:!1})=>{let t,r=p&&y&&f;r&&ke.current&&(t=et(f)),\"login\"===Ie.current?e.shouldCallAuthOnSuccess&&r&&ke.current?ya(be,\"login\",\"onComplete\",{user:f,isNewUser:O,wasAlreadyAuthenticated:!1,loginMethod:ke.current,loginAccount:t??null}):ya(be,\"login\",\"onError\",A.USER_EXITED_AUTH_FLOW):\"link\"===Ie.current&&t?e.isSuccess&&r&&ke.current?ya(be,\"linkAccount\",\"onSuccess\",{user:f,linkMethod:ke.current,linkedAccount:t}):ke.current&&ya(be,\"linkAccount\",\"onError\",A.USER_EXITED_LINK_FLOW,{linkMethod:ke.current}):\"update\"===Ie.current&&t&&(e.isSuccess&&r&&ke.current?ya(be,\"update\",\"onSuccess\",{user:f,updateMethod:ke.current,updatedAccount:t}):ke.current&&ya(be,\"update\",\"onError\",A.USER_EXITED_UPDATE_FLOW,{linkMethod:ke.current}));let i=U&&Oh.includes(U),o=U===cr.ERROR_SCREEN&&ce.errorModalData&&Oh.includes(ce.errorModalData.previousScreen);if((i||o)&&ce.funding){let e,t=Wh[U]??null;if(\"solana\"===ce.funding.chainType){let n=d(aa);if(!n)return void console.warn(\"Unable to load solana plugin, skipping balance\");try{e=BigInt(await n.getBalance({address:ce.funding.address,cluster:ce.funding.cluster}))}catch{console.error(\"Unable to pull wallet balance\")}ya(be,\"fundSolanaWallet\",\"onUserExited\",{address:ce.funding.address,cluster:ce.funding.cluster,fundingMethod:t,balance:e})}else{let r=Fa(ce.funding.chain.id,ie.chains,ie.rpcConfig,{appId:n.appId});try{e=await r.getBalance({address:ce.funding.address})}catch{console.error(\"Unable to pull wallet balance\")}ya(be,\"fundWallet\",\"onUserExited\",{address:ce.funding.address,chain:ce.funding.chain,fundingMethod:t,balance:e})}}de({...ce,externalConnectWallet:{suggestedAddress:void 0}}),Ie.current=null,ke.current=null,W(!1),h(!1),setTimeout((()=>{a.authFlow=void 0}),200)},solanaSignMessage:({message:e,options:t})=>new Promise((async(n,r)=>{if(!y||!f)return ya(be,\"signSolanaMessage\",\"onError\",A.MUST_BE_AUTHENTICATED),void r(Error(\"User must be authenticated before signing with a Privy wallet\"));let i=t?.address??gr(f)?.address;if(!i)throw new T(\"User must have an embedded wallet to sign a message.\");let{signingWallet:o,rootWallet:s}=Dr(f,i);if(!o||!s)return ya(be,\"signSolanaMessage\",\"onError\",A.EMBEDDED_WALLET_NOT_FOUND),void r(Error(\"Must have a Privy wallet before signing\"));if(\"string\"!=typeof e||e.length<1)return ya(be,\"signMessage\",\"onError\",A.INVALID_MESSAGE),void r(Error(\"Message must be a non-empty string\"));le(!0);let l=async()=>{if(!y)throw Error(\"User must be authenticated before signing with a Privy wallet\");let t=await a.getAccessToken();if(!t)throw Error(\"User must be authenticated to use their embedded wallet.\");let n=lt.walletProxy??await lt.initializeWalletProxy(15e3);if(!n)throw Error(\"Failed to initialize embedded wallet proxy.\");if(!await lt.recoverPrimaryWallet())throw Error(\"Unable to connect to wallet\");if(!s)throw Error(\"No root wallet for signing wallet found\");let{entropyId:r,entropyIdVerifier:i}=Kr(f),{response:l}=await n.rpc({accessToken:t,entropyId:r,entropyIdVerifier:i,chainType:\"solana\",hdWalletIndex:o.walletIndex??0,request:{method:\"signMessage\",params:{message:e}}});return l.data.signature};if(xe({showWalletUIs:t?.uiOptions?.showWalletUIs}))try{let e=await l();ya(be,\"signSolanaMessage\",\"onSuccess\",{signature:new Uint8Array(Buffer.from(e,\"base64\"))}),n({signature:e})}catch(e){r(e)}else{let a={method:\"solana_signMessage\",data:e,confirmAndSign:l,onSuccess:e=>{ya(be,\"signSolanaMessage\",\"onSuccess\",{signature:new Uint8Array(Buffer.from(e,\"base64\"))}),n({signature:e})},onFailure:e=>{r(e)},uiOptions:t?.uiOptions},{entropyId:i,entropyIdVerifier:o}=jn(s);de({signMessage:a,connectWallet:{entropyId:i,entropyIdVerifier:o,onCompleteNavigateTo:cr.EMBEDDED_WALLET_SIGN_REQUEST_SCREEN,onFailure:e=>{ya(be,\"signSolanaMessage\",\"onError\",A.UNKNOWN_CONNECT_WALLET_ERROR),r(e)}}}),Re(cr.EMBEDDED_WALLET_CONNECTING_SCREEN)}})),signSolanaTransaction:async({transaction:e,connection:t,uiOptions:n,transactionOptions:r,address:a})=>{let i=a?S.find((e=>e.address===a)):S.slice().sort(((e,t)=>(e.walletIndex??0)-(t.walletIndex??0)))[0];if(!i)throw ya(be,\"signSolanaTransaction\",\"onError\",A.EMBEDDED_WALLET_NOT_FOUND),new T(\"Embedded wallet not found\",A.EMBEDDED_WALLET_NOT_FOUND);let{signedTransaction:o}=await Qe({transaction:e,connection:t,transactionOptions:r,uiOptions:n,wallet:i,signOnly:!0});return o},sendSolanaTransaction:async({transaction:e,connection:t,uiOptions:n,transactionOptions:r,fundWalletConfig:a,address:i})=>{let o=i?S.find((e=>e.address===i)):S.slice().sort(((e,t)=>(e.walletIndex??0)-(t.walletIndex??0)))[0];if(!o)throw ya(be,\"sendSolanaTransaction\",\"onError\",A.EMBEDDED_WALLET_NOT_FOUND),new T(\"Embedded wallet not found\",A.EMBEDDED_WALLET_NOT_FOUND);return await Qe({transaction:e,connection:t,transactionOptions:r,uiOptions:n,fundWalletConfig:a,wallet:o,signOnly:!1})},openPrivyModal:Se,connectWallet:Le,initLoginWithWallet:async(e,t,n)=>{rt(e)?(ke.current=\"siwe\",De(e,t,n)):(ke.current=\"siws\",Ue(e,t,n))},loginWithWallet:async()=>{let e,t,n;if(!p)throw new L;if(a.authFlow instanceof at?e=\"siwe\":a.authFlow instanceof xn&&(e=\"siws\"),!e)throw new T(\"Must initialize SIWE/SIWS flow first.\");if(null!==await a.getAccessToken())try{({user:t}=await a.link()),ke.current=e}catch(t){throw ya(be,\"linkAccount\",\"onError\",t.privyErrorCode||A.FAILED_TO_LINK_ACCOUNT,{linkMethod:e}),t}else try{({user:t,isNewUser:n}=await a.authenticate()),ke.current=e}catch(e){throw ya(be,\"login\",\"onError\",e.privyErrorCode||A.GENERIC_CONNECT_WALLET_ERROR),e}w(t||f||null),W(n||!1),g(!0)},delegateWallet:async({address:e,chainType:t,showDelegationUIs:n})=>new Promise((async(r,a)=>{let i=await ew();if(!y||!f||!i)throw new T(\"User must be authenticated and have an embedded wallet to delegate actions.\");if(\"solana\"!==t&&\"ethereum\"!==t)throw new T(\"Only Solana and Ethereum embedded wallets are supported for delegation and revocation.\");let o=lt.walletProxy??await lt.initializeWalletProxy(15e3);if(!o)throw new T(\"Wallet proxy not initialized.\");if((({address:e,chainType:t,user:n})=>!!Wf(n).find((n=>n.address===e&&n.chainType===t)))({address:e,chainType:t,user:f}))return r();let s=(({address:e,user:t})=>{let n=t.linkedAccounts.find((t=>\"wallet\"===t.type&&\"privy\"===t.walletClientType&&t.address===e));if(!n)throw new T(\"Address to delegate is not associated with current user.\");return{address:n.address,chainType:n.chainType,walletIndex:n.walletIndex??0}})({address:e,user:f}),l=(({address:e,user:t})=>{let n=t.linkedAccounts.find((t=>\"wallet\"===t.type&&\"privy\"===t.walletClientType&&t.address===e));if(!n)throw new T(\"Address to delegate is not associated with current user.\");let r=n.imported?n:wr(t);if(!r)throw new T(\"Unable to determine root address for delegated address.\");return{address:r.address,chainType:r.chainType,imported:r.imported}})({address:e,user:f}),c=async()=>{await o.createDelegatedAction({accessToken:i,rootWallet:l,delegatedWallets:[s]}),await lt.refreshSessionAndUser()};if(await lt.recoverPrimaryWallet(),n)de({delegatedActions:{consent:{address:e,onDelegate:c,onSuccess:async()=>{r()},onError:async e=>{a(e)}}}}),Se(cr.EMBEDDED_WALLET_DELEGATED_ACTIONS_CONSENT_SCREEN);else try{await c(),r()}catch(e){a(e)}})),revokeDelegatedWallets:async({showDelegationUIs:e})=>new Promise((async(t,n)=>{if(!y||!f)throw new T(\"User must be authenticated and have an embedded wallet to revoke a delegated wallet.\");if(0===Wf(f).length)throw new T(\"User has no delegated wallets to revoke.\");let r=async()=>{await a.revokeDelegatedWallet(),await lt.refreshSessionAndUser()};if(e)de({delegatedActions:{revoke:{onRevoke:r,onSuccess:async()=>{t()},onError:async e=>{n(e)}}}}),Se(cr.EMBEDDED_WALLET_DELEGATED_ACTIONS_REVOKE_SCREEN);else try{await r(),t()}catch(e){n(e)}})),initLoginWithFarcaster:async(e,t)=>{let n=new To(e,t);a.startAuthFlow(n);try{ke.current=\"farcaster\",await n.initializeFarcasterConnect()}catch(e){throw\"login\"===Ie.current?ya(be,\"login\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR):\"link\"===Ie.current&&ya(be,\"linkAccount\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR,{linkMethod:\"farcaster\"}),e}},loginWithFarcaster:async()=>{let e,t;if(!p)throw new L;if(!(a.authFlow instanceof To))throw new T(\"Must initialize Farcaster flow first.\");if(null!==await a.getAccessToken())try{({user:e}=await a.link()),ke.current=\"farcaster\"}catch(e){throw ya(be,\"linkAccount\",\"onError\",e.privyErrorCode||A.FAILED_TO_LINK_ACCOUNT,{linkMethod:\"farcaster\"}),e}else try{({user:e,isNewUser:t}=await a.authenticate()),ke.current=\"farcaster\"}catch(e){throw ya(be,\"login\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR),e}w(e||null),W(t||!1),g(!0)},async loginWithGuestAccountFlow(){let e=new Ao(this.appId);a.startAuthFlow(e);try{Ie.current=\"login\",ke.current=\"guest\";let{user:e,isNewUser:t}=await a.authenticate();if(t=t||!1,!e)throw new T(\"Unable to authenticate guest account\");let n=await ew(),r=await lt.initializeWalletProxy(fr);if(n&&r)try{let t=Wt(e,ie.embeddedWallets.ethereum.createOnLogin),a=Mt(e,ie.embeddedWallets.solana.createOnLogin);if(t&&a){let t=await $e(e,fr);await r.createSolana({accessToken:n,ethereumAddress:t?.address}),e=await lt.refreshSessionAndUser()}else a?(await r.createSolana({accessToken:n,ethereumAddress:yr(e)?.address}),e=await lt.refreshSessionAndUser()):t?(await $e(e,fr),e=await lt.refreshSessionAndUser()):w(e)}catch(t){w(e),console.warn(\"Unable to create embedded wallet for guest account\")}return W(t),g(!0),ya(be,\"login\",\"onComplete\",{user:e,isNewUser:t,wasAlreadyAuthenticated:!1,loginMethod:\"guest\",loginAccount:null}),e}catch(e){throw ya(be,\"login\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR),e}},async crossAppAuthFlow({appId:e,popup:t,action:n}){let r=`privy:${e}`;ke.current=r;let{url:i,stateCode:o,codeVerifier:s}=await async function({api:e,appId:t}){let n=_o(),r=ko(),a=await Io(n);try{let{url:i}=await e.post(Z,{provider:`privy:${t}`,redirect_to:window.location.href,code_challenge:a,state_code:r});return{url:i,stateCode:r,codeVerifier:n}}catch(e){throw b(e)}}({api:a.api,appId:e});if(!i)throw a.createAnalyticsEvent({eventName:\"cross_app_auth_error\",payload:{error:\"Unable to open cross-app auth popup\",appId:e}}),new T(\"No authorization URL returned for cross-app auth.\");try{let l=await async function({url:e,popup:t}){return t.location=e,new Promise(((e,n)=>{let r,a=setTimeout((()=>{n(new T(\"Authorization request timed out after 2 minutes.\")),i()}),12e4);function i(){t?.close(),window.removeEventListener(\"message\",s)}let o=setInterval((()=>{t?.closed&&!r&&(i(),clearInterval(o),clearTimeout(a),n(new T(\"User rejected request\")))}),300);function s(t){t.data&&(\"PRIVY_OAUTH_RESPONSE\"===t.data.type&&t.data.stateCode&&t.data.authorizationCode&&(clearTimeout(a),e(t.data),i()),\"PRIVY_OAUTH_ERROR\"===t.data.type&&(clearTimeout(a),n(new T(t.data.error)),i()),t.data.type===Df&&((r=new BroadcastChannel(Lf)).onmessage=s))}window.addEventListener(\"message\",s)}))}({url:i,popup:t,provider:r}),c=l.stateCode,d=l.authorizationCode;if(c!==o)throw a.createAnalyticsEvent({eventName:\"possible_phishing_attempt\",payload:{provider:r,storedStateCode:o??\"\",returnedStateCode:c??\"\"}}),new T(\"Unexpected auth flow. This may be a phishing attempt.\",void 0,A.OAUTH_UNEXPECTED);let u=await async function({appId:e,stateCode:t,codeVerifier:n,authorizationCode:r,action:a,client:i}){if(!r||!t)throw new T(\"[Cross-App AuthFlow] Authorization and state codes code must be set prior to calling authenicate.\");if(\"undefined\"===r)throw new T(\"User denied confirmation during cross-app auth flow\");try{let o=new Uf({authorizationCode:r,stateCode:t,codeVerifier:n,provider:`privy:${e}`});i.startAuthFlow(o);let s=\"link\"===a?await i.link():await i.authenticate(),l=s.oAuthTokens?.accessToken;return console.debug(),l}catch(e){let t=b(e);if(t.privyErrorCode)throw new T(t.message||\"Invalid code during cross-app auth flow.\",void 0,t.privyErrorCode);if(\"User denied confirmation during cross-app auth flow\"===t.message)throw new T(\"Invalid code during cross-app auth flow.\",void 0,A.OAUTH_USER_DENIED);throw new T(\"Invalid code during cross-app auth flow.\",void 0,A.UNKNOWN_AUTH_ERROR)}}({appId:e,codeVerifier:s,stateCode:c,authorizationCode:d,action:n,client:a});u&&a.storeProviderAccessToken(e,u);let h=await lt.refreshSessionAndUser();if(!h)throw new T(\"Unable to update user\");return a.createAnalyticsEvent({eventName:\"cross_app_auth_completed\",payload:{providerAppId:e}}),h}catch(e){throw a.createAnalyticsEvent({eventName:\"cross_app_auth_error\",payload:{error:e.toString(),provider:r}}),e}},async initLoginWithOAuth(e,t,n){if(ke.current=e,!Yr())return void Re(cr.IN_APP_BROWSER_LOGIN_NOT_POSSIBLE);if(\"google\"===e&&mc(window.navigator.userAgent))return void Re(cr.IN_APP_BROWSER_LOGIN_NOT_POSSIBLE);\"twitter\"===e&&window.opener&&window.opener.postMessage({type:Df},\"*\"),Zr.del(Fn),Zr.del(Bn);let r=new No({provider:e,disableSignup:!!n,withPrivyUi:!0});t&&r.addCaptchaToken(t),a.startAuthFlow(r);let i=await a.authFlow.getAuthorizationUrl();i&&i.url&&(\"twitter\"===e&&v&&(i.url=i.url.replace(\"x.com\",\"twitter.com\")),window.location.assign(i.url))},async initLoginWithTelegram(e,t){if(!p)throw new L;ke.current=\"telegram\";let n=new qo(e,t);a.startAuthFlow(n),ne({status:\"loading\"}),n.meta.telegramWebAppData=void 0,n.meta.telegramAuthResult=await new Promise(((e,t)=>ie.loginConfig.telegramAuthConfiguration?window.Telegram?void window.Telegram.Login.auth({bot_id:ie.loginConfig.telegramAuthConfiguration.botId,request_access:!0},(n=>n?e(n):t(new T(\"Telegram auth failed or was canceled by the client\")))):t(new T(\"Telegram was not initialized\")):t(new T(\"Telegram Auth configuration is not loaded\"))))},async loginWithTelegram(e){let t,n;if(!(a.authFlow instanceof qo))throw new T(\"Must initialize Telegram flow before calling loginWithTelegram\");a.authFlow.meta.captchaToken||=e?.captchaToken;let r=await ew(),i=e?.intent||Ie.current;if(\"login\"===i)try{let e=await a.authenticate();t=e.user,n=e.isNewUser,ke.current=\"telegram\"}catch(e){throw ya(be,\"login\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR),e}else{if(\"link\"!==i)throw new T(\"Unknown auth intent\");try{t=(await a.link()).user,ke.current=\"telegram\"}catch(e){throw ya(be,\"linkAccount\",\"onError\",e.privyErrorCode||A.FAILED_TO_LINK_ACCOUNT,{linkMethod:\"telegram\"}),e}}w(t),W(n||!1),g(!0),ne({status:\"done\"});let o=t?.linkedAccounts.find((({type:e})=>\"telegram\"===e))||null;return{user:t,isNewUser:n||!1,wasAlreadyAuthenticated:!!r,loginAccount:o}},async recoveryOAuthFlow(e,t,n){let r,i;function o(t){if(!t)throw a.createAnalyticsEvent({eventName:\"recovery_oauth_error\",payload:{error:\"Unable to open recovery OAuth popup\",provider:e}}),new T(\"Recovery OAuth failed\")}switch(e){case\"google-drive\":{let t,s,{url:l,codeVerifier:c,stateCode:d}=await Kc({api:jf.api,provider:e});o(l);try{let r=await $f({url:l,popup:n,provider:e});if(t=r.stateCode,s=r.authorizationCode,t!==d)throw a.createAnalyticsEvent({eventName:\"possible_phishing_attempt\",payload:{provider:e,storedStateCode:d??\"\",returnedStateCode:t??\"\"}}),new T(\"Unexpected auth flow. This may be a phishing attempt.\",void 0,A.OAUTH_UNEXPECTED)}catch(t){throw a.createAnalyticsEvent({eventName:\"recovery_oauth_error\",payload:{error:t.toString(),provider:e}}),new T(\"Recovery OAuth failed\")}[r,i]=await Promise.all([ew(),Yc({api:jf.api,provider:e,codeVerifier:c,stateCode:t,authorizationCode:s})]);break}case\"icloud\":{let{url:t}=await Kc({api:jf.api,provider:e});o(t);let{ckWebAuthToken:a}=await $f({url:t,popup:n,provider:e});i=a,r=await ew()}}if(!re)throw new T(\"Cannot connect to wallet proxy\");if(!r)throw new T(\"Unable to authorize user\");switch(t){case\"recover\":{let t=ce.recoverWallet?.entropyId,n=ce.recoverWallet?.entropyIdVerifier;if(!t||!n)throw new T(\"Recovery OAuth failed\");a.createAnalyticsEvent({eventName:\"embedded_wallet_recovery_started\",payload:{walletAddress:t,recoveryMethod:e}}),await re.recover({accessToken:r,entropyId:t,entropyIdVerifier:n,recoveryAccessToken:i}),a.createAnalyticsEvent({eventName:\"embedded_wallet_recovery_completed\",payload:{walletAddress:t,recoveryMethod:e}});break}case\"create-wallet\":{a.createAnalyticsEvent({eventName:\"embedded_wallet_creation_started\"}),await re.create({accessToken:r,recoveryAccessToken:i,recoveryMethod:e});let t=yr(await lt.refreshSessionAndUser());if(!t)throw ya(be,\"createWallet\",\"onError\",A.UNKNOWN_EMBEDDED_WALLET_ERROR),Error(\"Failed to create wallet\");a.createAnalyticsEvent({eventName:\"embedded_wallet_creation_completed\",payload:{walletAddress:t.address}}),ya(be,\"createWallet\",\"onSuccess\",{wallet:t});break}case\"set-recovery\":{let t=wr(f);if(!t)throw ya(be,\"setWalletRecovery\",\"onError\",A.EMBEDDED_WALLET_NOT_FOUND),Error(\"Embedded wallet not found\");a.createAnalyticsEvent({eventName:\"embedded_wallet_set_recovery_started\",payload:{walletAddress:t.address,existingRecoveryMethod:t.recoveryMethod,targetRecoveryMethod:e}});let{entropyId:n,entropyIdVerifier:o}=jn(t);await re.setRecovery({accessToken:r,entropyId:n,entropyIdVerifier:o,recoveryMethod:e,recoveryAccessToken:i});let s=wr(await lt.refreshSessionAndUser());if(!s)throw ya(be,\"createWallet\",\"onError\",A.UNKNOWN_EMBEDDED_WALLET_ERROR),Error(\"Failed to set recovery on wallet\");a.createAnalyticsEvent({eventName:\"embedded_wallet_set_recovery_completed\",payload:{walletAddress:t.address,existingRecoveryMethod:t.recoveryMethod,targetRecoveryMethod:e}}),ya(be,\"setWalletRecovery\",\"onSuccess\",{method:e,wallet:s});break}default:throw new T(\"Unsupported recovery action\")}},async loginWithOAuth(e){let t,n,r;if(!(a.authFlow instanceof No))throw new T(\"Must initialize OAuth flow before calling loginWithOAuth\");let i=Zr.get(zn),o=a.authFlow.meta.stateCode;if(i!==o)throw a.createAnalyticsEvent({eventName:\"possible_phishing_attempt\",payload:{provider:e,storedStateCode:i??\"\",returnedStateCode:o??\"\"}}),new T(\"Unexpected auth flow. This may be a phishing attempt.\",void 0,A.OAUTH_UNEXPECTED);if(null!==await a.getAccessToken())try{let n=await a.link();t=n.user,r=n.oAuthTokens,ke.current=e}catch(t){throw ya(be,\"linkAccount\",\"onError\",t.privyErrorCode||A.FAILED_TO_LINK_ACCOUNT,{linkMethod:e}),t}else try{let i=await a.authenticate();t=i.user,n=i.isNewUser,r=i.oAuthTokens,ke.current=e}catch(t){throw\"login\"===Ie.current?ya(be,\"login\",\"onError\",t.privyErrorCode||A.UNKNOWN_AUTH_ERROR):\"link\"===Ie.current&&ya(be,\"linkAccount\",\"onError\",t.privyErrorCode||A.FAILED_TO_LINK_ACCOUNT,{linkMethod:e}),t}return w(t),W(n||!1),g(!0),r&&t&&ya(be,\"oAuthAuthorization\",\"onOAuthTokenGrant\",{oAuthTokens:r,user:t}),r},passkeyAuthState:$,setPasskeyAuthState:j,async initSignupWithPasskey({captchaToken:e,withPrivyUi:t}){let n=new $o({captchaToken:e,setPasskeyAuthState:j});a.startAuthFlow(n),Ie.current=\"login\";try{ke.current=\"passkey\",j({status:\"generating-challenge\"}),await n.initRegisterFlow(t),j({status:\"awaiting-passkey\"})}catch(e){throw j({status:\"error\",error:e}),ya(be,\"login\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR),e}},async signupWithPasskey(){let e,t;if(!p)throw new L;if(!(a.authFlow instanceof $o))throw new T(\"Must initialize Passkey flow first.\");if(\"passkey\"!==ke.current){let e=new T(\"Must init login with Passkey flow first.\");throw j({status:\"error\",error:e}),e}let n=await ew();try{ke.current=\"passkey\",j({status:\"awaiting-passkey\"}),({user:e,isNewUser:t}=await a.authenticate())}catch(e){throw j({status:\"error\",error:e}),ya(be,\"login\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR),e}w(e),W(t||!1),g(!0),j({status:\"done\"});let r=e?.linkedAccounts.find((({type:e})=>\"passkey\"===e))||null;return{user:e,isNewUser:t||!1,wasAlreadyAuthenticated:!!n,loginAccount:r}},async initLoginWithPasskey({captchaToken:e,withPrivyUi:t}){let n=new $o({captchaToken:e,setPasskeyAuthState:j});a.startAuthFlow(n),Ie.current=\"login\";try{ke.current=\"passkey\",j({status:\"generating-challenge\"}),await n.initAuthenticationFlow(t),j({status:\"awaiting-passkey\"})}catch(e){throw j({status:\"error\",error:e}),ya(be,\"login\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR),e}},async loginWithPasskey(e){let t,n;if(!p)throw new L;if(!(a.authFlow instanceof $o))throw new T(\"Must initialize Passkey flow first.\");if(e?.credentialIds&&(a.authFlow.meta.allowedCredentialsIds=e.credentialIds),\"passkey\"!==ke.current){let e=new T(\"Must init login with Passkey flow first.\");throw j({status:\"error\",error:e}),e}let r=await ew();try{ke.current=\"passkey\",j({status:\"awaiting-passkey\"}),({user:t,isNewUser:n}=await a.authenticate())}catch(e){throw j({status:\"error\",error:e}),ya(be,\"login\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR),e}w(t),W(n||!1),g(!0),j({status:\"done\"});let i=t?.linkedAccounts.find((({type:e})=>\"passkey\"===e))||null;return{user:t,isNewUser:n||!1,wasAlreadyAuthenticated:!!r,loginAccount:i}},async initLinkWithPasskey(e){let t=new $o({captchaToken:e});a.startAuthFlow(t),Ie.current=\"link\",ke.current=\"passkey\",j({status:\"generating-challenge\"});try{await t.initLinkFlow(),j({status:\"awaiting-passkey\"})}catch(e){throw ya(be,\"linkAccount\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR,{linkMethod:\"passkey\"}),j({status:\"error\",error:e}),e}},async linkWithPasskey(){let e;if(!p)throw new L;if(!(a.authFlow instanceof $o))throw new T(\"Must initialize Passkey flow first.\");if(\"passkey\"!==ke.current)throw new T(\"Must init login with Passkey flow first.\");try{ke.current=\"passkey\",({user:e}=await a.link())}catch(e){throw ya(be,\"linkAccount\",\"onError\",e.privyErrorCode||A.FAILED_TO_LINK_ACCOUNT,{linkMethod:\"passkey\"}),e}return w(e||f||null),j({status:\"done\"}),e},async initLoginWithHeadlessOAuth(e,t,n){if(!Yr())throw Error(\"It looks like you're using an in-app browser. To log in, please try again using an external browser.\");if(\"google\"===e&&mc(window.navigator.userAgent))throw Error(\"It looks like you're using an in-app browser. To log in, please try again using an external browser.\");let r=new No({provider:e,withPrivyUi:!1,disableSignup:n??!1});t&&r.addCaptchaToken(t),ee({status:\"loading\"});let i=await a.startAuthFlow(r).getAuthorizationUrl();i?.url&&window.location.assign(i.url)},async loginWithHeadlessOAuth(e){let t,n,r;z(!0),ee({status:\"loading\"}),a.startAuthFlow(new No(e));let i=Zr.get(zn),o=e.stateCode;if(i!==o)throw a.createAnalyticsEvent({eventName:\"possible_phishing_attempt\",payload:{provider:e.provider,storedStateCode:i??\"\",returnedStateCode:o??\"\"}}),z(!1),new T(\"Unexpected auth flow. This may be a phishing attempt.\",void 0,A.OAUTH_UNEXPECTED);if(null!==await a.getAccessToken())try{({user:t,oAuthTokens:r}=await a.link()),ke.current=e.provider;let n=et(t);t&&n&&ya(be,\"linkAccount\",\"onSuccess\",{user:t,linkMethod:ke.current,linkedAccount:n})}catch(t){throw z(!1),ya(be,\"linkAccount\",\"onError\",t.privyErrorCode||A.FAILED_TO_LINK_ACCOUNT,{linkMethod:e.provider}),t}else try{({user:t,isNewUser:n,oAuthTokens:r}=await a.authenticate()),ke.current=e.provider;let i=et(t);t&&i&&void 0!==n&&ya(be,\"login\",\"onComplete\",{user:t,isNewUser:n,wasAlreadyAuthenticated:!1,loginMethod:ke.current,loginAccount:i})}catch(e){throw z(!1),ee({status:\"error\",error:e}),ya(be,\"login\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR),e}return w(t),W(n||!1),g(!0),z(!1),ee({status:\"done\"}),r&&t&&ya(be,\"oAuthAuthorization\",\"onOAuthTokenGrant\",{oAuthTokens:r,user:t}),t??void 0},initLoginWithEmail:async({email:e,captchaToken:t,disableSignup:n,withPrivyUi:r})=>{let i=new Co({email:e,captchaToken:t,disableSignup:n});a.startAuthFlow(i);try{ke.current=\"email\",q({status:\"sending-code\"}),await i.sendCodeEmail({withPrivyUi:r}),q({status:\"awaiting-code-input\"})}catch(e){throw q({status:\"error\",error:e}),\"login\"===Ie.current?ya(be,\"login\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR):\"link\"===Ie.current&&ya(be,\"linkAccount\",\"onError\",e.privyErrorCode||A.FAILED_TO_LINK_ACCOUNT,{linkMethod:\"email\"}),e}},initUpdateEmail:async(e,t,n)=>{let r=new Eo(e,t,n);a.startAuthFlow(r);try{await r.sendCodeEmail({withPrivyUi:!0})}catch(e){ya(be,\"update\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR,{linkMethod:ke.current})}},initUpdatePhone:async(e,t,n)=>{let r=new Go(e,t,n);a.startAuthFlow(r);try{await r.sendSmsCode({withPrivyUi:!0})}catch(e){ya(be,\"update\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR,{linkMethod:ke.current})}},initLoginWithSms:async({phoneNumber:e,captchaToken:t,disableSignup:n,withPrivyUi:r})=>{Y({status:\"sending-code\"});let i=new jo({phoneNumber:e,captchaToken:t,disableSignup:n});a.startAuthFlow(i);try{ke.current=\"sms\",await i.sendSmsCode({withPrivyUi:r}),Y({status:\"awaiting-code-input\"})}catch(e){throw Y({status:\"error\",error:e}),\"login\"===Ie.current?ya(be,\"login\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR):\"link\"===Ie.current&&ya(be,\"linkAccount\",\"onError\",e.privyErrorCode||A.FAILED_TO_LINK_ACCOUNT,{linkMethod:\"sms\"}),e}},resendEmailCode:async()=>{await(a.authFlow?.sendCodeEmail({withPrivyUi:!0}))},resendSmsCode:async()=>{await(a.authFlow?.sendSmsCode({withPrivyUi:!0}))},loginWithCode:async e=>{let t,n;function r(e){a.authFlow instanceof Co?q(e):a.authFlow instanceof jo&&Y(e)}if(r({status:\"submitting-code\"}),!p){let e=new L;throw r({status:\"error\",error:e}),e}if(a.authFlow instanceof Co)a.authFlow.meta.emailCode=e.trim();else{if(!(a.authFlow instanceof jo)){let e=new T(\"Must initialize a passwordless code flow first\");throw r({status:\"error\",error:e}),e}a.authFlow.meta.smsCode=e.trim()}let i=await ew();if(\"link\"===Ie.current)try{({user:t}=await a.link())}catch(e){throw r({status:\"error\",error:e}),ya(be,\"linkAccount\",\"onError\",e.privyErrorCode||A.FAILED_TO_LINK_ACCOUNT,{linkMethod:ke.current}),e}else if(\"update\"===Ie.current)try{({user:t}=await a.link())}catch(e){throw r({status:\"error\",error:e}),ya(be,\"update\",\"onError\",e.privyErrorCode||A.FAILED_TO_UPDATE_ACCOUNT,{linkMethod:ke.current}),e}else try{({user:t,isNewUser:n}=await a.authenticate())}catch(e){throw r({status:\"error\",error:e}),ya(be,\"login\",\"onError\",e.privyErrorCode||A.UNKNOWN_AUTH_ERROR),e}let o=t||f;w(o||null),W(n||!1),g(!0),r({status:\"done\"});let s=null;return a.authFlow instanceof Co?s=o?.linkedAccounts.find((({type:e})=>\"email\"===e))||null:a.authFlow instanceof jo&&(s=o?.linkedAccounts.find((({type:e})=>\"phone\"===e))||null),{user:o,isNewUser:n||!1,wasAlreadyAuthenticated:!!i,linkedAccount:s}},generateSiweMessage:async({address:e,chainId:t,captchaToken:n})=>{Ie.current=\"link\",ke.current=\"siwe\",Q({status:\"generating-message\"});let r=await a.generateSiweNonce({address:e,captchaToken:n});return Q({status:\"awaiting-signature\"}),Sn({address:e,chainId:t.replace(\"eip155:\",\"\"),nonce:r})},generateSiweMessageForSmartWallet:async({address:e,chainId:t})=>{let n=await a.generateSiweNonce({address:e});return Sn({address:e,chainId:t.replace(\"eip155:\",\"\"),nonce:n})},linkSmartWallet:async({message:e,signature:t,smartWalletType:n})=>{let r;r=await a.linkSmartWallet({message:e,signature:t,smartWalletType:n}),w((r=await lt.refreshSessionAndUser()??r)||f||null)},linkWithSiwe:async({message:e,signature:t,chainId:n,walletClientType:r,connectorType:i})=>{let o;Be(\"siwe\");let s=null;try{Q({status:\"submitting-signature\"}),o=await a.linkWithSiwe({message:e,signature:t,chainId:n,walletClientType:r,connectorType:i}),o=await lt.refreshSessionAndUser()??o,Q({status:\"done\"}),(s=et(o)||null)&&ya(be,\"linkAccount\",\"onSuccess\",{user:o,linkMethod:\"siwe\",linkedAccount:s})}catch(e){throw ya(be,\"linkAccount\",\"onError\",e.privyErrorCode||A.FAILED_TO_LINK_ACCOUNT,{linkMethod:\"siwe\"}),Ie.current=null,ke.current=null,Q({status:\"error\",error:e}),e}let l=o||f;return w(l||null),Ie.current=null,ke.current=null,{user:l,linkedAccount:s}},refreshSessionAndUser:async()=>{let e=await a.getAuthenticatedUser();return g(!!e),w(e),e},walletProxy:re,createAnalyticsEvent:({eventName:e,payload:t,timestamp:n})=>a.createAnalyticsEvent({eventName:e,payload:t,timestamp:n}),acceptTerms:async()=>{let e=await a.acceptTerms();return w(e),e},getUsdTokenPrice:e=>a.getUsdTokenPrice(e),getUsdPriceForSol:()=>a.getUsdPriceForSol(),getSplTokenMetadata:e=>a.getSplTokenMetadata(e),recoverPrimaryWallet:async e=>new Promise((async(t,n)=>{let r=wr(e?.user??f)||Hr(e?.user??f)||Lr(e?.user??f);r||t(!0);let i=await ew();if(!i||!re||!r)return void n(Error(\"Must have valid access token and Privy wallet to recover wallet\"));le(!0);let{entropyId:o,entropyIdVerifier:s}=jn(r);try{await re.connect({accessToken:i,entropyId:o,entropyIdVerifier:s}),t(!0)}catch(e){Fc(e)&&\"privy\"===r.recoveryMethod?(a.createAnalyticsEvent({eventName:\"embedded_wallet_pinless_recovery_started\",payload:{walletAddress:r.address}}),(await re.recover({entropyId:o,entropyIdVerifier:s,accessToken:i})).entropyId||n(Error(\"Unable to recover wallet\")),a.createAnalyticsEvent({eventName:\"embedded_wallet_recovery_completed\",payload:{walletAddress:r.address}}),t(!0)):Fc(e)&&\"privy\"!==r.recoveryMethod?(de({recoverWallet:{entropyId:o,entropyIdVerifier:s,onFailure:n,onSuccess:()=>t(!0)},recoveryOAuthStatus:{provider:r.recoveryMethod,action:\"recover\"}}),Se(qc(r.recoveryMethod))):n(e)}})),embeddedSolanaWallets:S,createEmbeddedSolanaWallet:async e=>{e&&\"target\"in e&&(e=void 0);let t=await lt.refreshSessionAndUser();if(!t)throw ya(be,\"createWallet\",\"onError\",A.MUST_BE_AUTHENTICATED),Error(\"User must be authenticated before creating a Privy wallet\");return(async(e,t,n)=>{let r=yr(e),a=gr(e),i=n&&\"createAdditional\"in n&&n.createAdditional,o=n&&\"walletIndex\"in n?n.walletIndex:void 0,s=(qr(e)?.walletIndex??-1)+1;if(a&&!i&&\"number\"!=typeof o)throw ya(be,\"createWallet\",\"onError\",A.EMBEDDED_WALLET_ALREADY_EXISTS),Error(\"User already has an embedded wallet.\");if(\"number\"==typeof o&&o<0)throw ya(be,\"createWallet\",\"onError\",A.EMBEDDED_WALLET_CREATE_ERROR),Error(`A negative walletIndex (${o}) is invalid.`);let[l,c]=await Promise.all([lt.initializeWalletProxy(t),ew()]);if(!l||!c)throw ya(be,\"createWallet\",\"onError\",A.UNKNOWN_EMBEDDED_WALLET_ERROR),Error(\"Failed to connect to wallet proxy\");return await qe({user:e,wp:l,accessToken:c,walletIndex:o??s,ethereumWallet:r})})(t,15e3,e)},exportSolanaWallet:e=>new Promise((async(t,r)=>{if(!y||!f)return void r(Error(\"User must be authenticated before exporting their Privy wallet\"));let i=e?.address??gr(f)?.address;if(!i)return void r(Error(\"User does not have an HD Solana wallet.\"));let{signingWallet:o,rootWallet:s}=Dr(f,i);if(!o||!s)return void r(Error(\"Must have a Privy wallet before exporting\"));if(le(!0),!await ew()||!re)return void r(Error(\"Must have valid access token to enroll in MFA\"));if(!re)return void r(Error(\"Must have a Privy wallet before exporting\"));let{entropyId:l,entropyIdVerifier:c}=jn(s);de({connectWallet:{entropyId:l,entropyIdVerifier:c,onCompleteNavigateTo:cr.EMBEDDED_WALLET_KEY_EXPORT_SCREEN,onFailure:r,shouldForceMFA:!0},keyExport:{appId:n.appId,appClientId:n.clientId,origin:a.apiUrl,walletToExport:o,primaryWallet:s,onSuccess:t,onFailure:r}}),Se(cr.EMBEDDED_WALLET_CONNECTING_SCREEN)})),setReadyToTrue:e=>{m(!0),ue?.(e)},updateWallets:()=>Ve(),fundWallet:async(e,t)=>{let n=cr.FUNDING_METHOD_SELECTION_SCREEN;de({funding:fa({address:e,appConfig:ie,fundWalletConfig:t,methodScreen:n})}),Se(n)},openModal:Se,requestFarcasterSignerStatus:async e=>{let t=await ew(),n=f?.linkedAccounts.find((e=>\"wallet\"===e.type&&\"privy\"===e.walletClientType));if(!t)throw Error(\"Must have valid access token to connect with Farcaster\");if(!re||!n)throw Error(\"Must have an embedded wallet to use Farcaster signers\");if(!f?.farcaster?.fid)throw Error(\"Must have Farcaster account to use Farcaster signers\");let r=await a.requestFarcasterSignerStatus(e);return\"approved\"===r.status&&w(await a.getAuthenticatedUser()||f||null),r},connectCoinbaseSmartWallet:async()=>{ie.externalWallets.coinbaseWallet.connectionOptions=\"smartWalletOnly\";let e=a.connectors?.findWalletConnector(\"coinbase_wallet\",\"coinbase_smart_wallet\")||a.connectors?.findWalletConnector(\"coinbase_wallet\",\"coinbase_wallet\");if(e)return e.updateConnectionPreference(\"smartWalletOnly\"),Le(e);await Pe(\"coinbase_wallet\",\"coinbase_smart_wallet\")},initiateAccountTransfer:async({nonce:e,account:t,accountType:n,externalWalletMetadata:r,telegramAuthResult:i,telegramWebAppData:o,farcasterEmbeddedAddress:s,oAuthUserInfo:l})=>{let c=await a.sendAccountTransferRequest({nonce:e,account:t,accountType:n,externalWalletMetadata:r,telegramAuthResult:i,telegramWebAppData:o,farcasterEmbeddedAddress:s,oAuthUserInfo:l});return w(c),c}};Zf=lt.recoverPrimaryWallet,Jf=lt.recoverPrimaryWallet,Qf=lt.solanaSignMessage;let ct=i((()=>({wallets:k,ready:ye&&Ae})),[k,ye,Ae]),dt=a.authFlow instanceof qo,ut=!ie.headless&&ie.captchaEnabled&&!y&&(p||dt);/*#__PURE__*/return t(Wr.Provider,{value:st,children:/*#__PURE__*/t(wa.Provider,{value:be,children:/*#__PURE__*/t(jr.Provider,{value:ct,children:/*#__PURE__*/t(Rn,{...ie,children:/*#__PURE__*/e(D.Provider,{value:lt,children:[/*#__PURE__*/t(On,{children:/*#__PURE__*/e(Gr,{data:ce,setModalData:de,setInitialScreen:F,initialScreen:U,authenticated:y,open:u,children:[n.children,ut&&/*#__PURE__*/t($s,{delayedExecution:!1}),/*#__PURE__*/t(sf,{theme:{...ie.appearance.palette||{}}}),!ie.render.standalone&&/*#__PURE__*/t(vf,{open:u})]})}),se&&oe?/*#__PURE__*/t(Of,{appId:n.appId,appClientId:n.clientId,clientAnalyticsId:a.clientAnalyticsId,origin:a.apiUrl,mfaMethods:f?.mfaMethods,mfaPromise:Ee,mfaSubmitPromise:Te,onLoad:ae,onLoadFailed:()=>null}):null,ie.loginConfig.telegramAuthConfiguration&&\n/*#__PURE__*/t(nl,{$if:!0,children:/*#__PURE__*/t(Tf,{scriptHost:n.apiUrl||ir,botUsername:ie.loginConfig.telegramAuthConfiguration.botName})})]})})})})})};const dw=()=>{let{getAccessToken:e,user:t}=ur(),{refreshSessionAndUser:n,initializeWalletProxy:r}=x(),a=ua();return{importWallet:c((({privateKey:i})=>fo({getAccessToken:e,user:t,initializeWalletProxy:r,refreshSessionAndUser:n,emitPrivyEvent:a},{privateKey:i,chainType:\"ethereum\"})),[t,e,n,r,a])}},uw=()=>{let{importWallet:e}=dw();return{...h(Wr),importWallet:e}},hw=e=>{ta(\"login\",e);let t=it(),n=Fr(),{ready:r,user:a}=ur(),{initLoginWithHeadlessOAuth:i,loginWithHeadlessOAuth:s,oAuthState:l,setOAuthState:d,isHeadlessOAuthLoading:u}=x(),h=c((async e=>{try{if(t.enabled&&\"success\"!==t.status)throw new qe(t.error,null,A.CAPTCHA_FAILURE);return await i(e.provider,t.token,e.disableSignup)}catch(e){throw d({status:\"error\",error:e}),e}}),[i,t]),p=c((async()=>{let e=Ho();try{if(a)return console.warn(\"Cannot login with OAuth when already logged in\"),a;if(!e.inProgress)throw Error(\"Cannot login with OAuth because no OAuth flow is in progress\");if(e.popupFlow)return}catch(e){throw d({status:\"error\",error:e}),e}try{return await s(e)}catch(e){throw d({status:\"error\",error:e}),e}finally{Vo()}}),[s]);return o((()=>{let e=Ho();r&&n&&e.inProgress&&!e.withPrivyUi&&!e.popupFlow&&p().catch((()=>{}))}),[r,n]),{initOAuth:h,loading:u,state:l}},pw=e=>{let t=it(),{emailOtpState:n,setEmailOtpState:r,initLoginWithEmail:a,loginWithCode:i}=x();return{sendCode:c((async({email:n,disableSignup:i})=>{try{let e;if(!n)throw Error(\"Email required to send OTP code\");if(t.enabled&&\"error\"===t.status)throw new qe(t.error,null,A.CAPTCHA_FAILURE);return t.enabled&&\"success\"!==t.status&&(t.execute(),e=await t.waitForResult()),await a({email:n,captchaToken:e,disableSignup:i,withPrivyUi:!1})}catch(n){throw r({status:\"error\",error:n}),e?.onError?.(n.privyErrorCode||A.UNKNOWN_AUTH_ERROR),n}}),[a]),loginWithCode:c((async({code:n})=>{try{if(t.enabled&&\"error\"===t.status)throw new qe(t.error,null,A.CAPTCHA_FAILURE);let{user:r,isNewUser:a,wasAlreadyAuthenticated:o,linkedAccount:s}=await i(n);e?.onComplete?.({user:r,isNewUser:a,wasAlreadyAuthenticated:o,loginMethod:\"email\",loginAccount:s})}catch(n){throw r({status:\"error\",error:n}),e?.onError?.(n.privyErrorCode||A.UNKNOWN_AUTH_ERROR),n}}),[i,t.status]),state:n}},mw=e=>{let t=it(),{initSignupWithPasskey:n,signupWithPasskey:r,passkeyAuthState:a,setPasskeyAuthState:i}=x();return{signupWithPasskey:c((async()=>{try{let a;if(t.enabled&&\"error\"===t.status)throw new qe(t.error,null,A.CAPTCHA_FAILURE);t.enabled&&\"success\"!==t.status&&(t.execute(),a=await t.waitForResult()),await n({captchaToken:a,withPrivyUi:!1});let{user:i,isNewUser:o,wasAlreadyAuthenticated:s,loginAccount:l}=await r();e?.onComplete?.({user:i,isNewUser:o,wasAlreadyAuthenticated:s,loginMethod:\"passkey\",loginAccount:l})}catch(t){throw i({status:\"error\",error:t}),e?.onError?.(t.privyErrorCode||A.UNKNOWN_AUTH_ERROR),t}}),[r,t.status]),state:a}},yw=e=>{let t=it(),{initLoginWithPasskey:n,loginWithPasskey:r,passkeyAuthState:a,setPasskeyAuthState:i}=x();return{loginWithPasskey:c((async a=>{try{let i;if(t.enabled&&\"error\"===t.status)throw new qe(t.error,null,A.CAPTCHA_FAILURE);t.enabled&&\"success\"!==t.status&&(t.execute(),i=await t.waitForResult()),await n({captchaToken:i,withPrivyUi:!1});let{user:o,isNewUser:s,wasAlreadyAuthenticated:l,loginAccount:c}=await r(a);e?.onComplete?.({user:o,isNewUser:s,wasAlreadyAuthenticated:l,loginMethod:\"passkey\",loginAccount:c})}catch(a){throw i({status:\"error\",error:a}),e?.onError?.(a.privyErrorCode||A.UNKNOWN_AUTH_ERROR),a}}),[r,t.status]),state:a}},gw=e=>{let{initLinkWithPasskey:t,linkWithPasskey:n,passkeyAuthState:r,setPasskeyAuthState:a}=x();return{linkWithPasskey:c((async()=>{try{await t();let r=await n();if(!r)throw Error(\"Error, user not found\");let a=r.linkedAccounts.filter((e=>\"passkey\"===e.type)).sort(((e,t)=>t.latestVerifiedAt.getTime()-e.latestVerifiedAt.getTime()))[0];e?.onSuccess?.({user:r,linkMethod:\"passkey\",linkedAccount:a})}catch(t){throw a({status:\"error\",error:t}),e?.onError?.(t.privyErrorCode||A.UNKNOWN_AUTH_ERROR,{linkMethod:\"passkey\"}),t}}),[n]),state:r}},fw=e=>{let t=it(),{smsOtpState:n,setSmsOtpState:r,initLoginWithSms:a,loginWithCode:i}=x();return{sendCode:c((async({phoneNumber:n,disableSignup:i})=>{try{let e;if(!n)throw Error(\"SMS required to send OTP code\");if(t.enabled&&\"error\"===t.status)throw new qe(t.error,null,A.CAPTCHA_FAILURE);return t.enabled&&\"success\"!==t.status&&(t.execute(),e=await t.waitForResult()),await a({phoneNumber:n,captchaToken:e,disableSignup:i,withPrivyUi:!1})}catch(n){throw r({status:\"error\",error:n}),e?.onError?.(n.privyErrorCode||A.UNKNOWN_AUTH_ERROR),n}}),[a]),loginWithCode:c((async({code:n})=>{try{if(t.enabled&&\"success\"!==t.status)throw new qe(t.error,null,A.CAPTCHA_FAILURE);let{user:r,isNewUser:a,wasAlreadyAuthenticated:o,linkedAccount:s}=await i(n);e?.onComplete?.({user:r,isNewUser:a,wasAlreadyAuthenticated:o,loginMethod:\"sms\",loginAccount:s})}catch(n){throw r({status:\"error\",error:n}),e?.onError?.(n.privyErrorCode||A.UNKNOWN_AUTH_ERROR),n}}),[i,t.status]),state:n}},ww=e=>{let t=it(),{siweState:n,setSiweState:r,linkWithSiwe:a,generateSiweMessage:i}=x();return{generateSiweMessage:c((async({address:t,chainId:n})=>{try{if(!t||!n)throw Error(\"wallet address and chainId required to generate nonce\");return await i({address:t,chainId:n}).then((e=>e))}catch(t){throw r({status:\"error\",error:t}),e?.onError?.(t.privyErrorCode||A.UNKNOWN_AUTH_ERROR,{linkMethod:\"siwe\"}),t}}),[i]),linkWithSiwe:c((async({signature:n,message:i,chainId:o,walletClientType:s,connectorType:l})=>{try{if(t.enabled&&\"success\"!==t.status)throw new qe(t.error,null,A.CAPTCHA_FAILURE);let{user:r,linkedAccount:c}=await a({message:i,signature:n,chainId:o,walletClientType:s,connectorType:l});c&&e?.onSuccess?.({user:r,linkMethod:\"siwe\",linkedAccount:c})}catch(n){throw r({status:\"error\",error:n}),e?.onError?.(n.privyErrorCode||A.UNKNOWN_AUTH_ERROR,{linkMethod:\"siwe\"}),n}}),[a,t.status]),state:n}};function vw(){let{signTransaction:e}=h(Wr);return{signTransaction:e}}function Cw(e){let{linkEmail:t,linkPhone:n,linkWallet:r,linkGoogle:a,linkApple:i,linkTwitter:o,linkDiscord:s,linkGithub:l,linkLinkedIn:c,linkTiktok:d,linkSpotify:u,linkInstagram:p,linkTelegram:m,linkFarcaster:y}=h(Wr);return ta(\"linkAccount\",e),{linkEmail:t,linkPhone:n,linkWallet:r,linkGoogle:a,linkApple:i,linkTwitter:o,linkDiscord:s,linkGithub:l,linkLinkedIn:c,linkTiktok:d,linkSpotify:u,linkInstagram:p,linkFarcaster:y,linkTelegram:m}}function Ew(e){let{updateEmail:t,updatePhone:n}=h(Wr);return ta(\"update\",e),{updateEmail:t,updatePhone:n}}function Tw(e){let{createWallet:t}=h(Wr);return ta(\"createWallet\",e),{createWallet:t}}const bw=()=>{let{connectCoinbaseSmartWallet:e}=x();return{connectCoinbaseSmartWallet:e}},Aw=()=>{let{startCrossAppAuthFlow:e,unlinkCrossAppAccount:t,signMessageWithCrossAppWallet:n,signTypedDataWithCrossAppWallet:r,sendTransactionWithCrossAppWallet:a}=ur();return{loginWithCrossAppAccount:({appId:t})=>e({appId:t,action:\"login\"}),linkCrossAppAccount:({appId:t})=>e({appId:t,action:\"link\"}),unlinkCrossAppAccount:t,signMessage:n,signTypedData:r,sendTransaction:a}};function _w(e){let{sendTransaction:t}=h(Wr);return ta(\"sendTransaction\",e),{sendTransaction:t}}function kw(e){let{setWalletPassword:t}=h(Wr);return ta(\"setWalletPassword\",e),{setWalletPassword:t}}function Iw(){let{createGuestAccount:e}=h(Wr);return{createGuestAccount:e}}function Nw(e){let{setWalletRecovery:t}=h(Wr);return ta(\"setWalletRecovery\",e),{setWalletRecovery:t}}function xw(e){let{signMessage:t}=h(Wr);return ta(\"signMessage\",e),{signMessage:t}}function Sw(e){let{signTypedData:t}=h(Wr);return ta(\"signTypedData\",e),{signTypedData:t}}const Rw=()=>{let{isModalOpen:e}=h(Wr);return{isOpen:e}};function Ow(e){let{getAccessToken:t}=h(Wr);return ta(\"accessToken\",e),{getAccessToken:t}}function Ww(e){let{authenticated:t,user:n}=ur(),{initLoginWithOAuth:r}=x(),a=ua();return ta(\"oAuthAuthorization\",e),{reauthorize:e=>Mw(t,n,r,a,e.provider)}}let Mw=async(e,t,n,r,a)=>{if(!e)throw r(\"linkAccount\",\"onError\",A.MUST_BE_AUTHENTICATED,{linkMethod:a}),new T(\"User must be authenticated before linking an account.\");if(!t?.linkedAccounts.some((e=>e.type.includes(a))))throw new T(`OAuth account of type ${a} not linked to the account.`);await n(a)};const Pw=e=>{let{customAuthStatus:t}=x();return ta(\"customAuth\",e),{status:t}};function Lw(){let{getFarcasterSignerPublicKey:e,signFarcasterMessage:t,requestFarcasterSignerFromWarpcast:n}=ur();return{getFarcasterSignerPublicKey:e,signFarcasterMessage:t,requestFarcasterSignerFromWarpcast:n}}const Dw=()=>{let{revokeDelegatedWallets:e,delegateWallet:t}=x();return{delegateWallet:async({address:e,chainType:n})=>await t({address:e,chainType:n,showDelegationUIs:!0}),revokeWallets:async()=>await e({showDelegationUIs:!0})}},Uw=()=>{let{setUser:e,client:t}=h(D),{user:n}=h(Wr);return{user:n,refreshUser:c((async()=>{let n=await(t?.updateUserAndIdToken());return e(n??null),n}),[t,e])}},Fw=e=>{let t=it(),{initLoginWithTelegram:n,loginWithTelegram:r,telegramAuthState:a,setTelegramAuthState:i}=x();return{login:c((async a=>{try{if(t.enabled&&\"success\"!==t.status)throw new qe(t.error,null,A.CAPTCHA_FAILURE);await n(t.token,a?.disableSignup);let{user:i,isNewUser:o,loginAccount:s,wasAlreadyAuthenticated:l}=await r({intent:\"login\"});e?.onComplete?.({user:i,isNewUser:o,wasAlreadyAuthenticated:l,loginMethod:\"telegram\",loginAccount:s})}catch(a){throw i({status:\"error\",error:a}),e?.onError?.(a.privyErrorCode||A.UNKNOWN_AUTH_ERROR),a}}),[n,r,t]),state:a}},Bw=()=>{let{revokeDelegatedWallets:e,delegateWallet:t}=x();return{delegateWallet:async({address:e,chainType:n})=>await t({address:e,chainType:n,showDelegationUIs:!1}),revokeWallets:async()=>await e({showDelegationUIs:!1})}};export{$s as Captcha,Is as ConnectorManager,Ke as EthereumWalletConnector,vf as LoginModal,Hs as PrivyClient,lw as PrivyProvider,qn as VERSION,Hc as errorIndicatesMaxMfaRetries,Bc as errorIndicatesMfaTimeout,zc as errorIndicatesMfaVerificationFailed,Xf as getAccessToken,bw as useConnectCoinbaseSmartWallet,Tw as useCreateWallet,Aw as useCrossAppAccounts,Pw as useCustomAuth,Dw as useDelegatedActions,Lw as useFarcasterSigner,Iw as useGuestAccounts,Bw as useHeadlessDelegatedActions,Ps as useIdentityToken,dw as useImportWallet,Cw as useLinkAccount,gw as useLinkWithPasskey,ww as useLinkWithSiwe,pw as useLoginWithEmail,hw as useLoginWithOAuth,yw as useLoginWithPasskey,fw as useLoginWithSms,Fw as useLoginWithTelegram,At as useLogout,em as useMfa,tm as useMfaEnrollment,Rw as useModalStatus,Ww as useOAuthTokens,uw as usePrivy,js as useRegisterMfaListener,_w as useSendTransaction,kw as useSetWalletPassword,Nw as useSetWalletRecovery,xw as useSignMessage,vw as useSignTransaction,Sw as useSignTypedData,mw as useSignupWithPasskey,oa as useSolanaWallets,Ow as useToken,Ew as useUpdateAccount,Uw as useUser,Tr as useWallets};\n","import {\n getRandomValues,\n getRandomNumbersInRange,\n randomizeCharacters,\n} from 'secure-password-utilities/random';\nimport {\n DIGIT_CHARSET,\n LOWERCASE_CHARSET,\n UPPERCASE_CHARSET,\n SYMBOL_CHARSET,\n} from 'secure-password-utilities/constants';\n\nexport type PasswordOptionType =\n // `true` means include [character type], `false` means exclude [character type]\n | boolean\n // <number> means include exactly <number> [character type]s\n | number\n // { min: <number> } means include at least <number> [character type]s\n | { min: number };\n\nexport type PasswordOptionsType = {\n digits?: PasswordOptionType;\n symbols?: PasswordOptionType;\n lowercase?: PasswordOptionType;\n uppercase?: PasswordOptionType;\n charset?: {\n digits?: string;\n symbols?: string;\n lowercase?: string;\n uppercase?: string;\n };\n};\n\n/**\n * Generate a random password.\n *\n * Examples:\n *\n * generatePassword(12); // l[Nz8UfU.o4g\n * generatePassword(8, { symbols: false, digits: 2 }); // k9WTkaP6\n * generatePassword(8, { digits: {min: 2} }); // 0(c67+.f\n *\n * @param length The length of the resulting password.\n * @param options\n * @param options.digits Include or exclude digits.\n * @param options.symbols Include or exclude symbols.\n * @param options.lowercase Include or exclude lowercase.\n * @param options.uppercase Include or exclude uppercase.\n * @param options.charset\n * @param options.charset.digits Override the character set for digits.\n * @param options.charset.symbols Override the character set for symbols.\n * @param options.charset.lowercase Override the character set for lowercase.\n * @param options.charset.uppercase Override the character set for uppercase.\n * @returns A random password.\n */\nexport function generatePassword(length: number, options?: PasswordOptionsType): string {\n options = options || {};\n\n return createPassword(\n length,\n {\n digits: options.digits ?? true,\n symbols: options.symbols ?? true,\n lowercase: options.lowercase ?? true,\n uppercase: options.uppercase ?? true,\n },\n {\n digits: options.charset?.digits ?? DIGIT_CHARSET,\n symbols: options.charset?.symbols ?? SYMBOL_CHARSET,\n lowercase: options.charset?.lowercase ?? LOWERCASE_CHARSET,\n uppercase: options.charset?.uppercase ?? UPPERCASE_CHARSET,\n }\n );\n}\n\ntype PasswordOptionsTypeRequired = {\n digits: PasswordOptionType;\n symbols: PasswordOptionType;\n lowercase: PasswordOptionType;\n uppercase: PasswordOptionType;\n};\n\ntype CharsetType = {\n digits: string;\n symbols: string;\n lowercase: string;\n uppercase: string;\n};\n\nfunction createPassword(\n passwordLength: number,\n options: PasswordOptionsTypeRequired,\n charset: CharsetType\n) {\n validatePasswordOptions(passwordLength, options);\n validateCharsetOptions(charset);\n\n const [initDigitLength, moreDigits] = getInitialLengthForOption(options.digits);\n const [initSymbolLength, moreSymbols] = getInitialLengthForOption(options.symbols);\n const [initLowercaseLength, moreLowercase] = getInitialLengthForOption(options.lowercase);\n const [initUppercaseLength, moreUppercase] = getInitialLengthForOption(options.uppercase);\n\n // Construct the initial response based on the exact or minimum characters\n // specified for digits, symbols, lowercase and uppercase character sets.\n let result =\n generateCharacters(initDigitLength, charset.digits) +\n generateCharacters(initSymbolLength, charset.symbols) +\n generateCharacters(initLowercaseLength, charset.lowercase) +\n generateCharacters(initUppercaseLength, charset.uppercase);\n\n let remainingCharset = '';\n\n if (moreDigits) {\n remainingCharset += charset.digits;\n }\n\n if (moreSymbols) {\n remainingCharset += charset.symbols;\n }\n\n if (moreLowercase) {\n remainingCharset += charset.lowercase;\n }\n\n if (moreUppercase) {\n remainingCharset += charset.uppercase;\n }\n\n result += generateCharacters(passwordLength - result.length, remainingCharset);\n\n return randomizeCharacters(result);\n}\n\nfunction validatePasswordOptions(length: number, options: PasswordOptionsTypeRequired) {\n if (typeof length !== 'number' || length < 1) {\n throw new Error('Invalid option: length option must be a number greater than or equal to 1');\n }\n\n validatePasswordOption('digits', options.digits);\n validatePasswordOption('symbols', options.symbols);\n validatePasswordOption('lowercase', options.lowercase);\n validatePasswordOption('uppercase', options.uppercase);\n\n const [initDigitLength, moreDigits] = getInitialLengthForOption(options.digits);\n const [initSymbolLength, moreSymbols] = getInitialLengthForOption(options.symbols);\n const [initLowercaseLength, moreLowercase] = getInitialLengthForOption(options.lowercase);\n const [initUppercaseLength, moreUppercase] = getInitialLengthForOption(options.uppercase);\n\n const sum = initDigitLength + initSymbolLength + initLowercaseLength + initUppercaseLength;\n\n const allExact = !moreDigits && !moreSymbols && !moreLowercase && !moreUppercase;\n\n if (sum > length) {\n throw new Error('Invalid option: Requested characters exceeds expected length');\n }\n\n if (allExact && sum !== length) {\n throw new Error('Invalid option: Requested less characters than expected length');\n }\n}\n\n// This assumes that any missing options were filled in with a default, i.e., no `undefined` options.\nfunction validatePasswordOption(name: string, option: PasswordOptionType) {\n if (typeof option === 'boolean') {\n return;\n }\n\n if (typeof option === 'number') {\n if (option < 0) {\n throw new Error(`Invalid option: ${name} option cannot be a negative number`);\n }\n return;\n }\n\n if (option !== null && typeof option === 'object') {\n if (typeof option.min !== 'number' || option.min < 0) {\n throw new Error(\n `Invalid option: ${name} option 'min' property must be a non-negative integer`\n );\n }\n return;\n }\n\n throw new Error(`Invalid option: ${name} option must be a boolean, number, or object`);\n}\n\n// Assumes option has already been validated, populated with defaults, and is thus well-formed.\nfunction getInitialLengthForOption(option: PasswordOptionType): [number, boolean] {\n switch (typeof option) {\n case 'boolean':\n return [0, option];\n case 'number':\n return [option, false];\n default:\n return [option.min, true];\n }\n}\n\nfunction validateCharsetOptions(charsets: CharsetType) {\n validateCharsetOption('digits', charsets.digits);\n validateCharsetOption('symbols', charsets.symbols);\n validateCharsetOption('lowercase', charsets.lowercase);\n validateCharsetOption('uppercase', charsets.uppercase);\n}\n\nfunction validateCharsetOption(name: string, charset: string) {\n if (typeof charset !== 'string') {\n throw new Error(`Invalid charset option: ${name} charset must be a string`);\n }\n\n if (charset.length !== new Set(charset).size) {\n throw new Error(`Invalid charset option: ${name} charset contains duplicate characters`);\n }\n}\n\n/**\n * Generate a random digit pin.\n *\n * Examples:\n *\n * generatePin(6); // 036919\n * generatePin(8); // 45958396\n *\n * @param length The length of the resulting pin.\n * @returns A random digit pin.\n */\nexport function generatePin(length: number) {\n if (typeof length !== 'number' || length < 1) {\n throw new Error(\n 'Invalid argument: length argument must be a number greater than or equal to 1'\n );\n }\n\n return generateCharacters(length, DIGIT_CHARSET);\n}\n\n/**\n * Generate a string of `length` characters chosen randomly from the given `charset`.\n *\n * Examples:\n *\n * generateCharacters(4, '$%^&'); // &$&^\n * generateCharacters(6, '0123456789'); // 947682\n * generateCharacters(6, 'abcdefghijklmnopqrstuvwxyz'); // ihdrnn\n *\n * @param length The number of random characters to generate.\n * @param charset The set of characters to randomly sample from.\n * @returns A random string of `length` characters from `charset`.\n */\nexport function generateCharacters(length: number, charset: string) {\n if (typeof length !== 'number' || length < 0) {\n throw new Error(\n 'Invalid argument: length argument must be a number greater than or equal to 0'\n );\n }\n\n if (typeof charset !== 'string' || charset.length < 2) {\n throw new Error(\n 'Invalid argument: charset argument must be a string with length greater than or equal to 2'\n );\n }\n\n return getRandomValues(length, charset.length).reduce((characters, i) => {\n return characters + charset[i];\n }, '');\n}\n\n/**\n * Generate a memorable passphrase comprised of words chosen randomly from the given `wordlist`.\n *\n * There are wordlists available in the wordlists module, or you can provide your own.\n *\n * The word separator defaults to a dash (`-`), but you can customize this behavior using the third argument. \"-\"\n *\n * Examples:\n *\n * generatePassphrase(6, DEFAULT_WORDLIST); // canopener-uncanny-hatchet-murky-agony-traitor\n * generatePassphrase(6, DEFAULT_WORDLIST); // backpack-craftwork-sweat-postcard-imaging-litter\n * generatePassphrase(6, DEFAULT_WORDLIST, '_'); // goldfish_scorpion_antiviral_pursuit_demanding_motto\n *\n * @param length The number of words selected at random.\n * @param wordlist The list of words to sample from.\n * @param sep The separator to use when joining the words in the passphrase. Defaults to '-'.\n * @returns A memorable passphrase.\n */\nexport function generatePassphrase(length: number, wordlist: readonly string[], sep = '-') {\n if (typeof length !== 'number' || length < 1) {\n throw new Error(\n 'Invalid argument: length argument must be a number greater than or equal to 1'\n );\n }\n\n if (!Array.isArray(wordlist) || wordlist.length < 2) {\n throw new Error(\n 'Invalid argument: wordlist argument must be an array with length greater than or equal to 2'\n );\n }\n\n if (typeof sep !== 'string') {\n throw new Error('Invalid argument: sep argument must be a string');\n }\n\n return getRandomNumbersInRange(length, 0, wordlist.length).reduce((passphrase, value, i) => {\n const word = wordlist[value];\n return passphrase + (i === 0 ? word : sep + word);\n }, '');\n}\n","const e=(e,c=!0)=>e.reduce(((e,o)=>({...e,[o]:c})),{});export{e as toObjectKeys};\n","import type { Abi, AbiStateMutability } from 'abitype'\n\nimport { AbiFunctionSignatureNotFoundError } from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n} from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'\nimport { type SliceErrorType, slice } from '../data/slice.js'\nimport {\n type ToFunctionSelectorErrorType,\n toFunctionSelector,\n} from '../hash/toFunctionSelector.js'\nimport {\n type DecodeAbiParametersErrorType,\n decodeAbiParameters,\n} from './decodeAbiParameters.js'\nimport { type FormatAbiItemErrorType, formatAbiItem } from './formatAbiItem.js'\n\nexport type DecodeFunctionDataParameters<\n abi extends Abi | readonly unknown[] = Abi,\n> = {\n abi: abi\n data: Hex\n}\n\nexport type DecodeFunctionDataReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n ///\n allFunctionNames extends\n ContractFunctionName<abi> = ContractFunctionName<abi>,\n> = IsNarrowable<abi, Abi> extends true\n ? UnionEvaluate<\n {\n [functionName in allFunctionNames]: {\n args: ContractFunctionArgs<abi, AbiStateMutability, functionName>\n functionName: functionName\n }\n }[allFunctionNames]\n >\n : {\n args: readonly unknown[] | undefined\n functionName: string\n }\n\nexport type DecodeFunctionDataErrorType =\n | AbiFunctionSignatureNotFoundError\n | DecodeAbiParametersErrorType\n | FormatAbiItemErrorType\n | ToFunctionSelectorErrorType\n | SliceErrorType\n | ErrorType\n\nexport function decodeFunctionData<const abi extends Abi | readonly unknown[]>(\n parameters: DecodeFunctionDataParameters<abi>,\n) {\n const { abi, data } = parameters as DecodeFunctionDataParameters\n const signature = slice(data, 0, 4)\n const description = abi.find(\n (x) =>\n x.type === 'function' &&\n signature === toFunctionSelector(formatAbiItem(x)),\n )\n if (!description)\n throw new AbiFunctionSignatureNotFoundError(signature, {\n docsPath: '/docs/contract/decodeFunctionData',\n })\n return {\n functionName: (description as { name: string }).name,\n args: ('inputs' in description &&\n description.inputs &&\n description.inputs.length > 0\n ? decodeAbiParameters(description.inputs, slice(data, 4))\n : undefined) as readonly unknown[] | undefined,\n } as DecodeFunctionDataReturnType<abi>\n}\n","import{$ as e,a5 as t}from\"./useWallets-CIsjbJl7.mjs\";import{a,P as r}from\"./internal-context-mSHyF0Gq.mjs\";const i=async({emitPrivyEvent:i,getAccessToken:n,initializeWalletProxy:o,refreshSessionAndUser:s,user:l},{privateKey:c,chainType:E})=>{if(!l)throw i(\"linkAccount\",\"onError\",a.MUST_BE_AUTHENTICATED,{linkMethod:\"siwe\"}),new r(\"User must be authenticated before linking an account.\");let[T,m]=await Promise.all([n(),o(15e3)]);if(!m||!T)throw i(\"linkAccount\",\"onError\",a.MUST_BE_AUTHENTICATED,{linkMethod:\"siwe\"}),new r(\"User must be authenticated before linking an account.\");await m.importWallet({privateKey:c,accessToken:T,chainType:E});let u=await s(),w=\"solana\"===E?e(u):t(u);if(!w)throw i(\"createWallet\",\"onError\",a.UNKNOWN_EMBEDDED_WALLET_ERROR),Error(\"Failed to import wallet\");return i(\"createWallet\",\"onSuccess\",{wallet:w}),w};export{i};\n","import{FetchError as e}from\"ofetch\";import{createContext as t,useContext as a}from\"react\";var s;class i extends Error{toString(){return`${this.type}${this.privyErrorCode?`-${this.privyErrorCode}`:\"\"}: ${this.message}${this.cause?` [cause: ${this.cause}]`:\"\"}`}constructor(e,t,a){super(e),t instanceof Error&&(this.cause=t),this.privyErrorCode=a}}class n extends i{constructor(e,t,a,s,i,n){super(a,s,i),this.type=e,this.status=t,this.data=n}}class _ extends i{constructor(e,t,a){super(e,t,a),this.type=\"client_error\"}}class r extends _{constructor(){super(\"Request timed out\",void 0,\"client_request_timeout\")}}class o extends i{constructor(e,t,a){super(e,t,a),this.type=\"connector_error\"}}const l=t=>{if(t instanceof i)return t;if(!(t instanceof e))return d(t);if(!t.response)return new n(\"api_error\",null,t.message,t);let{type:a,message:s,error:_,code:r}=t.data;return new n(a||\"ApiError\",t.response.status,s||_,t,r,t.data)},d=e=>e instanceof i?e:e instanceof Error?new _(e.message,e):new _(`Internal error: ${e}`);var E=((s={}).OAUTH_ACCOUNT_SUSPENDED=\"oauth_account_suspended\",s.MISSING_OR_INVALID_PRIVY_APP_ID=\"missing_or_invalid_privy_app_id\",s.MISSING_OR_INVALID_PRIVY_ACCOUNT_ID=\"missing_or_invalid_privy_account_id\",s.MISSING_OR_INVALID_TOKEN=\"missing_or_invalid_token\",s.INVALID_DATA=\"invalid_data\",s.INVALID_CAPTCHA=\"invalid_captcha\",s.LINKED_TO_ANOTHER_USER=\"linked_to_another_user\",s.CANNOT_LINK_MORE_OF_TYPE=\"cannot_link_more_of_type\",s.FAILED_TO_LINK_ACCOUNT=\"failed_to_link_account\",s.FAILED_TO_UPDATE_ACCOUNT=\"failed_to_update_account\",s.USER_EXITED_UPDATE_FLOW=\"exited_update_flow\",s.ALLOWLIST_REJECTED=\"allowlist_rejected\",s.OAUTH_USER_DENIED=\"oauth_user_denied\",s.OAUTH_UNEXPECTED=\"oauth_unexpected\",s.UNKNOWN_AUTH_ERROR=\"unknown_auth_error\",s.USER_EXITED_AUTH_FLOW=\"exited_auth_flow\",s.USER_EXITED_LINK_FLOW=\"exited_link_flow\",s.USER_EXITED_SET_PASSWORD_FLOW=\"user_exited_set_password_flow\",s.MUST_BE_AUTHENTICATED=\"must_be_authenticated\",s.UNKNOWN_CONNECT_WALLET_ERROR=\"unknown_connect_wallet_error\",s.GENERIC_CONNECT_WALLET_ERROR=\"generic_connect_wallet_error\",s.CLIENT_REQUEST_TIMEOUT=\"client_request_timeout\",s.INVALID_CREDENTIALS=\"invalid_credentials\",s.MISSING_MFA_CREDENTIALS=\"missing_or_invalid_mfa\",s.UNKNOWN_MFA_ERROR=\"unknown_mfa_error\",s.EMBEDDED_WALLET_ALREADY_EXISTS=\"embedded_wallet_already_exists\",s.EMBEDDED_WALLET_NOT_FOUND=\"embedded_wallet_not_found\",s.EMBEDDED_WALLET_CREATE_ERROR=\"embedded_wallet_create_error\",s.UNKNOWN_EMBEDDED_WALLET_ERROR=\"unknown_embedded_wallet_error\",s.EMBEDDED_WALLET_PASSWORD_UNCONFIRMED=\"embedded_wallet_password_unconfirmed\",s.EMBEDDED_WALLET_PASSWORD_ALREADY_EXISTS=\"embedded_wallet_password_already_exists\",s.EMBEDDED_WALLET_RECOVERY_ALREADY_EXISTS=\"embedded_wallet_recovery_already_exists\",s.TRANSACTION_FAILURE=\"transaction_failure\",s.UNSUPPORTED_CHAIN_ID=\"unsupported_chain_id\",s.NOT_SUPPORTED=\"not_supported\",s.CAPTCHA_TIMEOUT=\"captcha_timeout\",s.INVALID_MESSAGE=\"invalid_message\",s.UNABLE_TO_SIGN=\"unable_to_sign\",s.CAPTCHA_FAILURE=\"captcha_failure\",s.CAPTCHA_DISABLED=\"captcha_disabled\",s.SESSION_STORAGE_UNAVAILABLE=\"session_storage_unavailable\",s.TOO_MANY_REQUESTS=\"too_many_requests\",s.USER_LIMIT_REACHED=\"max_accounts_reached\",s.DISALLOWED_LOGIN_METHOD=\"disallowed_login_method\",s.DISALLOWED_PLUS_EMAIL=\"disallowed_plus_email\",s.PASSKEY_NOT_ALLOWED=\"passkey_not_allowed\",s.USER_DOES_NOT_EXIST=\"user_does_not_exist\",s.INSUFFICIENT_BALANCE=\"insufficient_balance\",s.ACCOUNT_TRANSFER_REQUIRED=\"account_transfer_required\",s);class u extends _{constructor(){super(\"Method called before `ready`. Ensure you wait until `ready` is true before calling.\")}}class c extends _{constructor(e=\"Embedded wallet error\",t){super(e,t,\"unknown_embedded_wallet_error\")}}class A extends _{constructor(e=\"User must be authenticated\"){super(e,void 0,\"must_be_authenticated\")}}class S extends _{constructor(e){super(\"This application is in development mode and must be upgraded to production to log in new users.\",e,\"max_accounts_reached\")}}const T=()=>{throw Error(\"You need to wrap your application with the <PrivyProvider> initialized with your app id.\")},h=e=>()=>{throw Error(e.trim())},p=/*#__PURE__*/t({setAuthenticated:T,setUser:T,isNewUserThisSession:!1,walletConnectionStatus:null,connectors:[],solanaWallets:[],rpcConfig:{rpcUrls:{}},showFiatPrices:!0,chains:[],clientAnalyticsId:null,pendingTransaction:null,client:null,appId:\"notAdded\",customAuthStatus:{status:\"not-enabled\"},hideWalletUIs:{current:!1},nativeTokenSymbolForChainId:T,initializeWalletProxy:T,getAuthMeta:T,getAuthFlow:T,closePrivyModal:T,openPrivyModal:T,connectWallet:T,initLoginWithWallet:T,loginWithWallet:T,initLoginWithFarcaster:T,loginWithFarcaster:T,loginWithCode:T,initLoginWithEmail:T,initLoginWithSms:T,initUpdateEmail:T,initUpdatePhone:T,resendEmailCode:T,resendSmsCode:T,initLoginWithHeadlessOAuth:T,loginWithHeadlessOAuth:T,crossAppAuthFlow:T,initLoginWithOAuth:T,recoveryOAuthFlow:T,loginWithOAuth:T,passkeyAuthState:{status:\"initial\"},setPasskeyAuthState:T,initSignupWithPasskey:T,signupWithPasskey:T,initLoginWithPasskey:T,loginWithPasskey:T,initLinkWithPasskey:T,linkWithPasskey:T,refreshSessionAndUser:T,loginWithGuestAccountFlow:T,walletProxy:null,createAnalyticsEvent:T,acceptTerms:T,getUsdTokenPrice:T,getUsdPriceForSol:T,getSplTokenMetadata:T,recoverPrimaryWallet:T,updateWallets:T,fundWallet:T,openModal:T,setReadyToTrue:T,requestFarcasterSignerStatus:T,initLoginWithTelegram:T,loginWithTelegram:T,generateSiweMessage:T,generateSiweMessageForSmartWallet:T,linkWithSiwe:T,linkSmartWallet:T,delegateWallet:T,revokeDelegatedWallets:T,embeddedSolanaWallets:null,createEmbeddedSolanaWallet:T,exportSolanaWallet:T,solanaSignMessage:T,sendSolanaTransaction:T,signSolanaTransaction:T,connectCoinbaseSmartWallet:T,initiateAccountTransfer:T,emailOtpState:{status:\"initial\"},setEmailOtpState:T,smsOtpState:{status:\"initial\"},setSmsOtpState:T,siweState:{status:\"initial\"},setSiweState:T,oAuthState:{status:\"initial\"},setOAuthState:T,telegramAuthState:{status:\"initial\"},setTelegramAuthState:T,isHeadlessOAuthLoading:!1,isHeadlessSigning:T}),I=()=>a(p);export{p as I,_ as P,E as a,o as b,r as c,d,n as e,l as f,S as g,c as h,A as i,i as j,u as k,h as l,T as n,I as u};\n","import{getAddress as e}from\"viem/utils\";import{jsx as t,jsxs as a}from\"react/jsx-runtime\";import{useState as i,useMemo as r,useEffect as n,useContext as l,createContext as s,useRef as o}from\"react\";import c from\"tinycolor2\";import{n as p}from\"./internal-context-mSHyF0Gq.mjs\";const d=\"https://auth.privy.io\",u=2e4,E=1400,m=2500,h=4e3,_=\"2.5.0\",f=\"privy:token\",y=\"privy-token\",A=\"privy:refresh_token\",g=\"privy-refresh-token\",C=\"privy:pat\",b=\"privy:id_token\",N=\"privy-id-token\",S=\"privy-session\",T=\"privy:caid\",v=e=>`privy:guest:${e}`,w=e=>`privy:cross-app:${e}`,k=\"privy:state_code\",L=\"privy:code_verifier\",O=\"privy:headless_oauth\",R=\"privy:oauth_disable_signup\",I=e=>`privy:wallet:${e}`,D=\"privy:connectors\",W=\"privy:connections\",M=12e4,U=1,P=\"0x1\",x=3e4,F=\"https://api.moonpay.com/v1\",G=\"https://api.moonpay.com/v1\",H=\"pk_live_hirbpu0cVcLHrjktC9l7fbc9ctjv0SL\",B=\"pk_test_fqWjXZMSFwloh7orvJsRfjiUHXJqFzI\",V=\"deprecated\";function j(e){return e?new Date(1e3*e):null}function K(e,t){return e.slice().sort(((e,t)=>(e.firstVerifiedAt??e.verifiedAt).getTime()-(t.firstVerifiedAt??t.verifiedAt).getTime())).find((e=>e.type===t))}const Y=e=>e?.linkedAccounts.find((e=>\"wallet\"===e.type&&\"privy\"===e.walletClientType&&!e.imported&&\"ethereum\"===e.chainType&&0===e.walletIndex))||null,z=e=>(e?.linkedAccounts??[]).filter((e=>\"wallet\"===e.type&&\"privy\"===e.walletClientType&&!e.imported&&\"ethereum\"===e.chainType)),q=e=>z(e).reduce(((e,t)=>!e||e.walletIndex<t.walletIndex?t:e),null),$=(e,t)=>(e?.linkedAccounts??[]).filter((e=>\"wallet\"===e.type&&\"privy\"===e.walletClientType&&e.chainType===t)),X=e=>(e?.linkedAccounts??[]).filter((e=>\"wallet\"===e.type&&\"privy\"===e.walletClientType&&!e.imported&&\"solana\"===e.chainType)),Z=e=>e?.linkedAccounts.find((e=>\"wallet\"===e.type&&\"privy\"===e.walletClientType&&!e.imported&&\"solana\"===e.chainType&&0===e.walletIndex))||null,J=e=>X(e).reduce(((e,t)=>!e||e.walletIndex<t.walletIndex?t:e),null),Q=e=>e?.linkedAccounts.find((e=>\"wallet\"===e.type&&\"privy\"===e.walletClientType&&e.imported&&\"ethereum\"===e.chainType))||null,ee=e=>e?.linkedAccounts.find((e=>\"wallet\"===e.type&&e.imported&&\"privy\"===e.walletClientType&&\"solana\"===e.chainType))||null,te=(e,t)=>e?.linkedAccounts.find((e=>\"wallet\"===e.type&&\"privy\"===e.walletClientType&&e.address===t))||null,ae=e=>Y(e)??Z(e),ie=e=>{if(\"ethereum\"===e.chainType)return{entropyId:e.address,entropyIdVerifier:\"ethereum-address-verifier\"};if(\"solana\"===e.chainType)return{entropyId:e.address,entropyIdVerifier:\"solana-address-verifier\"};throw Error(\"Failed to get account entropy details\")},re=e=>{let t=ae(e);if(!t)throw Error(\"Failed to find primary wallet\");return ie(t)},ne=(t,a)=>{let i=$(t,\"ethereum\").find((t=>e(t.address)===e(a)));return{signingWallet:i,rootWallet:i?i.imported?i:Y(t):void 0}},le=(e,t)=>{let a=$(e,\"solana\").find((e=>e.address===t));return a?a.imported||0===a.walletIndex?{signingWallet:a,rootWallet:a}:{signingWallet:a,rootWallet:Z(e)}:{}};function se(e){if(!e)return null;let t=function(e){let t=[];for(let a of e){let e=a.type;switch(a.type){case\"wallet\":let i={id:a.id,address:a.address,type:a.type,imported:a.imported,delegated:a.delegated,verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at),chainType:a.chain_type,walletClientType:a.wallet_client_type,connectorType:a.connector_type,recoveryMethod:a.recovery_method,walletIndex:a.wallet_index};t.push(i);break;case\"smart_wallet\":let r={address:a.address,type:a.type,verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at),smartWalletType:a.smart_wallet_type};t.push(r);break;case\"cross_app\":let n={type:a.type,subject:a.subject,embeddedWallets:a.embedded_wallets,smartWallets:a.smart_wallets,providerApp:{id:a.provider_app_id},verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at)};t.push(n);break;case\"email\":let l={address:a.address,type:a.type,verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at)};t.push(l);break;case\"phone\":let s={number:a.phoneNumber,type:a.type,verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at)};t.push(s);break;case\"google_oauth\":let o={subject:a.subject,email:a.email,name:a.name,type:a.type,verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at)};t.push(o);break;case\"spotify_oauth\":let c={subject:a.subject,email:a.email,name:a.name,type:a.type,verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at)};t.push(c);break;case\"instagram_oauth\":let p={subject:a.subject,username:a.username,type:a.type,verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at)};t.push(p);break;case\"twitter_oauth\":let d={subject:a.subject,username:a.username,name:a.name,type:a.type,profilePictureUrl:a.profile_picture_url,verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at)};t.push(d);break;case\"discord_oauth\":let u={subject:a.subject,username:a.username,email:a.email,type:a.type,verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at)};t.push(u);break;case\"github_oauth\":let E={subject:a.subject,username:a.username,name:a.name,email:a.email,type:a.type,verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at)};t.push(E);break;case\"tiktok_oauth\":let m={subject:a.subject,username:a.username,name:a.name,type:a.type,verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at)};t.push(m);break;case\"linkedin_oauth\":let h={subject:a.subject,name:a.name,email:a.email,vanityName:a.vanity_name,type:a.type,verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at)};t.push(h);break;case\"apple_oauth\":let _={subject:a.subject,email:a.email,type:a.type,verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at)};t.push(_);break;case\"custom_auth\":t.push({type:a.type,customUserId:a.custom_user_id,verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at)});break;case\"farcaster\":let f={type:a.type,fid:a.fid,ownerAddress:a.owner_address,displayName:a.display_name,username:a.username,bio:a.bio,pfp:a.profile_picture_url,url:a.homepage_url,verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at),signerPublicKey:a.signer_public_key};t.push(f);break;case\"passkey\":let y={type:a.type,enrolledInMfa:a.enrolled_in_mfa,credentialId:a.credential_id,authenticatorName:a.authenticator_name,createdWithDevice:a.created_with_device,createdWithOs:a.created_with_os,createdWithBrowser:a.created_with_browser,verifiedAt:j(a.verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at)};t.push(y);break;case\"telegram\":let A={type:a.type,telegramUserId:a.telegram_user_id,firstName:a.first_name,lastName:a.last_name,username:a.username,photoUrl:a.photo_url,verifiedAt:j(a.first_verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at)};t.push(A);break;case\"signer\":let g={type:a.type,publicKey:a.public_key,verifiedAt:j(a.first_verified_at),firstVerifiedAt:j(a.first_verified_at),latestVerifiedAt:j(a.latest_verified_at)};t.push(g);break;default:console.warn(`Unrecognized account type: ${e}. Please consider upgrading the Privy SDK.`)}}return t}(e.linked_accounts),a=K(t,\"wallet\"),i=K(t,\"smart_wallet\"),r=K(t,\"email\"),n=K(t,\"phone\"),l=K(t,\"google_oauth\"),s=K(t,\"twitter_oauth\"),o=K(t,\"discord_oauth\"),c=K(t,\"github_oauth\"),p=K(t,\"spotify_oauth\"),d=K(t,\"instagram_oauth\"),u=K(t,\"tiktok_oauth\"),E=K(t,\"linkedin_oauth\"),m=K(t,\"apple_oauth\"),h=K(t,\"farcaster\"),_=K(t,\"telegram\"),f=e.mfa_methods.map((({type:e,verified_at:t})=>({type:e,verifiedAt:j(t)})));return{id:e.id,createdAt:j(e.created_at),linkedAccounts:t,email:r&&{address:r?.address},phone:n&&{number:n?.number},wallet:a&&{id:a.id,address:a.address,chainType:a.chainType,walletClientType:a.walletClientType,connectorType:a.connectorType,recoveryMethod:a.recoveryMethod,imported:a.imported,delegated:a.delegated,walletIndex:a.walletIndex},smartWallet:i&&{address:i.address,smartWalletType:i.smartWalletType},google:l&&{subject:l.subject,email:l.email,name:l.name},twitter:s&&{subject:s.subject,username:s.username,name:s.name,profilePictureUrl:s.profilePictureUrl},discord:o&&{subject:o.subject,username:o.username,email:o.email},github:c&&{subject:c.subject,username:c.username,name:c.name,email:c.email},spotify:p&&{subject:p.subject,email:p.email,name:p.name},instagram:d&&{subject:d.subject,username:d.username},tiktok:u&&{subject:u.subject,username:u.username,name:u.name},linkedin:E&&{subject:E.subject,name:E.name,email:E.email,vanityName:E.vanityName},apple:m&&{subject:m.subject,email:m.email},farcaster:h&&{fid:h.fid,ownerAddress:h.ownerAddress,displayName:h.displayName,username:h.username,bio:h.bio,pfp:h.pfp,url:h.url,signerPublicKey:h.signerPublicKey},telegram:_&&{telegramUserId:_.telegramUserId,firstName:_.firstName,lastName:_.lastName,username:_.username,photoUrl:_.photoUrl},delegatedWallets:[],mfaMethods:f.map((e=>e.type)),hasAcceptedTerms:e.has_accepted_terms??!1,isGuest:e.is_guest,customMetadata:e.custom_metadata}}const oe={id:42161,name:\"Arbitrum One\",network:\"arbitrum\",nativeCurrency:{name:\"Ether\",symbol:\"ETH\",decimals:18},rpcUrls:{privy:{http:[\"https://arbitrum-mainnet.rpc.privy.systems\"]},alchemy:{http:[\"https://arb-mainnet.g.alchemy.com/v2\"],webSocket:[\"wss://arb-mainnet.g.alchemy.com/v2\"]},infura:{http:[\"https://arbitrum-mainnet.infura.io/v3\"],webSocket:[\"wss://arbitrum-mainnet.infura.io/ws/v3\"]},default:{http:[\"https://arb1.arbitrum.io/rpc\"]},public:{http:[\"https://arb1.arbitrum.io/rpc\"]}},blockExplorers:{etherscan:{name:\"Arbiscan\",url:\"https://arbiscan.io\"},default:{name:\"Arbiscan\",url:\"https://arbiscan.io\"}}},ce={id:421614,name:\"Arbitrum Sepolia\",network:\"arbitrum-sepolia\",nativeCurrency:{name:\"Arbitrum Sepolia Ether\",symbol:\"ETH\",decimals:18},rpcUrls:{privy:{http:[\"https://arbitrum-sepolia.rpc.privy.systems\"]},default:{http:[\"https://sepolia-rollup.arbitrum.io/rpc\"]},public:{http:[\"https://sepolia-rollup.arbitrum.io/rpc\"]}},blockExplorers:{default:{name:\"Blockscout\",url:\"https://sepolia-explorer.arbitrum.io\"}},testnet:!0},pe={id:43114,name:\"Avalanche\",network:\"avalanche\",nativeCurrency:{decimals:18,name:\"Avalanche\",symbol:\"AVAX\"},rpcUrls:{default:{http:[\"https://api.avax.network/ext/bc/C/rpc\"]},public:{http:[\"https://api.avax.network/ext/bc/C/rpc\"]}},blockExplorers:{etherscan:{name:\"SnowTrace\",url:\"https://snowtrace.io\"},default:{name:\"SnowTrace\",url:\"https://snowtrace.io\"}}},de={id:43113,name:\"Avalanche Fuji\",network:\"avalanche-fuji\",nativeCurrency:{decimals:18,name:\"Avalanche Fuji\",symbol:\"AVAX\"},rpcUrls:{default:{http:[\"https://api.avax-test.network/ext/bc/C/rpc\"]},public:{http:[\"https://api.avax-test.network/ext/bc/C/rpc\"]}},blockExplorers:{etherscan:{name:\"SnowTrace\",url:\"https://testnet.snowtrace.io\"},default:{name:\"SnowTrace\",url:\"https://testnet.snowtrace.io\"}},testnet:!0},ue={id:8453,network:\"base\",name:\"Base\",nativeCurrency:{name:\"Ether\",symbol:\"ETH\",decimals:18},rpcUrls:{privy:{http:[\"https://base-mainnet.rpc.privy.systems\"]},blast:{http:[\"https://base-mainnet.blastapi.io\"],webSocket:[\"wss://base-mainnet.blastapi.io\"]},default:{http:[\"https://mainnet.base.org\"]},public:{http:[\"https://mainnet.base.org\"]}},blockExplorers:{etherscan:{name:\"Basescan\",url:\"https://basescan.org\"},default:{name:\"Basescan\",url:\"https://basescan.org\"}}},Ee={id:84532,network:\"base-sepolia\",name:\"Base Sepolia\",nativeCurrency:{name:\"Sepolia Ether\",symbol:\"ETH\",decimals:18},rpcUrls:{privy:{http:[\"https://base-sepolia.rpc.privy.systems\"]},default:{http:[\"https://sepolia.base.org\"]},public:{http:[\"https://sepolia.base.org\"]}},blockExplorers:{default:{name:\"Blockscout\",url:\"https://base-sepolia.blockscout.com\"}},testnet:!0},me={id:42220,name:\"Celo Mainnet\",network:\"celo\",nativeCurrency:{decimals:18,name:\"CELO\",symbol:\"CELO\"},rpcUrls:{default:{http:[\"https://forno.celo.org\"]},infura:{http:[\"https://celo-mainnet.infura.io/v3\"]},public:{http:[\"https://forno.celo.org\"]}},blockExplorers:{default:{name:\"Celo Explorer\",url:\"https://explorer.celo.org/mainnet\"},etherscan:{name:\"CeloScan\",url:\"https://celoscan.io\"}},testnet:!1},he={id:59144,network:\"linea-mainnet\",name:\"Linea Mainnet\",nativeCurrency:{name:\"Linea Ether\",symbol:\"ETH\",decimals:18},rpcUrls:{default:{http:[\"https://rpc.linea.build\"],webSocket:[\"wss://rpc.linea.build\"]},public:{http:[\"https://rpc.linea.build\"],webSocket:[\"wss://rpc.linea.build\"]}},blockExplorers:{default:{name:\"Etherscan\",url:\"https://lineascan.build\"},etherscan:{name:\"Etherscan\",url:\"https://lineascan.build\"}},testnet:!1},_e={id:1,network:\"homestead\",name:\"Ethereum\",nativeCurrency:{name:\"Ether\",symbol:\"ETH\",decimals:18},rpcUrls:{privy:{http:[\"https://mainnet.rpc.privy.systems\"]},alchemy:{http:[\"https://eth-mainnet.g.alchemy.com/v2\"],webSocket:[\"wss://eth-mainnet.g.alchemy.com/v2\"]},infura:{http:[\"https://mainnet.infura.io/v3\"],webSocket:[\"wss://mainnet.infura.io/ws/v3\"]},default:{http:[\"https://cloudflare-eth.com\"]},public:{http:[\"https://cloudflare-eth.com\"]}},blockExplorers:{etherscan:{name:\"Etherscan\",url:\"https://etherscan.io\"},default:{name:\"Etherscan\",url:\"https://etherscan.io\"}}},fe={id:10,name:\"OP Mainnet\",network:\"optimism\",nativeCurrency:{name:\"Ether\",symbol:\"ETH\",decimals:18},rpcUrls:{privy:{http:[\"https://optimism-mainnet.rpc.privy.systems\"]},alchemy:{http:[\"https://opt-mainnet.g.alchemy.com/v2\"],webSocket:[\"wss://opt-mainnet.g.alchemy.com/v2\"]},infura:{http:[\"https://optimism-mainnet.infura.io/v3\"],webSocket:[\"wss://optimism-mainnet.infura.io/ws/v3\"]},default:{http:[\"https://mainnet.optimism.io\"]},public:{http:[\"https://mainnet.optimism.io\"]}},blockExplorers:{etherscan:{name:\"Etherscan\",url:\"https://optimistic.etherscan.io\"},default:{name:\"Optimism Explorer\",url:\"https://explorer.optimism.io\"}}},ye={id:11155420,name:\"Optimism Sepolia\",network:\"optimism-sepolia\",nativeCurrency:{name:\"Sepolia Ether\",symbol:\"ETH\",decimals:18},rpcUrls:{privy:{http:[\"https://optimism-sepolia.rpc.privy.systems\"]},default:{http:[\"https://sepolia.optimism.io\"]},public:{http:[\"https://sepolia.optimism.io\"]},infura:{http:[\"https://optimism-sepolia.infura.io/v3\"]}},blockExplorers:{default:{name:\"Blockscout\",url:\"https://optimism-sepolia.blockscout.com\"}},testnet:!0},Ae={id:137,name:\"Polygon Mainnet\",network:\"polygon\",nativeCurrency:{name:\"POL\",symbol:\"POL\",decimals:18},rpcUrls:{privy:{http:[\"https://polygon-mainnet.rpc.privy.systems\"]},alchemy:{http:[\"https://polygon-mainnet.g.alchemy.com/v2\"],webSocket:[\"wss://polygon-mainnet.g.alchemy.com/v2\"]},infura:{http:[\"https://polygon-mainnet.infura.io/v3\"],webSocket:[\"wss://polygon-mainnet.infura.io/ws/v3\"]},default:{http:[\"https://polygon-rpc.com\"]},public:{http:[\"https://polygon-rpc.com\"]}},blockExplorers:{etherscan:{name:\"PolygonScan\",url:\"https://polygonscan.com\"},default:{name:\"PolygonScan\",url:\"https://polygonscan.com\"}}},ge={id:80002,name:\"Polygon Amoy\",network:\"polygon-amoy\",nativeCurrency:{name:\"POL\",symbol:\"POL\",decimals:18},rpcUrls:{privy:{http:[\"https://polygon-amoy.rpc.privy.systems\"]},infura:{http:[\"https://polygon-amoy.infura.io/v3\"],webSocket:[\"wss://polygon-amoy.infura.io/ws/v3\"]},default:{http:[\"https://rpc-amoy.polygon.technology\"]}},blockExplorers:{default:{name:\"OK LINK\",url:\"https://www.oklink.com/amoy\"}},testnet:!0},Ce={id:11155111,network:\"sepolia\",name:\"Sepolia\",nativeCurrency:{name:\"Sepolia Ether\",symbol:\"SEP\",decimals:18},rpcUrls:{privy:{http:[\"https://sepolia.rpc.privy.systems\"]},alchemy:{http:[\"https://eth-sepolia.g.alchemy.com/v2\"],webSocket:[\"wss://eth-sepolia.g.alchemy.com/v2\"]},infura:{http:[\"https://sepolia.infura.io/v3\"],webSocket:[\"wss://sepolia.infura.io/ws/v3\"]},default:{http:[\"https://rpc.sepolia.org\"]},public:{http:[\"https://rpc.sepolia.org\"]}},blockExplorers:{etherscan:{name:\"Etherscan\",url:\"https://sepolia.etherscan.io\"},default:{name:\"Etherscan\",url:\"https://sepolia.etherscan.io\"}},testnet:!0},be={id:7777777,name:\"Zora\",network:\"zora\",nativeCurrency:{decimals:18,name:\"Ether\",symbol:\"ETH\"},rpcUrls:{default:{http:[\"https://rpc.zora.energy\"],webSocket:[\"wss://rpc.zora.energy\"]},public:{http:[\"https://rpc.zora.energy\"],webSocket:[\"wss://rpc.zora.energy\"]}},blockExplorers:{default:{name:\"Explorer\",url:\"https://explorer.zora.energy\"}}},Ne=[oe,ce,Ce,_e,fe,ye,Ae,ge,me,{id:44787,name:\"Celo Alfajores Testnet\",network:\"celo-alfajores\",nativeCurrency:{decimals:18,name:\"CELO\",symbol:\"CELO\"},rpcUrls:{default:{http:[\"https://alfajores-forno.celo-testnet.org\"]},infura:{http:[\"https://celo-alfajores.infura.io/v3\"]},public:{http:[\"https://alfajores-forno.celo-testnet.org\"]}},blockExplorers:{default:{name:\"Celo Explorer\",url:\"https://explorer.celo.org/alfajores\"},etherscan:{name:\"CeloScan\",url:\"https://alfajores.celoscan.io/\"}},testnet:!0},{id:314,name:\"Filecoin - Mainnet\",network:\"filecoin-mainnet\",nativeCurrency:{decimals:18,name:\"filecoin\",symbol:\"FIL\"},rpcUrls:{default:{http:[\"https://api.node.glif.io/rpc/v1\"]},public:{http:[\"https://api.node.glif.io/rpc/v1\"]}},blockExplorers:{default:{name:\"Filfox\",url:\"https://filfox.info/en\"},filscan:{name:\"Filscan\",url:\"https://filscan.io\"},filscout:{name:\"Filscout\",url:\"https://filscout.io/en\"},glif:{name:\"Glif\",url:\"https://explorer.glif.io\"}}},{id:314159,name:\"Filecoin - Calibration testnet\",network:\"filecoin-calibration\",nativeCurrency:{decimals:18,name:\"testnet filecoin\",symbol:\"tFIL\"},rpcUrls:{default:{http:[\"https://api.calibration.node.glif.io/rpc/v1\"]},public:{http:[\"https://api.calibration.node.glif.io/rpc/v1\"]}},blockExplorers:{default:{name:\"Filscan\",url:\"https://calibration.filscan.io\"}}},ue,Ee,{id:80085,network:\"berachain-artio\",name:\"Berachain Artio\",nativeCurrency:{name:\"BERA\",symbol:\"BERA\",decimals:18},rpcUrls:{default:{http:[\"https://berachain-artio.rpc.privy.systems\"]},public:{http:[\"https://berachain-artio.rpc.privy.systems\"]}},blockExplorers:{default:{name:\"Beratrail\",url:\"https://artio.beratrail.io\"}},testnet:!0},{id:42,network:\"lukso\",name:\"LUKSO\",nativeCurrency:{name:\"LUKSO\",symbol:\"LYX\",decimals:18},rpcUrls:{default:{http:[\"https://rpc.mainnet.lukso.network\"],webSocket:[\"wss://ws-rpc.mainnet.lukso.network\"]}},blockExplorers:{default:{name:\"LUKSO Mainnet Explorer\",url:\"https://explorer.execution.mainnet.lukso.network\"}}},he,{id:59140,network:\"linea-testnet\",name:\"Linea Goerli Testnet\",nativeCurrency:{name:\"Linea Ether\",symbol:\"ETH\",decimals:18},rpcUrls:{infura:{http:[\"https://linea-goerli.infura.io/v3\"],webSocket:[\"wss://linea-goerli.infura.io/ws/v3\"]},default:{http:[\"https://rpc.goerli.linea.build\"],webSocket:[\"wss://rpc.goerli.linea.build\"]},public:{http:[\"https://rpc.goerli.linea.build\"],webSocket:[\"wss://rpc.goerli.linea.build\"]}},blockExplorers:{default:{name:\"Etherscan\",url:\"https://goerli.lineascan.build\"},etherscan:{name:\"Etherscan\",url:\"https://goerli.lineascan.build\"}},testnet:!0},pe,de,be,{id:999,name:\"Zora Goerli Testnet\",network:\"zora-testnet\",nativeCurrency:{decimals:18,name:\"Zora Goerli\",symbol:\"ETH\"},rpcUrls:{default:{http:[\"https://testnet.rpc.zora.energy\"],webSocket:[\"wss://testnet.rpc.zora.energy\"]},public:{http:[\"https://testnet.rpc.zora.energy\"],webSocket:[\"wss://testnet.rpc.zora.energy\"]}},blockExplorers:{default:{name:\"Explorer\",url:\"https://testnet.explorer.zora.energy\"}},testnet:!0},{id:999999999,name:\"Zora Sepolia\",network:\"zora-sepolia\",nativeCurrency:{decimals:18,name:\"Zora Sepolia\",symbol:\"ETH\"},rpcUrls:{default:{http:[\"https://sepolia.rpc.zora.energy\"],webSocket:[\"wss://sepolia.rpc.zora.energy\"]},public:{http:[\"https://sepolia.rpc.zora.energy\"],webSocket:[\"wss://sepolia.rpc.zora.energy\"]}},blockExplorers:{default:{name:\"Zora Sepolia Explorer\",url:\"https://sepolia.explorer.zora.energy/\"}},testnet:!0},{id:17e3,name:\"Holesky\",network:\"holesky\",nativeCurrency:{name:\"ETH\",symbol:\"ETH\",decimals:18},rpcUrls:{default:{http:[\"https://ethereum-holesky.publicnode.com\"]},public:{http:[\"https://ethereum-holesky.publicnode.com\"]}},blockExplorers:{etherscan:{name:\"EtherScan\",url:\"https://holesky.etherscan.io\"},default:{name:\"EtherScan\",url:\"https://holesky.etherscan.io\"}}},{id:690,name:\"Redstone\",network:\"redstone\",nativeCurrency:{name:\"ETH\",symbol:\"ETH\",decimals:18},rpcUrls:{default:{http:[\"https://rpc.redstonechain.com\"]},public:{http:[\"https://rpc.redstonechain.com\"]}},blockExplorers:{default:{name:\"Blockscout\",url:\"https://explorer.redstone.xyz/\"}}},{id:17069,name:\"Garnet Holesky\",network:\"garnet-holesky\",nativeCurrency:{name:\"ETH\",symbol:\"ETH\",decimals:18},rpcUrls:{default:{http:[\"https://rpc.garnetchain.com\"]},public:{http:[\"https://rpc.garnetchain.com\"]}},blockExplorers:{default:{name:\"Blockscout\",url:\"https://explorer.garnetchain.com\"}}}],Se=new Set(Ne.map((e=>e.id)));function Te({src:e,...a}){/*#__PURE__*/return t(\"img\",{src:e,...a,style:{display:\"none\"}})}const ve={appearance:{landingHeader:\"Log in or sign up\",theme:\"light\",accentColor:\"#676FFF\",walletList:[\"detected_wallets\",\"metamask\",\"coinbase_wallet\",\"rainbow\",\"wallet_connect\"]},walletConnectCloudProjectId:\"34357d3c125c2bcf2ce2bc3309d98715\",externalWallets:{coinbaseWallet:{connectionOptions:\"all\"}},embeddedWallets:{extendedCalldataDecoding:!1},captchaEnabled:!1,_render:{standalone:!1},fundingMethodConfig:{moonpay:{useSandbox:!1}}};let we=new Set([\"coinbase_wallet\",\"cryptocom\",\"metamask\",\"okx_wallet\",\"phantom\",\"rainbow\",\"uniswap\",\"zerion\",\"universal_profile\",\"bybit_wallet\",\"ronin_wallet\",\"wallet_connect\",\"detected_wallets\",\"detected_solana_wallets\",\"detected_ethereum_wallets\",\"rabby_wallet\",\"safe\",\"solflare\",\"backpack\"]),ke=e=>we.has(e),Le=(e,t,a)=>a.indexOf(e)===t;const Oe=({input:e,overrides:t})=>t?t.primary.concat(t.overflow??[]).filter(ke).filter(Le):e?e.filter(ke).filter(Le):ve.appearance.walletList;function Re(e,t){return{...e,rpcUrls:{...e.rpcUrls,privyWalletOverride:{http:[t]}}}}function Ie(e){let t=e.filter((e=>!Se.has(e.id)));return Ne.concat(t)}function De(e,t){return{...e,rpcUrls:{...e.rpcUrls,privy:{http:[t]}}}}const We=792703809,Me=\"11111111111111111111111111111111\",Ue=\"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\";function Pe(e){return e.includes(\"testnet\")?\"testnet\":e.includes(\"devnet\")?\"devnet\":\"mainnet-beta\"}function xe(e,t){return`https://explorer.solana.com/tx/${e}?cluster=${t}`}function Fe(e,t){return`https://explorer.solana.com/account/${e}?cluster=${t}`}function Ge({name:e,rpcUrl:t}){if(t)return t;switch(e){case\"mainnet-beta\":return\"https://api.mainnet-beta.solana.com\";case\"testnet\":return\"https://api.testnet.solana.com\";case\"devnet\":return\"https://api.devnet.solana.com\"}}let He=\"#FFFFFF\";function Be(e,t){let a=Math.max(0,Math.min(1,e.toHsl().l+t));return c({...e.toHsl(),l:a})}function Ve({backgroundTheme:e,accentHex:t}){let a;switch(e){case\"light\":a=He;break;case\"dark\":a=\"#1E1E1D\";break;default:a=e}let i=c(a),r=c(t),n=c(\"#51BA81\"),l=c(\"#FFB74D\"),s=c(\"#EC6351\"),o=function(e){return e<.8&&e>.2&&console.warn(\"Background color is not light or dark enough, which could lead to accessibility issues.\"),e>.5?\"light\":\"dark\"}(i.getLuminance()),p=Be(i,\"light\"===o?-.04:.11),d=Be(i,\"light\"===o?-.08:.16),u=Be(i,\"light\"===o?-.88:.87),E=Be(i,\"light\"===o?-.7:.75),m=Be(i,\"light\"===o?-.43:.45).desaturate(\"light\"===o?60:20),h=Be(i,\"light\"===o?-.08:.25).desaturate(\"light\"===o?60:20),_=Be(r,.15),f=Be(r,.25),y=Be(r,-.06),A=Be(r,-.6),g=Be(s,.3),C=Be(l,.3),b=c(r.getLuminance()>.5?\"#040217\":He),N=Be(n,-.16),S=Be(n,.4);return{colorScheme:o,background:i.toHslString(),background2:p.toHslString(),background3:d.toHslString(),foreground:u.toHslString(),foreground2:E.toHslString(),foreground3:m.toHslString(),foreground4:h.toHslString(),accent:r.toHslString(),accentLight:_.toHslString(),accentLightest:f.toHslString(),accentDark:y.toHslString(),accentDarkest:A.toHslString(),foregroundAccent:b.toHslString(),success:n.toHslString(),successDark:N.toHslString(),successLight:S.toHslString(),error:s.toHslString(),errorLight:g.toHslString(),warn:l.toHslString(),warnLight:C.toHslString()}}function je(e,t,a,i){let r,n,l,s,o,c,p,d,u,E,m,h,_,f,y,A=a?console.warn:()=>{};t?.loginMethods?(r=t.loginMethods.includes(\"email\"),n=t.loginMethods.includes(\"sms\"),s=t.loginMethods.includes(\"wallet\"),o=t.loginMethods.includes(\"google\"),c=t.loginMethods.includes(\"twitter\"),p=t.loginMethods.includes(\"discord\"),u=t.loginMethods.includes(\"spotify\"),E=t.loginMethods.includes(\"instagram\"),d=t.loginMethods.includes(\"tiktok\"),h=t.loginMethods.includes(\"github\"),m=t.loginMethods.includes(\"linkedin\"),_=t.loginMethods.includes(\"apple\"),f=t.loginMethods.includes(\"farcaster\"),y=t.loginMethods.includes(\"telegram\"),l=t.loginMethods.includes(\"passkey\")):(r=e.emailAuth,n=e.smsAuth,s=e.walletAuth||e.solanaWalletAuth,o=e.googleOAuth,c=e.twitterOAuth,p=e.discordOAuth,h=e.githubOAuth,u=e.spotifyOAuth,E=e.instagramOAuth,d=e.tiktokOAuth,m=e.linkedinOAuth,_=e.appleOAuth,f=e.farcasterAuth,y=e.telegramAuth,l=e.passkeyAuth),e.passkeyAuth&&(l=!0),\"undefined\"!=typeof window&&\"function\"!=typeof window.PublicKeyCredential&&(l=!1);let g=[r,n].filter(Boolean),C=[o,c,p,h,u,E,d,m,_,f,y].filter(Boolean),b=[s].filter(Boolean),N=t?.loginMethods?.includes(\"passkey\")??!1,S=e.passkeysForSignupEnabled??!1,T=[l&&(S||N)].filter(Boolean);if(g.length+C.length+b.length+T.length===0)throw Error(\"You must enable at least one login method\");let v=void 0!==t?.appearance?.showWalletLoginFirst?t?.appearance?.showWalletLoginFirst:e.showWalletLoginFirst;v&&0===b.length?(A(\"You should only enable `showWalletLoginFirst` when `wallet` logins are also enabled. `showWalletLoginFirst` has been set to false\"),v=!1):v||C.length+g.length!==0||(A(\"You should only disable `showWalletLoginFirst` when `email`, `sms`, or social logins are also enabled. `showWalletLoginFirst` has been set to true\"),v=!0);let w=t?.externalWallets?.walletConnect?.enabled??!0;t?.loginMethods&&t.loginMethodsAndOrder&&A(\"You should only configure one of `loginMethods` or `loginMethodsAndOrder`\");let k=Oe({input:t?.appearance?.walletList,overrides:t?.loginMethodsAndOrder}),L=(({input:e})=>{if(!e||!e.primary[0])return;let t=[e.primary[0]],a=[];for(let a of(e.primary.length>4&&console.warn(\"You should not specify greater than 4 login methods in `loginMethodsAndOrder.primary`\"),e.primary.slice(1)))t.includes(a)?console.warn(`Duplicated login method: ${a}`):t.push(a);for(let i of e.overflow??[])t.includes(i)||a.includes(i)?console.warn(`Duplicated login method: ${i}`):a.push(i);return{primary:t,overflow:a}})({input:t?.loginMethodsAndOrder}),O=t?.intl?.defaultCountry??\"US\",{chains:R,defaultChain:I}=function({supportedChains:e,defaultChainFromConfig:t}){let a;if(e){if(0===e.length)throw Error(\"`supportedChains` must contain at least one chain\");a=e.map((e=>{if(e.rpcUrls.privyWalletOverride)return e;let t=Ne.find((t=>t.id===e.id)),a=t?.rpcUrls.privy?.http[0];return a?De(e,a):e}))}else a=[...Ne];let i=e?a[0]:_e,r=t??i;if(!a.find((e=>e.id===r.id)))throw Error(\"`defaultChain` must be included in `supportedChains`\");return{chains:a,defaultChain:r}}({supportedChains:t?.supportedChains,defaultChainFromConfig:t?.defaultChain}),D=!!t?.defaultChain,W=t?.customAuth?.getCustomAccessToken&&!1!==t?.customAuth?.enabled,M=t?.embeddedWallets?.requireUserPasswordOnCreate,U=t?.embeddedWallets?.createOnLogin,P=W?\"all-users\":e.embeddedWalletConfig.createOnLogin,x=t?.solanaClusters??[];return e.solanaWalletAuth&&!t?.externalWallets?.solana?.connectors&&console.warn(\"App configuration has Solana wallet login enabled, but no Solana wallet connectors have been passed to Privy. Make sure to pass Solana connectors to the `config.externalWallets.solana.connectors` field of the `PrivyProvider`\"),{id:e.id,name:e.name,allowlistConfig:e.allowlistConfig,legacyWalletUiConfig:e.legacyWalletUiConfig,appearance:{logo:t?.appearance?.logo??e.logoUrl,landingHeader:t?.appearance?.landingHeader??ve.appearance.landingHeader,loginMessage:\"string\"==typeof t?.appearance?.loginMessage?t?.appearance?.loginMessage.slice(0,100):t?.appearance?.loginMessage,footerLogo:t?.appearance?.footerLogo,palette:Ve({backgroundTheme:t?.appearance?.theme??ve.appearance.theme,accentHex:t?.appearance?.accentColor??e.accentColor??ve.appearance.accentColor}),loginGroupPriority:v?\"web3-first\":\"web2-first\",hideDirectWeb2Inputs:!!t?.appearance?.hideDirectWeb2Inputs,walletList:k,walletChainType:t?.appearance?.walletChainType??(({evmWalletAuth:e,solanaWalletAuth:t})=>e&&t?\"ethereum-and-solana\":e?\"ethereum-only\":t?\"solana-only\":\"ethereum-only\")({evmWalletAuth:e.walletAuth??!1,solanaWalletAuth:e.solanaWalletAuth??!1})},loginMethods:{wallet:s,email:r,sms:n,passkey:l,google:o,twitter:c,discord:p,github:h,spotify:u,instagram:E,tiktok:d,linkedin:m,apple:_,farcaster:f,telegram:y},disablePlusEmails:e.disablePlusEmails,loginMethodsAndOrder:L,legal:{termsAndConditionsUrl:t?.legal?.termsAndConditionsUrl??e.termsAndConditionsUrl,privacyPolicyUrl:t?.legal?.privacyPolicyUrl??e.privacyPolicyUrl,requireUsersAcceptTerms:e.requireUsersAcceptTerms??!1},walletConnectCloudProjectId:t?.walletConnectCloudProjectId??e.walletConnectCloudProjectId??ve.walletConnectCloudProjectId,rpcConfig:{rpcUrls:{},rpcTimeouts:{}},chains:R,solanaClusters:{\"mainnet-beta\":x.find((e=>\"mainnet-beta\"===e.name))?.rpcUrl||\"https://api.mainnet-beta.solana.com\",testnet:x.find((e=>\"testnet\"===e.name))?.rpcUrl||\"https://api.testnet.solana.com\",devnet:x.find((e=>\"devnet\"===e.name))?.rpcUrl||\"https://api.devnet.solana.com\"},defaultChain:I,intl:{defaultCountry:O},shouldEnforceDefaultChainOnConnect:D,captchaEnabled:e.captchaEnabled??ve.captchaEnabled,captchaSiteKey:e.captchaSiteKey,externalWallets:{coinbaseWallet:{connectionOptions:t?.externalWallets?.coinbaseWallet?.connectionOptions??ve.externalWallets.coinbaseWallet.connectionOptions},walletConnect:{enabled:w},solana:{connectors:t?.externalWallets?.solana?.connectors}},embeddedWallets:{requireUserOwnedRecoveryOnCreate:M??(!W&&e.embeddedWalletConfig.requireUserOwnedRecoveryOnCreate),userOwnedRecoveryOptions:W?[\"user-passcode\"]:e.embeddedWalletConfig.userOwnedRecoveryOptions,priceDisplay:t?.embeddedWallets?.priceDisplay??{primary:\"fiat-currency\",secondary:\"native-token\"},ethereum:{createOnLogin:U??t?.embeddedWallets?.ethereum?.createOnLogin??P},solana:{createOnLogin:t?.embeddedWallets?.solana?.createOnLogin??\"off\"},showWalletUIs:t?.embeddedWallets?.showWalletUIs??e.enforceWalletUis??!0,extendedCalldataDecoding:t?.embeddedWallets?.extendedCalldataDecoding??!1,transactionScanning:{enabled:t?.embeddedWallets?.transactionScanning?.enabled??!1,domain:t?.embeddedWallets?.transactionScanning?.domain??i??\"https://auth.privy.io\"}},mfa:{methods:e.mfaMethods??[],noPromptOnMfaRequired:t?.mfa?.noPromptOnMfaRequired??!1},passkeys:{shouldUnlinkOnUnenrollMfa:t?.passkeys?.shouldUnlinkOnUnenrollMfa,shouldUnenrollMfaOnUnlink:t?.passkeys?.shouldUnenrollMfaOnUnlink},customAuth:W?{enabled:!0,...t.customAuth}:void 0,loginConfig:{telegramAuthConfiguration:e.telegramAuthConfiguration,passkeysForSignupEnabled:e.passkeysForSignupEnabled},headless:!!t?.headless,render:{standalone:t?._render?.standalone??ve._render.standalone},fundingConfig:e.fundingConfig,fundingMethodConfig:{...t?.fundingMethodConfig??ve.fundingMethodConfig,moonpay:{...t?.fundingMethodConfig?.moonpay??ve.fundingMethodConfig.moonpay,useSandbox:t?.fundingMethodConfig?.moonpay.useSandbox??t?.fiatOnRamp?.useSandbox??ve.fundingMethodConfig.moonpay.useSandbox}}}}let Ke={showWalletLoginFirst:!0,allowlistConfig:{errorTitle:null,errorDetail:null,errorCtaText:null,errorCtaLink:null},walletAuth:!0,emailAuth:!0,smsAuth:!1,googleOAuth:!1,twitterOAuth:!1,discordOAuth:!1,githubOAuth:!1,linkedinOAuth:!1,appleOAuth:!1,disablePlusEmails:!1,termsAndConditionsUrl:null,privacyPolicyUrl:null,embeddedWalletConfig:{createOnLogin:\"off\",requireUserOwnedRecoveryOnCreate:!1,userOwnedRecoveryOptions:[\"user-passcode\"]},fiatOnRampEnabled:!1,captchaEnabled:!1,captchaSiteKey:\"\",enforceWalletUis:!1,legacyWalletUiConfig:!1};const Ye=je(Ke,void 0,!1);let ze=/*#__PURE__*/s({appConfig:Ye,isServerConfigLoaded:!1});const qe=({children:e,client:a,clientConfig:l})=>{let[s,o]=i(null),c=r((()=>je(s??Ke,l,!!s,\"undefined\"!=typeof window?window.location.origin:void 0)),[s,l]);return n((()=>{if(!s)return;let e=function(e){if(!e)return{};let{appearance:t,supportedChains:a,defaultChain:i,externalWallets:r,...n}=e;return{...n,...a?{supportedChains:a.map((e=>e.id))}:void 0,...i?{defaultChain:i.id}:void 0,...r?{walletConnect:r.walletConnect,coinbaseWallet:r.coinbaseWallet,solana:{connectors:r.solana?.connectors?.get().map((e=>e.walletClientType))}}:void 0}}(l),t=function(e,t=0){let a=3735928559^t,i=1103547991^t;for(let t,r=0;r<e.length;r++)a=Math.imul(a^(t=e.charCodeAt(r)),2654435761),i=Math.imul(i^t,1597334677);return a=Math.imul(a^a>>>16,2246822507)^Math.imul(i^i>>>13,3266489909),4294967296*(2097151&(i=Math.imul(i^i>>>16,2246822507)^Math.imul(a^a>>>13,3266489909)))+(a>>>0)}(JSON.stringify(e)).toString(),i=`privy:sent:${s.id}:${t}`;localStorage.getItem(i)||(a.createAnalyticsEvent({eventName:\"sdk_initialize\",payload:e}),localStorage.setItem(i,\"t\"))}),[l,s]),n((()=>{s||(async()=>{try{let e=await a.getServerConfig();e.customApiUrl&&a.updateApiUrl(e.customApiUrl),o(e)}catch(e){console.warn(\"Error generating app config: \",e)}})()}),[]),/*#__PURE__*/t(ze.Provider,{value:{appConfig:c,isServerConfigLoaded:!!s},children:e})},$e=()=>{let{appConfig:e}=l(ze);return e},Xe=()=>{let{isServerConfigLoaded:e}=l(ze);return e};var Ze,Je=((Ze={}).LANDING=\"LANDING\",Ze.CONNECT_OR_CREATE=\"CONNECT_OR_CREATE\",Ze.AWAITING_CONNECTION=\"AWAITING_CONNECTION\",Ze.AWAITING_FARCASTER_CONNECTION=\"AWAITING_FARCASTER_CONNECTION\",Ze.AWAITING_FARCASTER_SIGNER=\"AWAITING_FARCASTER_SIGNER\",Ze.AWAITING_OAUTH_SCREEN=\"AWAITING_OAUTH_SCREEN\",Ze.CROSS_APP_AUTH_SCREEN=\"CROSS_APP_AUTH_SCREEN\",Ze.AWAITING_PASSWORDLESS_CODE=\"AWAITING_PASSWORDLESS_CODE\",Ze.AWAITING_PASSKEY_SYSTEM_DIALOGUE=\"AWAITING_PASSKEY_SYSTEM_DIALOGUE\",Ze.SELECT_PASSKEY_SIGNUP_OR_LOGIN=\"SELECT_PASSKEY_SIGNUP_OR_LOGIN\",Ze.LINK_EMAIL_SCREEN=\"LINK_EMAIL_SCREEN\",Ze.LINK_PHONE_SCREEN=\"LINK_PHONE_SCREEN\",Ze.LINK_WALLET_SCREEN=\"LINK_WALLET_SCREEN\",Ze.LINK_PASSKEY_SCREEN=\"LINK_PASSKEY_SCREEN\",Ze.UPDATE_EMAIL_SCREEN=\"UPDATE_EMAIL_SCREEN\",Ze.UPDATE_PHONE_SCREEN=\"UPDATE_PHONE_SCREEN\",Ze.AWAITING_CONNECT_ONLY_CONNECTION=\"AWAITING_CONNECT_ONLY_CONNECTION\",Ze.CONNECT_ONLY_LANDING_SCREEN=\"CONNECT_ONLY_LANDING_SCREEN\",Ze.CONNECT_ONLY_AUTHENTICATED_SCREEN=\"CONNECT_ONLY_AUTHENTICATED_SCREEN\",Ze.LOGIN_FAILED_SCREEN=\"LOGIN_FAILED_SCREEN\",Ze.ALLOWLIST_REJECTION_SCREEN=\"ALLOWLIST_REJECTION_SCREEN\",Ze.ACCOUNT_NOT_FOUND_SCREEN=\"ACCOUNT_NOT_FOUND_SCREEN\",Ze.USER_LIMIT_REACHED_SCREEN=\"USER_LIMIT_REACHED_SCREEN\",Ze.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN=\"EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN\",Ze.EMBEDDED_WALLET_CREATED_SCREEN=\"EMBEDDED_WALLET_CREATED_SCREEN\",Ze.EMBEDDED_WALLET_CONNECTING_SCREEN=\"EMBEDDED_WALLET_CONNECTING_SCREEN\",Ze.EMBEDDED_WALLET_PASSWORD_RECOVERY_SCREEN=\"EMBEDDED_WALLET_PASSWORD_RECOVERY_SCREEN\",Ze.EMBEDDED_WALLET_KEY_EXPORT_SCREEN=\"EMBEDDED_WALLET_KEY_EXPORT_SCREEN\",Ze.EMBEDDED_WALLET_SEND_TRANSACTION_SCREEN=\"EMBEDDED_WALLET_SEND_TRANSACTION_SCREEN\",Ze.EMBEDDED_WALLET_SEND_SOLANA_TRANSACTION_SCREEN=\"EMBEDDED_WALLET_SEND_SOLANA_TRANSACTION_SCREEN\",Ze.EMBEDDED_WALLET_SIGN_REQUEST_SCREEN=\"EMBEDDED_WALLET_SIGN_REQUEST_SCREEN\",Ze.EMBEDDED_WALLET_PASSWORD_UPDATE_SPLASH_SCREEN=\"EMBEDDED_WALLET_PASSWORD_UPDATE_SPLASH_SCREEN\",Ze.EMBEDDED_WALLET_PASSWORD_CREATE_SCREEN=\"EMBEDDED_WALLET_PASSWORD_CREATE_SCREEN\",Ze.EMBEDDED_WALLET_PASSWORD_UPDATE_SCREEN=\"EMBEDDED_WALLET_PASSWORD_UPDATE_SCREEN\",Ze.EMBEDDED_WALLET_RECOVERY_SELECTION_SCREEN=\"EMBEDDED_WALLET_RECOVERY_SELECTION_SCREEN\",Ze.EMBEDDED_WALLET_RECOVERY_OAUTH_SCREEN=\"EMBEDDED_WALLET_RECOVERY_OAUTH_SCREEN\",Ze.EMBEDDED_WALLET_SET_AUTOMATIC_RECOVERY_SCREEN=\"EMBEDDED_WALLET_SET_AUTOMATIC_RECOVERY_SCREEN\",Ze.EMBEDDED_WALLET_DELEGATED_ACTIONS_CONSENT_SCREEN=\"EMBEDDED_WALLET_DELEGATED_ACTIONS_CONSENT_SCREEN\",Ze.EMBEDDED_WALLET_DELEGATED_ACTIONS_REVOKE_SCREEN=\"EMBEDDED_WALLET_DELEGATED_ACTIONS_REVOKE_SCREEN\",Ze.INSTALL_WALLET_SCREEN=\"INSTALL_WALLET_SCREEN\",Ze.WALLET_INTERSTITIAL_SCREEN=\"WALLET_INTERSTITIAL_SCREEN\",Ze.AFFIRMATIVE_CONSENT_SCREEN=\"AFFIRMATIVE_CONSENT_SCREEN\",Ze.FUNDING_METHOD_SELECTION_SCREEN=\"FUNDING_METHOD_SELECTION_SCREEN\",Ze.FUNDING_TRANSFER_FROM_WALLET_SCREEN=\"FUNDING_TRANSFER_FROM_WALLET_SCREEN\",Ze.FUNDING_EDIT_AMOUNT_SCREEN=\"FUNDING_EDIT_AMOUNT_SCREEN\",Ze.FUNDING_AWAITING_TRANSFER_FROM_EXTERNAL_WALLET_SCREEN=\"FUNDING_AWAITING_TRANSFER_FROM_EXTERNAL_WALLET_SCREEN\",Ze.FUNDING_AWAITING_TRANSFER_FROM_EXTERNAL_SOLANA_WALLET_SCREEN=\"FUNDING_AWAITING_TRANSFER_FROM_EXTERNAL_SOLANA_WALLET_SCREEN\",Ze.FUNDING_AWAITING_EVM_TO_SOL_BRIDGING_SCREEN=\"FUNDING_AWAITING_EVM_TO_SOL_BRIDGING_SCREEN\",Ze.FUNDING_AWAITING_SOL_TO_EVM_BRIDGING_SCREEN=\"FUNDING_AWAITING_SOL_TO_EVM_BRIDGING_SCREEN\",Ze.FUNDING_MANUAL_TRANSFER_SCREEN=\"FUNDING_MANUAL_TRANSFER_SCREEN\",Ze.MOONPAY_STATUS_SCREEN=\"MOONPAY_STATUS_SCREEN\",Ze.COINBASE_ONRAMP_STATUS_SCREEN=\"COINBASE_ONRAMP_STATUS_SCREEN\",Ze.MFA_ENROLLMENT_FLOW_SCREEN=\"MFA_ENROLLMENT_FLOW_SCREEN\",Ze.CAPTCHA_SCREEN=\"CAPTCHA_SCREEN\",Ze.ERROR_SCREEN=\"ERROR_SCREEN\",Ze.IN_APP_BROWSER_LOGIN_NOT_POSSIBLE=\"IN_APP_BROWSER_LOGIN_NOT_POSSIBLE\",Ze.TELEGRAM_AUTH_SCREEN=\"TELEGRAM_AUTH_SCREEN\",Ze.LINK_CONFLICT_SCREEN=\"LINK_CONFLICT_SCREEN\",Ze);const Qe=/*#__PURE__*/s({ready:!1,app:Ye,currentScreen:null,lastScreen:null,navigate:p,navigateBack:p,resetNavigation:p,setModalData:p,onUserCloseViaDialogOrKeybindRef:void 0});let et=[Je.LANDING,Je.CONNECT_ONLY_LANDING_SCREEN,null];const tt=e=>{let r=$e(),l=e.authenticated,[s,c]=i(e.initialScreen);n((()=>{l||et.includes(e.initialScreen)||e.setInitialScreen(null)}),[l]);let p=o(null);n((()=>{e.open||(p.current=null)}),[e.open]),n((()=>{p.current=null}),[e.initialScreen]);let d={ready:!!r.id,app:r,data:e.data,setModalData:e.setModalData,currentScreen:e.initialScreen,lastScreen:s,navigate:(t,a=!0)=>{e.setInitialScreen(t),a&&c(e.initialScreen)},navigateBack:()=>{e.setInitialScreen(s)},resetNavigation:()=>{e.setInitialScreen(null),c(null)},onUserCloseViaDialogOrKeybindRef:p};/*#__PURE__*/return a(Qe.Provider,{value:d,children:[(\"string\"==typeof r.appearance.logo||\"img\"===r.appearance.logo?.type)&&/*#__PURE__*/t(Te,{src:\"string\"==typeof r.appearance.logo?r.appearance.logo:r.appearance.logo.props.src}),e.children]})},at=()=>l(Qe),it=/*#__PURE__*/s({ready:!1,authenticated:!1,user:null,walletConnectors:null,connectWallet:p,login:p,connectOrCreateWallet:p,linkEmail:p,linkPhone:p,linkFarcaster:p,linkWallet:p,startCrossAppAuthFlow:p,linkGoogle:p,linkTwitter:p,linkDiscord:p,linkGithub:p,linkSpotify:p,linkInstagram:p,linkTelegram:p,linkTiktok:p,linkLinkedIn:p,linkApple:p,linkPasskey:p,updateEmail:p,updatePhone:p,logout:p,getAccessToken:p,unlinkEmail:p,unlinkPhone:p,unlinkWallet:p,unlinkGoogle:p,unlinkTwitter:p,unlinkDiscord:p,unlinkGithub:p,unlinkSpotify:p,unlinkInstagram:p,unlinkTiktok:p,unlinkLinkedIn:p,unlinkApple:p,unlinkCrossAppAccount:p,unlinkFarcaster:p,unlinkTelegram:p,unlinkPasskey:p,createWallet:p,signMessage:p,signTypedData:p,enrollInMfa:p,initEnrollmentWithSms:p,initEnrollmentWithTotp:p,initEnrollmentWithPasskey:p,promptMfa:p,init:p,submitEnrollmentWithSms:p,submitEnrollmentWithTotp:p,submitEnrollmentWithPasskey:p,unenroll:p,submit:p,cancel:p,sendTransaction:p,signTransaction:p,exportWallet:p,setWalletPassword:p,setWalletRecovery:p,requestFarcasterSignerFromWarpcast:p,getFarcasterSignerPublicKey:p,signFarcasterMessage:p,createGuestAccount:p,signMessageWithCrossAppWallet:p,signTypedDataWithCrossAppWallet:p,sendTransactionWithCrossAppWallet:p,isModalOpen:!1,mfaMethods:[]}),rt=()=>l(it),nt=/*#__PURE__*/s(null);function lt(){let e=l(nt);return null===e?(console.warn(\"`useWallets` was called outside the PrivyProvider component\"),{wallets:[],ready:!1}):e}export{ee as $,U as A,Pe as B,L as C,Se as D,lt as E,We as F,Me as G,O as H,b as I,h as J,Ge as K,Ue as L,Je as M,_e as N,R as O,C as P,ue as Q,A as R,k as S,fe as T,Ae as U,_ as V,x as W,oe as X,it as Y,Fe as Z,xe as _,M as a,le as a0,qe as a1,Xe as a2,X as a3,z as a4,Q as a5,q as a6,ne as a7,nt as a8,tt as a9,J as aa,re as ab,Ne as ac,Re as ad,De as ae,I as af,P as ag,pe as ah,me as ai,he as aj,be as ak,G as al,F as am,B as an,H as ao,Ce as ap,ye as aq,ge as ar,Ee as as,de as at,ce as au,D as b,ie as c,W as d,f as e,w as f,v as g,S as h,V as i,se as j,y as k,g as l,N as m,d as n,u as o,T as p,$e as q,rt as r,E as s,m as t,at as u,te as v,Y as w,Z as x,ae as y,Ie as z};\n","/**\n * Internal assertion helpers.\n * @module\n */\n\n/** Asserts something is positive integer. */\nfunction anumber(n: number): void {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error('positive integer expected, got ' + n);\n}\n\n/** Is number an Uint8Array? Copied from utils for perf. */\nfunction isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/** Asserts something is Uint8Array. */\nfunction abytes(b: Uint8Array | undefined, ...lengths: number[]): void {\n if (!isBytes(b)) throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n\n/** Hash interface. */\nexport type Hash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\n\n/** Asserts something is hash */\nfunction ahash(h: Hash): void {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n\n/** Asserts a hash instance has not been destroyed / finished */\nfunction aexists(instance: any, checkFinished = true): void {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\n\n/** Asserts output is properly-sized byte array */\nfunction aoutput(out: any, instance: any): void {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\n\nexport { anumber, abytes, ahash, aexists, aoutput };\n","/**\n * Internal webcrypto alias.\n * We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n * See utils.ts for details.\n * @module\n */\ndeclare const globalThis: Record<string, any> | undefined;\nexport const crypto: any =\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nimport { abytes } from './_assert.js';\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nexport function isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n// Cast array to different type\nexport function u8(arr: TypedArray): Uint8Array {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\nexport function u32(arr: TypedArray): Uint32Array {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n\n// Cast array to view\nexport function createView(arr: TypedArray): DataView {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word: number, shift: number): number {\n return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word: number, shift: number): number {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE: boolean = /* @__PURE__ */ (() =>\n new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n// The byte swap operation for uint32\nexport function byteSwap(word: number): number {\n return (\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff)\n );\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const byteSwapIfBE: (n: number) => number = isLE\n ? (n: number) => n\n : (n: number) => byteSwap(n);\n\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr: Uint32Array): void {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n}\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n/**\n * Convert byte array to hex string.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n\n/**\n * Convert hex string to byte array.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async (): Promise<void> => {};\n\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(\n iters: number,\n tick: number,\n cb: (i: number) => void\n): Promise<void> {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * Convert JS string to byte array.\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error('utf8ToBytes expected string, got ' + typeof str);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n/** Accepted input of hash functions. Strings are converted to byte arrays. */\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\n/** For runtime check if class implements interface */\nexport abstract class Hash<T extends Hash<T>> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\ntype EmptyObj = {};\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\n/** Hash function */\nexport type CHash = ReturnType<typeof wrapConstructor>;\n/** Hash function with output */\nexport type CHashO = ReturnType<typeof wrapConstructorWithOpts>;\n/** XOF with output */\nexport type CHashXO = ReturnType<typeof wrapXOFConstructorWithOpts>;\n\n/** Wraps hash function, creating an interface on top of it */\nexport function wrapConstructor<T extends Hash<T>>(\n hashCons: () => Hash<T>\n): {\n (msg: Input): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(): Hash<T>;\n} {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function wrapConstructorWithOpts<H extends Hash<H>, T extends Object>(\n hashCons: (opts?: T) => Hash<H>\n): {\n (msg: Input, opts?: T): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(opts: T): Hash<H>;\n} {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\nexport function wrapXOFConstructorWithOpts<H extends HashXOF<H>, T extends Object>(\n hashCons: (opts?: T) => HashXOF<H>\n): {\n (msg: Input, opts?: T): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(opts: T): HashXOF<H>;\n} {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return crypto.randomBytes(bytesLength);\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","// TODO: This looks cool. Need to check the performance of `new RegExp` versus defined inline though.\n// https://twitter.com/GabrielVergnaud/status/1622906834343366657\nexport function execTyped<type>(regex: RegExp, string: string) {\n const match = regex.exec(string)\n return match?.groups as type | undefined\n}\n\n// `bytes<M>`: binary type of `M` bytes, `0 < M <= 32`\n// https://regexr.com/6va55\nexport const bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/\n\n// `(u)int<M>`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n// https://regexr.com/6v8hp\nexport const integerRegex =\n /^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/\n\nexport const isTupleRegex = /^\\(.+?\\).*?$/\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","const suspectProtoRx = /\"(?:_|\\\\u0{2}5[Ff]){2}(?:p|\\\\u0{2}70)(?:r|\\\\u0{2}72)(?:o|\\\\u0{2}6[Ff])(?:t|\\\\u0{2}74)(?:o|\\\\u0{2}6[Ff])(?:_|\\\\u0{2}5[Ff]){2}\"\\s*:/;\nconst suspectConstructorRx = /\"(?:c|\\\\u0063)(?:o|\\\\u006[Ff])(?:n|\\\\u006[Ee])(?:s|\\\\u0073)(?:t|\\\\u0074)(?:r|\\\\u0072)(?:u|\\\\u0075)(?:c|\\\\u0063)(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:r|\\\\u0072)\"\\s*:/;\nconst JsonSigRx = /^\\s*[\"[{]|^\\s*-?\\d{1,16}(\\.\\d{1,17})?([Ee][+-]?\\d+)?\\s*$/;\nfunction jsonParseTransform(key, value) {\n if (key === \"__proto__\" || key === \"constructor\" && value && typeof value === \"object\" && \"prototype\" in value) {\n warnKeyDropped(key);\n return;\n }\n return value;\n}\nfunction warnKeyDropped(key) {\n console.warn(`[destr] Dropping \"${key}\" key to prevent prototype pollution.`);\n}\nfunction destr(value, options = {}) {\n if (typeof value !== \"string\") {\n return value;\n }\n const _value = value.trim();\n if (\n // eslint-disable-next-line unicorn/prefer-at\n value[0] === '\"' && value.endsWith('\"') && !value.includes(\"\\\\\")\n ) {\n return _value.slice(1, -1);\n }\n if (_value.length <= 9) {\n const _lval = _value.toLowerCase();\n if (_lval === \"true\") {\n return true;\n }\n if (_lval === \"false\") {\n return false;\n }\n if (_lval === \"undefined\") {\n return void 0;\n }\n if (_lval === \"null\") {\n return null;\n }\n if (_lval === \"nan\") {\n return Number.NaN;\n }\n if (_lval === \"infinity\") {\n return Number.POSITIVE_INFINITY;\n }\n if (_lval === \"-infinity\") {\n return Number.NEGATIVE_INFINITY;\n }\n }\n if (!JsonSigRx.test(value)) {\n if (options.strict) {\n throw new SyntaxError(\"[destr] Invalid JSON\");\n }\n return value;\n }\n try {\n if (suspectProtoRx.test(value) || suspectConstructorRx.test(value)) {\n if (options.strict) {\n throw new Error(\"[destr] Possible prototype pollution\");\n }\n return JSON.parse(value, jsonParseTransform);\n }\n return JSON.parse(value);\n } catch (error) {\n if (options.strict) {\n throw error;\n }\n return value;\n }\n}\nfunction safeDestr(value, options = {}) {\n return destr(value, { ...options, strict: true });\n}\n\nexport { destr as default, destr, safeDestr };\n","import Metadata from '../metadata.js'\r\n\r\n/**\r\n * Returns a list of countries that the phone number could potentially belong to.\r\n * @param {string} callingCode — Calling code.\r\n * @param {string} nationalNumber — National (significant) number.\r\n * @param {object} metadata — Metadata.\r\n * @return {string[]} A list of possible countries.\r\n */\r\nexport default function getPossibleCountriesForNumber(callingCode, nationalNumber, metadata) {\r\n\tconst _metadata = new Metadata(metadata)\r\n\tlet possibleCountries = _metadata.getCountryCodesForCallingCode(callingCode)\r\n\tif (!possibleCountries) {\r\n\t\treturn []\r\n\t}\r\n\treturn possibleCountries.filter((country) => {\r\n\t\treturn couldNationalNumberBelongToCountry(nationalNumber, country, metadata)\r\n\t})\r\n}\r\n\r\nfunction couldNationalNumberBelongToCountry(nationalNumber, country, metadata) {\r\n\tconst _metadata = new Metadata(metadata)\r\n\t_metadata.selectNumberingPlan(country)\r\n\tif (_metadata.numberingPlan.possibleLengths().indexOf(nationalNumber.length) >= 0) {\r\n\t\treturn true\r\n\t}\r\n\treturn false\r\n}","import Metadata from '../metadata.js'\r\n\r\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\r\nconst SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/\r\n\r\n// For regions that have multiple IDD prefixes\r\n// a preferred IDD prefix is returned.\r\nexport default function getIddPrefix(country, callingCode, metadata) {\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tif (countryMetadata.defaultIDDPrefix()) {\r\n\t\treturn countryMetadata.defaultIDDPrefix()\r\n\t}\r\n\tif (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\r\n\t\treturn countryMetadata.IDDPrefix()\r\n\t}\r\n}\r\n","// This is a port of Google Android `libphonenumber`'s\r\n// `phonenumberutil.js` of December 31th, 2018.\r\n//\r\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'\r\nimport Metadata, { getCountryCallingCode } from './metadata.js'\r\nimport getIddPrefix from './helpers/getIddPrefix.js'\r\nimport { formatRFC3966 } from './helpers/RFC3966.js'\r\n\r\nconst DEFAULT_OPTIONS = {\r\n\tformatExtension: (formattedNumber, extension, metadata) => `${formattedNumber}${metadata.ext()}${extension}`\r\n}\r\n\r\n/**\r\n * Formats a phone number.\r\n *\r\n * format(phoneNumberInstance, 'INTERNATIONAL', { ..., v2: true }, metadata)\r\n * format(phoneNumberInstance, 'NATIONAL', { ..., v2: true }, metadata)\r\n *\r\n * format({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', { ... }, metadata)\r\n * format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {string} format\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\r\nexport default function formatNumber(input, format, options, metadata) {\r\n\t// Apply default options.\r\n\tif (options) {\r\n\t\toptions = { ...DEFAULT_OPTIONS, ...options }\r\n\t} else {\r\n\t\toptions = DEFAULT_OPTIONS\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tif (input.country && input.country !== '001') {\r\n\t\t// Validate `input.country`.\r\n\t\tif (!metadata.hasCountry(input.country)) {\r\n\t\t\tthrow new Error(`Unknown country: ${input.country}`)\r\n\t\t}\r\n\t\tmetadata.country(input.country)\r\n\t}\r\n\telse if (input.countryCallingCode) {\r\n\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t}\r\n\telse return input.phone || ''\r\n\r\n\tconst countryCallingCode = metadata.countryCallingCode()\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// This variable should have been declared inside `case`s\r\n\t// but Babel has a bug and it says \"duplicate variable declaration\".\r\n\tlet number\r\n\r\n\tswitch (format) {\r\n\t\tcase 'NATIONAL':\r\n\t\t\t// Legacy argument support.\r\n\t\t\t// (`{ country: ..., phone: '' }`)\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\treturn ''\r\n\t\t\t}\r\n\t\t\tnumber = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options)\r\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tcase 'INTERNATIONAL':\r\n\t\t\t// Legacy argument support.\r\n\t\t\t// (`{ country: ..., phone: '' }`)\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\treturn `+${countryCallingCode}`\r\n\t\t\t}\r\n\t\t\tnumber = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options)\r\n\t\t\tnumber = `+${countryCallingCode} ${number}`\r\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tcase 'E.164':\r\n\t\t\t// `E.164` doesn't define \"phone number extensions\".\r\n\t\t\treturn `+${countryCallingCode}${nationalNumber}`\r\n\r\n\t\tcase 'RFC3966':\r\n\t\t\treturn formatRFC3966({\r\n\t\t\t\tnumber: `+${countryCallingCode}${nationalNumber}`,\r\n\t\t\t\text: input.ext\r\n\t\t\t})\r\n\r\n\t\t// For reference, here's Google's IDD formatter:\r\n\t\t// https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\r\n\t\t// Not saying that this IDD formatter replicates it 1:1, but it seems to work.\r\n\t\t// Who would even need to format phone numbers in IDD format anyway?\r\n\t\tcase 'IDD':\r\n\t\t\tif (!options.fromCountry) {\r\n\t\t\t\treturn\r\n\t\t\t\t// throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\r\n\t\t\t}\r\n\t\t\tconst formattedNumber = formatIDD(\r\n\t\t\t\tnationalNumber,\r\n\t\t\t\tinput.carrierCode,\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\toptions.fromCountry,\r\n\t\t\t\tmetadata\r\n\t\t\t)\r\n\t\t\treturn addExtension(formattedNumber, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tdefault:\r\n\t\t\tthrow new Error(`Unknown \"format\" argument passed to \"formatNumber()\": \"${format}\"`)\r\n\t}\r\n}\r\n\r\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\r\n\tconst format = chooseFormatForNumber(metadata.formats(), number)\r\n\tif (!format) {\r\n\t\treturn number\r\n\t}\r\n\treturn formatNationalNumberUsingFormat(\r\n\t\tnumber,\r\n\t\tformat,\r\n\t\t{\r\n\t\t\tuseInternationalFormat: formatAs === 'INTERNATIONAL',\r\n\t\t\twithNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && (options && options.nationalPrefix === false) ? false : true,\r\n\t\t\tcarrierCode,\r\n\t\t\tmetadata\r\n\t\t}\r\n\t)\r\n}\r\n\r\nexport function chooseFormatForNumber(availableFormats, nationalNnumber) {\r\n\tfor (const format of availableFormats) {\r\n\t\t// Validate leading digits.\r\n\t\t// The test case for \"else path\" could be found by searching for\r\n\t\t// \"format.leadingDigitsPatterns().length === 0\".\r\n\t\tif (format.leadingDigitsPatterns().length > 0) {\r\n\t\t\t// The last leading_digits_pattern is used here, as it is the most detailed\r\n\t\t\tconst lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]\r\n\t\t\t// If leading digits don't match then move on to the next phone number format\r\n\t\t\tif (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Check that the national number matches the phone number format regular expression\r\n\t\tif (matchesEntirely(nationalNnumber, format.pattern())) {\r\n\t\t\treturn format\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\r\n\treturn ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber\r\n}\r\n\r\nfunction formatIDD(\r\n\tnationalNumber,\r\n\tcarrierCode,\r\n\tcountryCallingCode,\r\n\tfromCountry,\r\n\tmetadata\r\n) {\r\n\tconst fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata)\r\n\t// When calling within the same country calling code.\r\n\tif (fromCountryCallingCode === countryCallingCode) {\r\n\t\tconst formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata)\r\n\t\t// For NANPA regions, return the national format for these regions\r\n\t\t// but prefix it with the country calling code.\r\n\t\tif (countryCallingCode === '1') {\r\n\t\t\treturn countryCallingCode + ' ' + formattedNumber\r\n\t\t}\r\n\t\t// If regions share a country calling code, the country calling code need\r\n\t\t// not be dialled. This also applies when dialling within a region, so this\r\n\t\t// if clause covers both these cases. Technically this is the case for\r\n\t\t// dialling from La Reunion to other overseas departments of France (French\r\n\t\t// Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\r\n\t\t// this edge case for now and for those cases return the version including\r\n\t\t// country calling code. Details here:\r\n\t\t// http://www.petitfute.com/voyage/225-info-pratiques-reunion\r\n\t\t//\r\n\t\treturn formattedNumber\r\n\t}\r\n\tconst iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata)\r\n\tif (iddPrefix) {\r\n\t\treturn `${iddPrefix} ${countryCallingCode} ${formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata)}`\r\n\t}\r\n}","import isViablePhoneNumber from './isViablePhoneNumber.js'\r\n\r\n// https://www.ietf.org/rfc/rfc3966.txt\r\n\r\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nexport function parseRFC3966(text) {\r\n\tlet number\r\n\tlet ext\r\n\r\n\t// Replace \"tel:\" with \"tel=\" for parsing convenience.\r\n\ttext = text.replace(/^tel:/, 'tel=')\r\n\r\n\tfor (const part of text.split(';')) {\r\n\t\tconst [name, value] = part.split('=')\r\n\t\tswitch (name) {\r\n\t\t\tcase 'tel':\r\n\t\t\t\tnumber = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'ext':\r\n\t\t\t\text = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'phone-context':\r\n\t\t\t\t// Only \"country contexts\" are supported.\r\n\t\t\t\t// \"Domain contexts\" are ignored.\r\n\t\t\t\tif (value[0] === '+') {\r\n\t\t\t\t\tnumber = value + number\r\n\t\t\t\t}\r\n\t\t\t\tbreak\r\n\t\t}\r\n\t}\r\n\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!isViablePhoneNumber(number)) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst result = { number }\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\r\nexport function formatRFC3966({ number, ext }) {\r\n\tif (!number) {\r\n\t\treturn ''\r\n\t}\r\n\tif (number[0] !== '+') {\r\n\t\tthrow new Error(`\"formatRFC3966()\" expects \"number\" to be in E.164 format.`)\r\n\t}\r\n\treturn `tel:${number}${ext ? ';ext=' + ext : ''}`\r\n}","import Metadata from './metadata.js'\r\nimport isPossibleNumber from './isPossible.js'\r\nimport isValidNumber from './isValid.js'\r\n// import checkNumberLength from './helpers/checkNumberLength.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\nimport getPossibleCountriesForNumber from './helpers/getPossibleCountriesForNumber.js'\r\nimport formatNumber from './format.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default class PhoneNumber {\r\n\t/**\r\n\t * @param {string} countryOrCountryCallingCode\r\n\t * @param {string} nationalNumber\r\n\t * @param {object} metadata — Metadata JSON\r\n\t * @return {PhoneNumber}\r\n\t */\r\n\tconstructor(countryOrCountryCallingCode, nationalNumber, metadata) {\r\n\t\tif (!countryOrCountryCallingCode) {\r\n\t\t\tthrow new TypeError('`country` or `countryCallingCode` not passed')\r\n\t\t}\r\n\t\tif (!nationalNumber) {\r\n\t\t\tthrow new TypeError('`nationalNumber` not passed')\r\n\t\t}\r\n\t\tif (!metadata) {\r\n\t\t\tthrow new TypeError('`metadata` not passed')\r\n\t\t}\r\n\t\tconst { country, countryCallingCode } = getCountryAndCountryCallingCode(\r\n\t\t\tcountryOrCountryCallingCode,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\tthis.country = country\r\n\t\tthis.countryCallingCode = countryCallingCode\r\n\t\tthis.nationalNumber = nationalNumber\r\n\t\tthis.number = '+' + this.countryCallingCode + this.nationalNumber\r\n\t\t// Exclude `metadata` property output from `PhoneNumber.toString()`\r\n\t\t// so that it doesn't clutter the console output of Node.js.\r\n\t\t// Previously, when Node.js did `console.log(new PhoneNumber(...))`,\r\n\t\t// it would output the whole internal structure of the `metadata` object.\r\n\t\tthis.getMetadata = () => metadata\r\n\t}\r\n\r\n\tsetExt(ext) {\r\n\t\tthis.ext = ext\r\n\t}\r\n\r\n\tgetPossibleCountries() {\r\n\t\tif (this.country) {\r\n\t\t\treturn [this.country]\r\n\t\t}\r\n\t\treturn getPossibleCountriesForNumber(\r\n\t\t\tthis.countryCallingCode,\r\n\t\t\tthis.nationalNumber,\r\n\t\t\tthis.getMetadata()\r\n\t\t)\r\n\t}\r\n\r\n\tisPossible() {\r\n\t\treturn isPossibleNumber(this, { v2: true }, this.getMetadata())\r\n\t}\r\n\r\n\tisValid() {\r\n\t\treturn isValidNumber(this, { v2: true }, this.getMetadata())\r\n\t}\r\n\r\n\tisNonGeographic() {\r\n\t\tconst metadata = new Metadata(this.getMetadata())\r\n\t\treturn metadata.isNonGeographicCallingCode(this.countryCallingCode)\r\n\t}\r\n\r\n\tisEqual(phoneNumber) {\r\n\t\treturn this.number === phoneNumber.number && this.ext === phoneNumber.ext\r\n\t}\r\n\r\n\t// This function was originally meant to be an equivalent for `validatePhoneNumberLength()`,\r\n\t// but later it was found out that it doesn't include the possible `TOO_SHORT` result\r\n\t// returned from `parsePhoneNumberWithError()` in the original `validatePhoneNumberLength()`,\r\n\t// so eventually I simply commented out this method from the `PhoneNumber` class\r\n\t// and just left the `validatePhoneNumberLength()` function, even though that one would require\r\n\t// and additional step to also validate the actual country / calling code of the phone number.\r\n\t// validateLength() {\r\n\t// \tconst metadata = new Metadata(this.getMetadata())\r\n\t// \tmetadata.selectNumberingPlan(this.countryCallingCode)\r\n\t// \tconst result = checkNumberLength(this.nationalNumber, metadata)\r\n\t// \tif (result !== 'IS_POSSIBLE') {\r\n\t// \t\treturn result\r\n\t// \t}\r\n\t// }\r\n\r\n\tgetType() {\r\n\t\treturn getNumberType(this, { v2: true }, this.getMetadata())\r\n\t}\r\n\r\n\tformat(format, options) {\r\n\t\treturn formatNumber(\r\n\t\t\tthis,\r\n\t\t\tformat,\r\n\t\t\toptions ? { ...options, v2: true } : { v2: true },\r\n\t\t\tthis.getMetadata()\r\n\t\t)\r\n\t}\r\n\r\n\tformatNational(options) {\r\n\t\treturn this.format('NATIONAL', options)\r\n\t}\r\n\r\n\tformatInternational(options) {\r\n\t\treturn this.format('INTERNATIONAL', options)\r\n\t}\r\n\r\n\tgetURI(options) {\r\n\t\treturn this.format('RFC3966', options)\r\n\t}\r\n}\r\n\r\nconst isCountryCode = (value) => /^[A-Z]{2}$/.test(value)\r\n\r\nfunction getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadataJson) {\r\n\tlet country\r\n\tlet countryCallingCode\r\n\r\n\tconst metadata = new Metadata(metadataJson)\r\n\t// If country code is passed then derive `countryCallingCode` from it.\r\n\t// Also store the country code as `.country`.\r\n\tif (isCountryCode(countryOrCountryCallingCode)) {\r\n\t\tcountry = countryOrCountryCallingCode\r\n\t\tmetadata.selectNumberingPlan(country)\r\n\t\tcountryCallingCode = metadata.countryCallingCode()\r\n\t} else {\r\n\t\tcountryCallingCode = countryOrCountryCallingCode\r\n\t\t/* istanbul ignore if */\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tif (metadata.isNonGeographicCallingCode(countryCallingCode)) {\r\n\t\t\t\tcountry = '001'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode\r\n\t}\r\n}","import Metadata from './metadata.js'\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\n\r\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * isValid(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\r\nexport default function isValidNumber(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\t// By default, countries only have type regexps when it's required for\r\n\t// distinguishing different countries having the same `countryCallingCode`.\r\n\tif (metadata.hasTypes()) {\r\n\t\treturn getNumberType(input, options, metadata.metadata) !== undefined\r\n\t}\r\n\r\n\t// If there are no type regexps for this country in metadata then use\r\n\t// `nationalNumberPattern` as a \"better than nothing\" replacement.\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\treturn matchesEntirely(nationalNumber, metadata.nationalNumberPattern())\r\n}","// The minimum length of the national significant number.\r\nexport const MIN_LENGTH_FOR_NSN = 2\r\n\r\n// The ITU says the maximum length should be 15,\r\n// but one can find longer numbers in Germany.\r\nexport const MAX_LENGTH_FOR_NSN = 17\r\n\r\n// The maximum length of the country calling code.\r\nexport const MAX_LENGTH_COUNTRY_CODE = 3\r\n\r\n// Digits accepted in phone numbers\r\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\r\nexport const VALID_DIGITS = '0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9'\r\n\r\n// `DASHES` will be right after the opening square bracket of the \"character class\"\r\nconst DASHES = '-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D'\r\nconst SLASHES = '\\uFF0F/'\r\nconst DOTS = '\\uFF0E.'\r\nexport const WHITESPACE = ' \\u00A0\\u00AD\\u200B\\u2060\\u3000'\r\nconst BRACKETS = '()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]'\r\n// export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\r\nconst TILDES = '~\\u2053\\u223C\\uFF5E'\r\n\r\n// Regular expression of acceptable punctuation found in phone numbers. This\r\n// excludes punctuation found as a leading character only. This consists of dash\r\n// characters, white space characters, full stops, slashes, square brackets,\r\n// parentheses and tildes. Full-width variants are also present.\r\nexport const VALID_PUNCTUATION = `${DASHES}${SLASHES}${DOTS}${WHITESPACE}${BRACKETS}${TILDES}`\r\n\r\nexport const PLUS_CHARS = '+\\uFF0B'\r\n// const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')","import { VALID_PUNCTUATION } from '../constants.js'\r\n\r\n// Removes brackets and replaces dashes with spaces.\r\n//\r\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\r\n//\r\n// For some reason Google's metadata contains `<intlFormat/>`s with brackets and dashes.\r\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\r\n//\r\n// For example, Google's `<intlFormat/>` for USA is `+1 213-373-4253`.\r\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\r\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\r\n//\r\n// \"The country calling code for all countries participating in the NANP is 1.\r\n// In international format, an NANP number should be listed as +1 301 555 01 00,\r\n// where 301 is an area code (Maryland).\"\r\n//\r\n// I personally prefer the international format without any punctuation.\r\n// For example, brackets are remnants of the old age, meaning that the\r\n// phone number part in brackets (so called \"area code\") can be omitted\r\n// if dialing within the same \"area\".\r\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\r\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\r\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\r\n// He has a couple of seconds to memorize that number until it passes by.\r\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\r\n// but with hyphens instead of spaces the grouping is more explicit.\r\n// I personally think that hyphens introduce visual clutter,\r\n// so I prefer replacing them with spaces in international numbers.\r\n// In the modern age all output is done on displays where spaces are clearly distinguishable\r\n// so hyphens can be safely replaced with spaces without losing any legibility.\r\n//\r\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\r\n\treturn formattedNumber.replace(new RegExp(`[${VALID_PUNCTUATION}]+`, 'g'), ' ').trim()\r\n}","import mergeArrays from './mergeArrays.js'\r\n\r\nexport default function checkNumberLength(nationalNumber, metadata) {\r\n\treturn checkNumberLengthForType(nationalNumber, undefined, metadata)\r\n}\r\n\r\n// Checks whether a number is possible for the country based on its length.\r\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\r\nexport function checkNumberLengthForType(nationalNumber, type, metadata) {\r\n\tconst type_info = metadata.type(type)\r\n\r\n\t// There should always be \"<possiblePengths/>\" set for every type element.\r\n\t// This is declared in the XML schema.\r\n\t// For size efficiency, where a sub-description (e.g. fixed-line)\r\n\t// has the same \"<possiblePengths/>\" as the \"general description\", this is missing,\r\n\t// so we fall back to the \"general description\". Where no numbers of the type\r\n\t// exist at all, there is one possible length (-1) which is guaranteed\r\n\t// not to match the length of any real phone number.\r\n\tlet possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths()\r\n\t// let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\r\n\r\n\t// Metadata before version `1.0.18` didn't contain `possible_lengths`.\r\n\tif (!possible_lengths) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (type === 'FIXED_LINE_OR_MOBILE') {\r\n\t\t// No such country in metadata.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (!metadata.type('FIXED_LINE')) {\r\n\t\t\t// The rare case has been encountered where no fixedLine data is available\r\n\t\t\t// (true for some non-geographic entities), so we just check mobile.\r\n\t\t\treturn checkNumberLengthForType(nationalNumber, 'MOBILE', metadata)\r\n\t\t}\r\n\r\n\t\tconst mobile_type = metadata.type('MOBILE')\r\n\t\tif (mobile_type) {\r\n\t\t\t// Merge the mobile data in if there was any. \"Concat\" creates a new\r\n\t\t\t// array, it doesn't edit possible_lengths in place, so we don't need a copy.\r\n\t\t\t// Note that when adding the possible lengths from mobile, we have\r\n\t\t\t// to again check they aren't empty since if they are this indicates\r\n\t\t\t// they are the same as the general desc and should be obtained from there.\r\n\t\t\tpossible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths())\r\n\t\t\t// The current list is sorted; we need to merge in the new list and\r\n\t\t\t// re-sort (duplicates are okay). Sorting isn't so expensive because\r\n\t\t\t// the lists are very small.\r\n\r\n\t\t\t// if (local_lengths) {\r\n\t\t\t// \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\r\n\t\t\t// } else {\r\n\t\t\t// \tlocal_lengths = mobile_type.possibleLengthsLocal()\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n\t// If the type doesn't exist then return 'INVALID_LENGTH'.\r\n\telse if (type && !type_info) {\r\n\t\treturn 'INVALID_LENGTH'\r\n\t}\r\n\r\n\tconst actual_length = nationalNumber.length\r\n\r\n\t// In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\r\n\t// // This is safe because there is never an overlap beween the possible lengths\r\n\t// // and the local-only lengths; this is checked at build time.\r\n\t// if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\r\n\t// {\r\n\t// \treturn 'IS_POSSIBLE_LOCAL_ONLY'\r\n\t// }\r\n\r\n\tconst minimum_length = possible_lengths[0]\r\n\r\n\tif (minimum_length === actual_length) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (minimum_length > actual_length) {\r\n\t\treturn 'TOO_SHORT'\r\n\t}\r\n\r\n\tif (possible_lengths[possible_lengths.length - 1] < actual_length) {\r\n\t\treturn 'TOO_LONG'\r\n\t}\r\n\r\n\t// We skip the first element since we've already checked it.\r\n\treturn possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH'\r\n}","/**\r\n * Merges two arrays.\r\n * @param {*} a\r\n * @param {*} b\r\n * @return {*}\r\n */\r\nexport default function mergeArrays(a, b) {\r\n\tconst merged = a.slice()\r\n\r\n\tfor (const element of b) {\r\n\t\tif (a.indexOf(element) < 0) {\r\n\t\t\tmerged.push(element)\r\n\t\t}\r\n\t}\r\n\r\n\treturn merged.sort((a, b) => a - b)\r\n\r\n\t// ES6 version, requires Set polyfill.\r\n\t// let merged = new Set(a)\r\n\t// for (const element of b) {\r\n\t// \tmerged.add(i)\r\n\t// }\r\n\t// return Array.from(merged).sort((a, b) => a - b)\r\n}","import stripIddPrefix from './stripIddPrefix.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport Metadata from '../metadata.js'\r\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js'\r\n\r\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Default country.\r\n * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCodeSource: string?, countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\r\nexport default function extractCountryCallingCode(\r\n\tnumber,\r\n\tcountry,\r\n\tcallingCode,\r\n\tmetadata\r\n) {\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tlet isNumberWithIddPrefix\r\n\r\n\t// If this is not an international phone number,\r\n\t// then either extract an \"IDD\" prefix, or extract a\r\n\t// country calling code from a number by autocorrecting it\r\n\t// by prepending a leading `+` in cases when it starts\r\n\t// with the country calling code.\r\n\t// https://wikitravel.org/en/International_dialling_prefix\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\tif (number[0] !== '+') {\r\n\t\t// Convert an \"out-of-country\" dialing phone number\r\n\t\t// to a proper international phone number.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata)\r\n\t\t// If an IDD prefix was stripped then\r\n\t\t// convert the number to international one\r\n\t\t// for subsequent parsing.\r\n\t\tif (numberWithoutIDD && numberWithoutIDD !== number) {\r\n\t\t\tisNumberWithIddPrefix = true\r\n\t\t\tnumber = '+' + numberWithoutIDD\r\n\t\t} else {\r\n\t\t\t// Check to see if the number starts with the country calling code\r\n\t\t\t// for the default country. If so, we remove the country calling code,\r\n\t\t\t// and do some checks on the validity of the number before and after.\r\n\t\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t\tif (country || callingCode) {\r\n\t\t\t\tconst {\r\n\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\t\tnumber,\r\n\t\t\t\t\tcountry,\r\n\t\t\t\t\tcallingCode,\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t)\r\n\t\t\t\tif (countryCallingCode) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tcountryCallingCodeSource: 'FROM_NUMBER_WITHOUT_PLUS_SIGN',\r\n\t\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\t// No need to set it to `UNSPECIFIED`. It can be just `undefined`.\r\n\t\t\t\t// countryCallingCodeSource: 'UNSPECIFIED',\r\n\t\t\t\tnumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Fast abortion: country codes do not begin with a '0'\r\n\tif (number[1] === '0') {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// The thing with country phone codes\r\n\t// is that they are orthogonal to each other\r\n\t// i.e. there's no such country phone code A\r\n\t// for which country phone code B exists\r\n\t// where B starts with A.\r\n\t// Therefore, while scanning digits,\r\n\t// if a valid country code is found,\r\n\t// that means that it is the country code.\r\n\t//\r\n\tlet i = 2\r\n\twhile (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\r\n\t\tconst countryCallingCode = number.slice(1, i)\r\n\t\tif (metadata.hasCallingCode(countryCallingCode)) {\r\n\t\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCodeSource: isNumberWithIddPrefix ? 'FROM_NUMBER_WITH_IDD' : 'FROM_NUMBER_WITH_PLUS_SIGN',\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: number.slice(i)\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\r\n\treturn {}\r\n}\r\n\r\n// The possible values for the returned `countryCallingCodeSource` are:\r\n//\r\n// Copy-pasted from:\r\n// https://github.com/google/libphonenumber/blob/master/resources/phonenumber.proto\r\n//\r\n// // The source from which the country_code is derived. This is not set in the\r\n// // general parsing method, but in the method that parses and keeps raw_input.\r\n// // New fields could be added upon request.\r\n// enum CountryCodeSource {\r\n// // Default value returned if this is not set, because the phone number was\r\n// // created using parse, not parseAndKeepRawInput. hasCountryCodeSource will\r\n// // return false if this is the case.\r\n// UNSPECIFIED = 0;\r\n//\r\n// // The country_code is derived based on a phone number with a leading \"+\",\r\n// // e.g. the French number \"+33 1 42 68 53 00\".\r\n// FROM_NUMBER_WITH_PLUS_SIGN = 1;\r\n//\r\n// // The country_code is derived based on a phone number with a leading IDD,\r\n// // e.g. the French number \"011 33 1 42 68 53 00\", as it is dialled from US.\r\n// FROM_NUMBER_WITH_IDD = 5;\r\n//\r\n// // The country_code is derived based on a phone number without a leading\r\n// // \"+\", e.g. the French number \"33 1 42 68 53 00\" when defaultCountry is\r\n// // supplied as France.\r\n// FROM_NUMBER_WITHOUT_PLUS_SIGN = 10;\r\n//\r\n// // The country_code is derived NOT based on the phone number itself, but\r\n// // from the defaultCountry parameter provided in the parsing function by the\r\n// // clients. This happens mostly for numbers written in the national format\r\n// // (without country code). For example, this would be set when parsing the\r\n// // French number \"01 42 68 53 00\", when defaultCountry is supplied as\r\n// // France.\r\n// FROM_DEFAULT_COUNTRY = 20;\r\n// }","import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\nimport extractNationalNumber from './extractNationalNumber.js'\r\nimport checkNumberLength from './checkNumberLength.js'\r\nimport getCountryCallingCode from '../getCountryCallingCode.js'\r\n\r\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string?} country\r\n * @param {string?} callingCode\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\r\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\tnumber,\r\n\tcountry,\r\n\tcallingCode,\r\n\tmetadata\r\n) {\r\n\tconst countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode\r\n\tif (number.indexOf(countryCallingCode) === 0) {\r\n\t\tmetadata = new Metadata(metadata)\r\n\t\tmetadata.selectNumberingPlan(country, callingCode)\r\n\t\tconst possibleShorterNumber = number.slice(countryCallingCode.length)\r\n\t\tconst {\r\n\t\t\tnationalNumber: possibleShorterNationalNumber,\r\n\t\t} = extractNationalNumber(\r\n\t\t\tpossibleShorterNumber,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\tconst {\r\n\t\t\tnationalNumber\r\n\t\t} = extractNationalNumber(\r\n\t\t\tnumber,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\t// If the number was not valid before but is valid now,\r\n\t\t// or if it was too long before, we consider the number\r\n\t\t// with the country calling code stripped to be a better result\r\n\t\t// and keep that instead.\r\n\t\t// For example, in Germany (+49), `49` is a valid area code,\r\n\t\t// so if a number starts with `49`, it could be both a valid\r\n\t\t// national German number or an international number without\r\n\t\t// a leading `+`.\r\n\t\tif (\r\n\t\t\t(\r\n\t\t\t\t!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())\r\n\t\t\t\t&&\r\n\t\t\t\tmatchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern())\r\n\t\t\t)\r\n\t\t\t||\r\n\t\t\tcheckNumberLength(nationalNumber, metadata) === 'TOO_LONG'\r\n\t\t) {\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: possibleShorterNumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn { number }\r\n}","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\nimport checkNumberLength from './checkNumberLength.js'\r\n\r\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\r\nexport default function extractNationalNumber(number, metadata) {\r\n\t// Parsing national prefixes and carrier codes\r\n\t// is only required for local phone numbers\r\n\t// but some people don't understand that\r\n\t// and sometimes write international phone numbers\r\n\t// with national prefixes (or maybe even carrier codes).\r\n\t// http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\r\n\t// Google's original library forgives such mistakes\r\n\t// and so does this library, because it has been requested:\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/127\r\n\tconst {\r\n\t\tcarrierCode,\r\n\t\tnationalNumber\r\n\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\tnumber,\r\n\t\tmetadata\r\n\t)\r\n\r\n\tif (nationalNumber !== number) {\r\n\t\tif (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\r\n\t\t\t// Don't strip the national prefix.\r\n\t\t\treturn { nationalNumber: number }\r\n\t\t}\r\n\t\t// Check the national (significant) number length after extracting national prefix and carrier code.\r\n\t\t// Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\r\n\t\tif (metadata.possibleLengths()) {\r\n\t\t\t// The number remaining after stripping the national prefix and carrier code\r\n\t\t\t// should be long enough to have a possible length for the country.\r\n\t\t\t// Otherwise, don't strip the national prefix and carrier code,\r\n\t\t\t// since the original number could be a valid number.\r\n\t\t\t// This check has been copy-pasted \"as is\" from Google's original library:\r\n\t\t\t// https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\r\n\t\t\t// It doesn't check for the \"possibility\" of the original `number`.\r\n\t\t\t// I guess it's fine not checking that one. It works as is anyway.\r\n\t\t\tif (!isPossibleIncompleteNationalNumber(nationalNumber, metadata)) {\r\n\t\t\t\t// Don't strip the national prefix.\r\n\t\t\t\treturn { nationalNumber: number }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn { nationalNumber, carrierCode }\r\n}\r\n\r\n// In some countries, the same digit could be a national prefix\r\n// or a leading digit of a valid phone number.\r\n// For example, in Russia, national prefix is `8`,\r\n// and also `800 555 35 35` is a valid number\r\n// in which `8` is not a national prefix, but the first digit\r\n// of a national (significant) number.\r\n// Same's with Belarus:\r\n// `82004910060` is a valid national (significant) number,\r\n// but `2004910060` is not.\r\n// To support such cases (to prevent the code from always stripping\r\n// national prefix), a condition is imposed: a national prefix\r\n// is not extracted when the original number is \"viable\" and the\r\n// resultant number is not, a \"viable\" national number being the one\r\n// that matches `national_number_pattern`.\r\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\r\n\t// The equivalent in Google's code is:\r\n\t// https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\r\n\tif (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) &&\r\n\t\t!matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\r\n\t\treturn false\r\n\t}\r\n\t// This \"is possible\" national number (length) check has been commented out\r\n\t// because it's superceded by the (effectively) same check done in the\r\n\t// `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\r\n\t// In other words, why run the same check twice if it could only be run once.\r\n\t// // Check the national (significant) number length after extracting national prefix and carrier code.\r\n\t// // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\r\n\t// // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\r\n\t// if (metadata.possibleLengths()) {\r\n\t// \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\r\n\t// \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\r\n\t// \t\treturn false\r\n\t// \t}\r\n\t// }\r\n\treturn true\r\n}\r\n\r\nfunction isPossibleIncompleteNationalNumber(nationalNumber, metadata) {\r\n\tswitch (checkNumberLength(nationalNumber, metadata)) {\r\n\t\tcase 'TOO_SHORT':\r\n\t\tcase 'INVALID_LENGTH':\r\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\r\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\r\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t\treturn false\r\n\t\tdefault:\r\n\t\t\treturn true\r\n\t}\r\n}","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\r\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\r\n\tif (number && metadata.numberingPlan.nationalPrefixForParsing()) {\r\n\t\t// See METADATA.md for the description of\r\n\t\t// `national_prefix_for_parsing` and `national_prefix_transform_rule`.\r\n\t\t// Attempt to parse the first digits as a national prefix.\r\n\t\tconst prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')')\r\n\t\tconst prefixMatch = prefixPattern.exec(number)\r\n\t\tif (prefixMatch) {\r\n\t\t\tlet nationalNumber\r\n\t\t\tlet carrierCode\r\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\t\t// If a `national_prefix_for_parsing` has any \"capturing groups\"\r\n\t\t\t// then it means that the national (significant) number is equal to\r\n\t\t\t// those \"capturing groups\" transformed via `national_prefix_transform_rule`,\r\n\t\t\t// and nothing could be said about the actual national prefix:\r\n\t\t\t// what is it and was it even there.\r\n\t\t\t// If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\r\n\t\t\t// then everything it matches is a national prefix.\r\n\t\t\t// To determine whether `national_prefix_for_parsing` matched any\r\n\t\t\t// \"capturing groups\", the value of the result of calling `.exec()`\r\n\t\t\t// is looked at, and if it has non-undefined values where there're\r\n\t\t\t// \"capturing groups\" in the regular expression, then it means\r\n\t\t\t// that \"capturing groups\" have been matched.\r\n\t\t\t// It's not possible to tell whether there'll be any \"capturing gropus\"\r\n\t\t\t// before the matching process, because a `national_prefix_for_parsing`\r\n\t\t\t// could exhibit both behaviors.\r\n\t\t\tconst capturedGroupsCount = prefixMatch.length - 1\r\n\t\t\tconst hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount]\r\n\t\t\tif (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\r\n\t\t\t\tnationalNumber = number.replace(\r\n\t\t\t\t\tprefixPattern,\r\n\t\t\t\t\tmetadata.nationalPrefixTransformRule()\r\n\t\t\t\t)\r\n\t\t\t\t// If there's more than one captured group,\r\n\t\t\t\t// then carrier code is the second one.\r\n\t\t\t\tif (capturedGroupsCount > 1) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If there're no \"capturing groups\",\r\n\t\t\t// or if there're \"capturing groups\" but no\r\n\t\t\t// `national_prefix_transform_rule`,\r\n\t\t\t// then just strip the national prefix from the number,\r\n\t\t\t// and possibly a carrier code.\r\n\t\t\t// Seems like there could be more.\r\n\t\t\telse {\r\n\t\t\t\t// `prefixBeforeNationalNumber` is the whole substring matched by\r\n\t\t\t\t// the `national_prefix_for_parsing` regular expression.\r\n\t\t\t\t// There seem to be no guarantees that it's just a national prefix.\r\n\t\t\t\t// For example, if there's a carrier code, it's gonna be a\r\n\t\t\t\t// part of `prefixBeforeNationalNumber` too.\r\n\t\t\t\tconst prefixBeforeNationalNumber = prefixMatch[0]\r\n\t\t\t\tnationalNumber = number.slice(prefixBeforeNationalNumber.length)\r\n\t\t\t\t// If there's at least one captured group,\r\n\t\t\t\t// then carrier code is the first one.\r\n\t\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Tries to guess whether a national prefix was present in the input.\r\n\t\t\t// This is not something copy-pasted from Google's library:\r\n\t\t\t// they don't seem to have an equivalent for that.\r\n\t\t\t// So this isn't an \"officially approved\" way of doing something like that.\r\n\t\t\t// But since there seems no other existing method, this library uses it.\r\n\t\t\tlet nationalPrefix\r\n\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\tconst possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1])\r\n\t\t\t\tconst possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup)\r\n\t\t\t\t// Example: an Argentinian (AR) phone number `0111523456789`.\r\n\t\t\t\t// `prefixMatch[0]` is `01115`, and `$1` is `11`,\r\n\t\t\t\t// and the rest of the phone number is `23456789`.\r\n\t\t\t\t// The national number is transformed via `9$1` to `91123456789`.\r\n\t\t\t\t// National prefix `0` is detected being present at the start.\r\n\t\t\t\t// if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\r\n\t\t\t\tif (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\r\n\t\t\t\t\tnationalPrefix = metadata.numberingPlan.nationalPrefix()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnationalPrefix = prefixMatch[0]\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tnationalNumber,\r\n\t\t\t\tnationalPrefix,\r\n\t\t\t\tcarrierCode\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n return {\r\n \tnationalNumber: number\r\n }\r\n}","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'\r\n\r\n// This was originally set to $1 but there are some countries for which the\r\n// first group is not used in the national pattern (e.g. Argentina) so the $1\r\n// group does not match correctly. Therefore, we use `\\d`, so that the first\r\n// group actually used in the pattern will be matched.\r\nexport const FIRST_GROUP_PATTERN = /(\\$\\d)/\r\n\r\nexport default function formatNationalNumberUsingFormat(\r\n\tnumber,\r\n\tformat,\r\n\t{\r\n\t\tuseInternationalFormat,\r\n\t\twithNationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tmetadata\r\n\t}\r\n) {\r\n\tconst formattedNumber = number.replace(\r\n\t\tnew RegExp(format.pattern()),\r\n\t\tuseInternationalFormat\r\n\t\t\t? format.internationalFormat()\r\n\t\t\t: (\r\n\t\t\t\t// This library doesn't use `domestic_carrier_code_formatting_rule`,\r\n\t\t\t\t// because that one is only used when formatting phone numbers\r\n\t\t\t\t// for dialing from a mobile phone, and this is not a dialing library.\r\n\t\t\t\t// carrierCode && format.domesticCarrierCodeFormattingRule()\r\n\t\t\t\t// \t// First, replace the $CC in the formatting rule with the desired carrier code.\r\n\t\t\t\t// \t// Then, replace the $FG in the formatting rule with the first group\r\n\t\t\t\t// \t// and the carrier code combined in the appropriate way.\r\n\t\t\t\t// \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\r\n\t\t\t\t// \t: (\r\n\t\t\t\t// \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t// \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t// \t\t\t: format.format()\r\n\t\t\t\t// \t)\r\n\t\t\t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t\t: format.format()\r\n\t\t\t)\r\n\t)\r\n\tif (useInternationalFormat) {\r\n\t\treturn applyInternationalSeparatorStyle(formattedNumber)\r\n\t}\r\n\treturn formattedNumber\r\n}","import getCountryByNationalNumber from './getCountryByNationalNumber.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default function getCountryByCallingCode(callingCode, {\r\n\tnationalNumber: nationalPhoneNumber,\r\n\tdefaultCountry,\r\n\tmetadata\r\n}) {\r\n\t/* istanbul ignore if */\r\n\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\tif (metadata.isNonGeographicCallingCode(callingCode)) {\r\n\t\t\treturn '001'\r\n\t\t}\r\n\t}\r\n\tconst possibleCountries = metadata.getCountryCodesForCallingCode(callingCode)\r\n\tif (!possibleCountries) {\r\n\t\treturn\r\n\t}\r\n\t// If there's just one country corresponding to the country code,\r\n\t// then just return it, without further phone number digits validation.\r\n\tif (possibleCountries.length === 1) {\r\n\t\treturn possibleCountries[0]\r\n\t}\r\n\treturn getCountryByNationalNumber(nationalPhoneNumber, {\r\n\t\tcountries: possibleCountries,\r\n\t\tdefaultCountry,\r\n\t\tmetadata: metadata.metadata\r\n\t})\r\n}","import Metadata from '../metadata.js'\r\nimport getNumberType from './getNumberType.js'\r\n\r\nexport default function getCountryByNationalNumber(nationalPhoneNumber, {\r\n\tcountries,\r\n\tdefaultCountry,\r\n\tmetadata\r\n}) {\r\n\t// Re-create `metadata` because it will be selecting a `country`.\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// const matchingCountries = []\r\n\r\n\tfor (const country of countries) {\r\n\t\tmetadata.country(country)\r\n\t\t// \"Leading digits\" patterns are only defined for about 20% of all countries.\r\n\t\t// By definition, matching \"leading digits\" is a sufficient but not a necessary\r\n\t\t// condition for a phone number to belong to a country.\r\n\t\t// The point of \"leading digits\" check is that it's the fastest one to get a match.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\r\n\t\t// I'd suppose that \"leading digits\" patterns are mutually exclusive for different countries\r\n\t\t// because of the intended use of that feature.\r\n\t\tif (metadata.leadingDigits()) {\r\n\t\t\tif (nationalPhoneNumber &&\r\n\t\t\t\tnationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\r\n\t\t\t\treturn country\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Else perform full validation with all of those\r\n\t\t// fixed-line/mobile/etc regular expressions.\r\n\t\telse if (getNumberType({ phone: nationalPhoneNumber, country }, undefined, metadata.metadata)) {\r\n\t\t\t// If both the `defaultCountry` and the \"main\" one match the phone number,\r\n\t\t\t// don't prefer the `defaultCountry` over the \"main\" one.\r\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/154\r\n\t\t\treturn country\r\n\t\t\t// // If the `defaultCountry` is among the `matchingCountries` then return it.\r\n\t\t\t// if (defaultCountry) {\r\n\t\t\t// \tif (country === defaultCountry) {\r\n\t\t\t// \t\treturn country\r\n\t\t\t// \t}\r\n\t\t\t// \tmatchingCountries.push(country)\r\n\t\t\t// } else {\r\n\t\t\t// \treturn country\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n\r\n\t// // Return the first (\"main\") one of the `matchingCountries`.\r\n\t// if (matchingCountries.length > 0) {\r\n\t// \treturn matchingCountries[0]\r\n\t// }\r\n}","import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\n\r\nconst NON_FIXED_LINE_PHONE_TYPES = [\r\n\t'MOBILE',\r\n\t'PREMIUM_RATE',\r\n\t'TOLL_FREE',\r\n\t'SHARED_COST',\r\n\t'VOIP',\r\n\t'PERSONAL_NUMBER',\r\n\t'PAGER',\r\n\t'UAN',\r\n\t'VOICEMAIL'\r\n]\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function getNumberType(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\t// When `parse()` returns an empty object — `{}` —\r\n\t// that means that the phone number is malformed,\r\n\t// so it can't possibly be valid.\r\n\tif (!input.country && !input.countryCallingCode) {\r\n\t\treturn\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// The following is copy-pasted from the original function:\r\n\t// https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\r\n\r\n\t// Is this national number even valid for this country\r\n\tif (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\r\n\t\treturn\r\n\t}\r\n\r\n\t// Is it fixed line number\r\n\tif (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\r\n\t\t// Because duplicate regular expressions are removed\r\n\t\t// to reduce metadata size, if \"mobile\" pattern is \"\"\r\n\t\t// then it means it was removed due to being a duplicate of the fixed-line pattern.\r\n\t\t//\r\n\t\tif (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\r\n\t\t// For example, for \"US\" country.\r\n\t\t// Old metadata (< `1.0.18`) had a specific \"types\" data structure\r\n\t\t// that happened to be `undefined` for `MOBILE` in that case.\r\n\t\t// Newer metadata (>= `1.0.18`) has another data structure that is\r\n\t\t// not `undefined` for `MOBILE` in that case (it's just an empty array).\r\n\t\t// So this `if` is just for backwards compatibility with old metadata.\r\n\t\tif (!metadata.type('MOBILE')) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// Check if the number happens to qualify as both fixed line and mobile.\r\n\t\t// (no such country in the minimal metadata set)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\treturn 'FIXED_LINE'\r\n\t}\r\n\r\n\tfor (const type of NON_FIXED_LINE_PHONE_TYPES) {\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\r\n\t\t\treturn type\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\r\n\ttype = metadata.type(type)\r\n\tif (!type || !type.pattern()) {\r\n\t\treturn false\r\n\t}\r\n\t// Check if any possible number lengths are present;\r\n\t// if so, we use them to avoid checking\r\n\t// the validation pattern if they don't match.\r\n\t// If they are absent, this means they match\r\n\t// the general description, which we have\r\n\t// already checked before a specific number type.\r\n\tif (type.possibleLengths() &&\r\n\t\ttype.possibleLengths().indexOf(nationalNumber.length) < 0) {\r\n\t\treturn false\r\n\t}\r\n\treturn matchesEntirely(nationalNumber, type.pattern())\r\n}","const objectConstructor = {}.constructor;\r\n\r\nexport default function isObject(object) {\r\n return object !== undefined && object !== null && object.constructor === objectConstructor;\r\n}\r\n","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\r\nexport default function matchesEntirely(text, regular_expression) {\r\n\t// If assigning the `''` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\ttext = text || ''\r\n\treturn new RegExp('^(?:' + regular_expression + ')$').test(text)\r\n}","// These mappings map a character (key) to a specific digit that should\r\n// replace it for normalization purposes. Non-European digits that\r\n// may be used in phone numbers are mapped to a European equivalent.\r\n//\r\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n//\r\nexport const DIGITS = {\r\n\t'0': '0',\r\n\t'1': '1',\r\n\t'2': '2',\r\n\t'3': '3',\r\n\t'4': '4',\r\n\t'5': '5',\r\n\t'6': '6',\r\n\t'7': '7',\r\n\t'8': '8',\r\n\t'9': '9',\r\n\t'\\uFF10': '0', // Fullwidth digit 0\r\n\t'\\uFF11': '1', // Fullwidth digit 1\r\n\t'\\uFF12': '2', // Fullwidth digit 2\r\n\t'\\uFF13': '3', // Fullwidth digit 3\r\n\t'\\uFF14': '4', // Fullwidth digit 4\r\n\t'\\uFF15': '5', // Fullwidth digit 5\r\n\t'\\uFF16': '6', // Fullwidth digit 6\r\n\t'\\uFF17': '7', // Fullwidth digit 7\r\n\t'\\uFF18': '8', // Fullwidth digit 8\r\n\t'\\uFF19': '9', // Fullwidth digit 9\r\n\t'\\u0660': '0', // Arabic-indic digit 0\r\n\t'\\u0661': '1', // Arabic-indic digit 1\r\n\t'\\u0662': '2', // Arabic-indic digit 2\r\n\t'\\u0663': '3', // Arabic-indic digit 3\r\n\t'\\u0664': '4', // Arabic-indic digit 4\r\n\t'\\u0665': '5', // Arabic-indic digit 5\r\n\t'\\u0666': '6', // Arabic-indic digit 6\r\n\t'\\u0667': '7', // Arabic-indic digit 7\r\n\t'\\u0668': '8', // Arabic-indic digit 8\r\n\t'\\u0669': '9', // Arabic-indic digit 9\r\n\t'\\u06F0': '0', // Eastern-Arabic digit 0\r\n\t'\\u06F1': '1', // Eastern-Arabic digit 1\r\n\t'\\u06F2': '2', // Eastern-Arabic digit 2\r\n\t'\\u06F3': '3', // Eastern-Arabic digit 3\r\n\t'\\u06F4': '4', // Eastern-Arabic digit 4\r\n\t'\\u06F5': '5', // Eastern-Arabic digit 5\r\n\t'\\u06F6': '6', // Eastern-Arabic digit 6\r\n\t'\\u06F7': '7', // Eastern-Arabic digit 7\r\n\t'\\u06F8': '8', // Eastern-Arabic digit 8\r\n\t'\\u06F9': '9' // Eastern-Arabic digit 9\r\n}\r\n\r\nexport function parseDigit(character) {\r\n\treturn DIGITS[character]\r\n}\r\n\r\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\r\nexport default function parseDigits(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tconst digit = parseDigit(character)\r\n\t\tif (digit) {\r\n\t\t\tresult += digit\r\n\t\t}\r\n\t}\r\n\treturn result\r\n}","import Metadata from '../metadata.js'\r\nimport { VALID_DIGITS } from '../constants.js'\r\n\r\nconst CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])')\r\n\r\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\r\n\tif (!country) {\r\n\t\treturn\r\n\t}\r\n\t// Check if the number is IDD-prefixed.\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tconst IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix())\r\n\tif (number.search(IDDPrefixPattern) !== 0) {\r\n\t\treturn\r\n\t}\r\n\t// Strip IDD prefix.\r\n\tnumber = number.slice(number.match(IDDPrefixPattern)[0].length)\r\n\t// If there're any digits after an IDD prefix,\r\n\t// then those digits are a country calling code.\r\n\t// Since no country code starts with a `0`,\r\n\t// the code below validates that the next digit (if present) is not `0`.\r\n\tconst matchedGroups = number.match(CAPTURING_DIGIT_PATTERN)\r\n\tif (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\r\n\t\tif (matchedGroups[1] === '0') {\r\n\t\t\treturn\r\n\t\t}\r\n\t}\r\n\treturn number\r\n}","import Metadata from './metadata.js'\r\nimport checkNumberLength from './helpers/checkNumberLength.js'\r\n\r\n/**\r\n * Checks if a phone number is \"possible\" (basically just checks its length).\r\n *\r\n * isPossible(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\r\nexport default function isPossiblePhoneNumber(input, options, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (options === undefined) {\r\n\t\toptions = {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tif (options.v2) {\r\n\t\tif (!input.countryCallingCode) {\r\n\t\t\tthrow new Error('Invalid phone number object passed')\r\n\t\t}\r\n\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t} else {\r\n\t\tif (!input.phone) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\tif (input.country) {\r\n\t\t\tif (!metadata.hasCountry(input.country)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${input.country}`)\r\n\t\t\t}\r\n\t\t\tmetadata.country(input.country)\r\n\t\t} else {\r\n\t\t\tif (!input.countryCallingCode) {\r\n\t\t\t\tthrow new Error('Invalid phone number object passed')\r\n\t\t\t}\r\n\t\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t\t}\r\n\t}\r\n\r\n\t// Old metadata (< 1.0.18) had no \"possible length\" data.\r\n\tif (metadata.possibleLengths()) {\r\n\t\treturn isPossibleNumber(input.phone || input.nationalNumber, metadata)\r\n\t} else {\r\n\t\t// There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\r\n\t\t// were missing for \"non-geographical\" numbering plans.\r\n\t\t// Just assume the number is possible in such cases:\r\n\t\t// it's unlikely that anyone generated their custom metadata\r\n\t\t// in that short period of time (one day).\r\n\t\t// This code can be removed in some future major version update.\r\n\t\tif (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\r\n\t\t\t// \"Non-geographic entities\" did't have `possibleLengths`\r\n\t\t\t// due to a bug in metadata generation process.\r\n\t\t\treturn true\r\n\t\t} else {\r\n\t\t\tthrow new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isPossibleNumber(nationalNumber, metadata) { //, isInternational) {\r\n\tswitch (checkNumberLength(nationalNumber, metadata)) {\r\n\t\tcase 'IS_POSSIBLE':\r\n\t\t\treturn true\r\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\r\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\r\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t// \treturn !isInternational\r\n\t\tdefault:\r\n\t\t\treturn false\r\n\t}\r\n}","// Copy-pasted from:\r\n// https://github.com/substack/semver-compare/blob/master/index.js\r\n//\r\n// Inlining this function because some users reported issues with\r\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\r\n//\r\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\r\nexport default function(a, b) {\r\n a = a.split('-')\r\n b = b.split('-')\r\n var pa = a[0].split('.')\r\n var pb = b[0].split('.')\r\n for (var i = 0; i < 3; i++) {\r\n var na = Number(pa[i])\r\n var nb = Number(pb[i])\r\n if (na > nb) return 1\r\n if (nb > na) return -1\r\n if (!isNaN(na) && isNaN(nb)) return 1\r\n if (isNaN(na) && !isNaN(nb)) return -1\r\n }\r\n if (a[1] && b[1]) {\r\n return a[1] > b[1] ? 1 : (a[1] < b[1] ? -1 : 0)\r\n }\r\n return !a[1] && b[1] ? 1 : (a[1] && !b[1] ? -1 : 0)\r\n}","import compare from './tools/semver-compare.js'\r\nimport isObject from './helpers/isObject.js'\r\n\r\n// Added \"possibleLengths\" and renamed\r\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\r\nconst V2 = '1.0.18'\r\n\r\n// Added \"idd_prefix\" and \"default_idd_prefix\".\r\nconst V3 = '1.2.0'\r\n\r\n// Moved `001` country code to \"nonGeographic\" section of metadata.\r\nconst V4 = '1.7.35'\r\n\r\nconst DEFAULT_EXT_PREFIX = ' ext. '\r\n\r\nconst CALLING_CODE_REG_EXP = /^\\d+$/\r\n\r\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\r\nexport default class Metadata {\r\n\tconstructor(metadata) {\r\n\t\tvalidateMetadata(metadata)\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, metadata)\r\n\t}\r\n\r\n\tgetCountries() {\r\n\t\treturn Object.keys(this.metadata.countries).filter(_ => _ !== '001')\r\n\t}\r\n\r\n\tgetCountryMetadata(countryCode) {\r\n\t\treturn this.metadata.countries[countryCode]\r\n\t}\r\n\r\n\tnonGeographic() {\r\n\t\tif (this.v1 || this.v2 || this.v3) return\r\n\t\t// `nonGeographical` was a typo.\r\n\t\t// It's present in metadata generated from `1.7.35` to `1.7.37`.\r\n\t\t// The test case could be found by searching for \"nonGeographical\".\r\n\t\treturn this.metadata.nonGeographic || this.metadata.nonGeographical\r\n\t}\r\n\r\n\thasCountry(country) {\r\n\t\treturn this.getCountryMetadata(country) !== undefined\r\n\t}\r\n\r\n\thasCallingCode(callingCode) {\r\n\t\tif (this.getCountryCodesForCallingCode(callingCode)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tif (this.nonGeographic()[callingCode]) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisNonGeographicCallingCode(callingCode) {\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\treturn this.nonGeographic()[callingCode] ? true : false\r\n\t\t} else {\r\n\t\t\treturn this.getCountryCodesForCallingCode(callingCode) ? false : true\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountry(countryCode) {\r\n\t\treturn this.selectNumberingPlan(countryCode)\r\n\t}\r\n\r\n\tselectNumberingPlan(countryCode, callingCode) {\r\n\t\t// Supports just passing `callingCode` as the first argument.\r\n\t\tif (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\r\n\t\t\tcallingCode = countryCode\r\n\t\t\tcountryCode = null\r\n\t\t}\r\n\t\tif (countryCode && countryCode !== '001') {\r\n\t\t\tif (!this.hasCountry(countryCode)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${countryCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this)\r\n\t\t} else if (callingCode) {\r\n\t\t\tif (!this.hasCallingCode(callingCode)) {\r\n\t\t\t\tthrow new Error(`Unknown calling code: ${callingCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this)\r\n\t\t} else {\r\n\t\t\tthis.numberingPlan = undefined\r\n\t\t}\r\n\t\treturn this\r\n\t}\r\n\r\n\tgetCountryCodesForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\tif (countryCodes) {\r\n\t\t\t// Metadata before V4 included \"non-geographic entity\" calling codes\r\n\t\t\t// inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\r\n\t\t\t// Now the semantics of `country_calling_codes` has changed:\r\n\t\t\t// it's specifically for \"countries\" now.\r\n\t\t\t// Older versions of custom metadata will simply skip parsing\r\n\t\t\t// \"non-geographic entity\" phone numbers with new versions\r\n\t\t\t// of this library: it's not considered a bug,\r\n\t\t\t// because such numbers are extremely rare,\r\n\t\t\t// and developers extremely rarely use custom metadata.\r\n\t\t\tif (countryCodes.length === 1 && countryCodes[0].length === 3) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn countryCodes\r\n\t\t}\r\n\t}\r\n\r\n\tgetCountryCodeForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.getCountryCodesForCallingCode(callingCode)\r\n\t\tif (countryCodes) {\r\n\t\t\treturn countryCodes[0]\r\n\t\t}\r\n\t}\r\n\r\n\tgetNumberingPlanMetadata(callingCode) {\r\n\t\tconst countryCode = this.getCountryCodeForCallingCode(callingCode)\r\n\t\tif (countryCode) {\r\n\t\t\treturn this.getCountryMetadata(countryCode)\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tconst metadata = this.nonGeographic()[callingCode]\r\n\t\t\tif (metadata) {\r\n\t\t\t\treturn metadata\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\t// In that metadata, there was no concept of \"non-geographic\" metadata\r\n\t\t\t// so metadata for `001` country code was stored along with other countries.\r\n\t\t\t// The test case can be found by searching for:\r\n\t\t\t// \"should work around `nonGeographic` metadata not existing\".\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn this.metadata.countries['001']\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountryCallingCode() {\r\n\t\treturn this.numberingPlan.callingCode()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tIDDPrefix() {\r\n\t\treturn this.numberingPlan.IDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tdefaultIDDPrefix() {\r\n\t\treturn this.numberingPlan.defaultIDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalNumberPattern() {\r\n\t\treturn this.numberingPlan.nationalNumberPattern()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tpossibleLengths() {\r\n\t\treturn this.numberingPlan.possibleLengths()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tformats() {\r\n\t\treturn this.numberingPlan.formats()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixForParsing() {\r\n\t\treturn this.numberingPlan.nationalPrefixForParsing()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.numberingPlan.nationalPrefixTransformRule()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tleadingDigits() {\r\n\t\treturn this.numberingPlan.leadingDigits()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\thasTypes() {\r\n\t\treturn this.numberingPlan.hasTypes()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\ttype(type) {\r\n\t\treturn this.numberingPlan.type(type)\r\n\t}\r\n\r\n\t// Deprecated.\r\n\text() {\r\n\t\treturn this.numberingPlan.ext()\r\n\t}\r\n\r\n\tcountryCallingCodes() {\r\n\t\tif (this.v1) return this.metadata.country_phone_code_to_countries\r\n\t\treturn this.metadata.country_calling_codes\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tchooseCountryByCountryCallingCode(callingCode) {\r\n\t\treturn this.selectNumberingPlan(callingCode)\r\n\t}\r\n\r\n\thasSelectedNumberingPlan() {\r\n\t\treturn this.numberingPlan !== undefined\r\n\t}\r\n}\r\n\r\nclass NumberingPlan {\r\n\tconstructor(metadata, globalMetadataObject) {\r\n\t\tthis.globalMetadataObject = globalMetadataObject\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, globalMetadataObject.metadata)\r\n\t}\r\n\r\n\tcallingCode() {\r\n\t\treturn this.metadata[0]\r\n\t}\r\n\r\n\t// Formatting information for regions which share\r\n\t// a country calling code is contained by only one region\r\n\t// for performance reasons. For example, for NANPA region\r\n\t// (\"North American Numbering Plan Administration\",\r\n\t// which includes USA, Canada, Cayman Islands, Bahamas, etc)\r\n\t// it will be contained in the metadata for `US`.\r\n\tgetDefaultCountryMetadataForRegion() {\r\n\t\treturn this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode())\r\n\t}\r\n\r\n\t// Is always present.\r\n\tIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[1]\r\n\t}\r\n\r\n\t// Is only present when a country supports multiple IDD prefixes.\r\n\tdefaultIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[12]\r\n\t}\r\n\r\n\tnationalNumberPattern() {\r\n\t\tif (this.v1 || this.v2) return this.metadata[1]\r\n\t\treturn this.metadata[2]\r\n\t}\r\n\r\n\t// \"possible length\" data is always present in Google's metadata.\r\n\tpossibleLengths() {\r\n\t\tif (this.v1) return\r\n\t\treturn this.metadata[this.v2 ? 2 : 3]\r\n\t}\r\n\r\n\t_getFormats(metadata) {\r\n\t\treturn metadata[this.v1 ? 2 : this.v2 ? 3 : 4]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// formats are all stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tformats() {\r\n\t\tconst formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || []\r\n\t\treturn formats.map(_ => new Format(_, this))\r\n\t}\r\n\r\n\tnationalPrefix() {\r\n\t\treturn this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5]\r\n\t}\r\n\r\n\t_getNationalPrefixFormattingRule(metadata) {\r\n\t\treturn metadata[this.v1 ? 4 : this.v2 ? 5 : 6]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// national prefix formatting rule is stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\t_nationalPrefixForParsing() {\r\n\t\treturn this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7]\r\n\t}\r\n\r\n\tnationalPrefixForParsing() {\r\n\t\t// If `national_prefix_for_parsing` is not set explicitly,\r\n\t\t// then infer it from `national_prefix` (if any)\r\n\t\treturn this._nationalPrefixForParsing() || this.nationalPrefix()\r\n\t}\r\n\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8]\r\n\t}\r\n\r\n\t_getNationalPrefixIsOptionalWhenFormatting() {\r\n\t\treturn !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// \"national prefix is optional when formatting\" flag is\r\n\t// stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) ||\r\n\t\t\tthis._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\tleadingDigits() {\r\n\t\treturn this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10]\r\n\t}\r\n\r\n\ttypes() {\r\n\t\treturn this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11]\r\n\t}\r\n\r\n\thasTypes() {\r\n\t\t// Versions 1.2.0 - 1.2.4: can be `[]`.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (this.types() && this.types().length === 0) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// Versions <= 1.2.4: can be `undefined`.\r\n\t\t// Version >= 1.2.5: can be `0`.\r\n\t\treturn !!this.types()\r\n\t}\r\n\r\n\ttype(type) {\r\n\t\tif (this.hasTypes() && getType(this.types(), type)) {\r\n\t\t\treturn new Type(getType(this.types(), type), this)\r\n\t\t}\r\n\t}\r\n\r\n\text() {\r\n\t\tif (this.v1 || this.v2) return DEFAULT_EXT_PREFIX\r\n\t\treturn this.metadata[13] || DEFAULT_EXT_PREFIX\r\n\t}\r\n}\r\n\r\nclass Format {\r\n\tconstructor(format, metadata) {\r\n\t\tthis._format = format\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\treturn this._format[0]\r\n\t}\r\n\r\n\tformat() {\r\n\t\treturn this._format[1]\r\n\t}\r\n\r\n\tleadingDigitsPatterns() {\r\n\t\treturn this._format[2] || []\r\n\t}\r\n\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._format[3] || this.metadata.nationalPrefixFormattingRule()\r\n\t}\r\n\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\tnationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\r\n\t\t// National prefix is omitted if there's no national prefix formatting rule\r\n\t\t// set for this country, or when the national prefix formatting rule\r\n\t\t// contains no national prefix itself, or when this rule is set but\r\n\t\t// national prefix is optional for this phone number format\r\n\t\t// (and it is not enforced explicitly)\r\n\t\treturn this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\t// Checks whether national prefix formatting rule contains national prefix.\r\n\tusesNationalPrefix() {\r\n\t\treturn this.nationalPrefixFormattingRule() &&\r\n\t\t\t// Check that national prefix formatting rule is not a \"dummy\" one.\r\n\t\t\t!FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule())\r\n\t\t\t// In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\r\n\t\t\t// when `national_prefix_formatting_rule` is not present.\r\n\t\t\t// So, `true` or `false` are returned explicitly here, so that\r\n\t\t\t// `0` number isn't returned.\r\n\t\t\t? true\r\n\t\t\t: false\r\n\t}\r\n\r\n\tinternationalFormat() {\r\n\t\treturn this._format[5] || this.format()\r\n\t}\r\n}\r\n\r\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\r\nconst FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/\r\n\r\nclass Type {\r\n\tconstructor(type, metadata) {\r\n\t\tthis.type = type\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\tif (this.metadata.v1) return this.type\r\n\t\treturn this.type[0]\r\n\t}\r\n\r\n\tpossibleLengths() {\r\n\t\tif (this.metadata.v1) return\r\n\t\treturn this.type[1] || this.metadata.possibleLengths()\r\n\t}\r\n}\r\n\r\nfunction getType(types, type) {\r\n\tswitch (type) {\r\n\t\tcase 'FIXED_LINE':\r\n\t\t\treturn types[0]\r\n\t\tcase 'MOBILE':\r\n\t\t\treturn types[1]\r\n\t\tcase 'TOLL_FREE':\r\n\t\t\treturn types[2]\r\n\t\tcase 'PREMIUM_RATE':\r\n\t\t\treturn types[3]\r\n\t\tcase 'PERSONAL_NUMBER':\r\n\t\t\treturn types[4]\r\n\t\tcase 'VOICEMAIL':\r\n\t\t\treturn types[5]\r\n\t\tcase 'UAN':\r\n\t\t\treturn types[6]\r\n\t\tcase 'PAGER':\r\n\t\t\treturn types[7]\r\n\t\tcase 'VOIP':\r\n\t\t\treturn types[8]\r\n\t\tcase 'SHARED_COST':\r\n\t\t\treturn types[9]\r\n\t}\r\n}\r\n\r\nexport function validateMetadata(metadata) {\r\n\tif (!metadata) {\r\n\t\tthrow new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.')\r\n\t}\r\n\r\n\t// `country_phone_code_to_countries` was renamed to\r\n\t// `country_calling_codes` in `1.0.18`.\r\n\tif (!isObject(metadata) || !isObject(metadata.countries)) {\r\n\t\tthrow new Error(`[libphonenumber-js] \\`metadata\\` argument was passed but it's not a valid metadata. Must be an object having \\`.countries\\` child object property. Got ${isObject(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + typeOf(metadata) + ': ' + metadata}.`)\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst typeOf = _ => typeof _\r\n\r\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\r\nexport function getExtPrefix(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.country(country).ext()\r\n\t}\r\n\treturn DEFAULT_EXT_PREFIX\r\n}\r\n\r\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\r\nexport function getCountryCallingCode(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.country(country).countryCallingCode()\r\n\t}\r\n\tthrow new Error(`Unknown country: ${country}`)\r\n}\r\n\r\nexport function isSupportedCountry(country, metadata) {\r\n\t// metadata = new Metadata(metadata)\r\n\t// return metadata.hasCountry(country)\r\n\treturn metadata.countries.hasOwnProperty(country)\r\n}\r\n\r\nfunction setVersion(metadata) {\r\n\tconst { version } = metadata\r\n\tif (typeof version === 'number') {\r\n\t\tthis.v1 = version === 1\r\n\t\tthis.v2 = version === 2\r\n\t\tthis.v3 = version === 3\r\n\t\tthis.v4 = version === 4\r\n\t} else {\r\n\t\tif (!version) {\r\n\t\t\tthis.v1 = true\r\n\t\t} else if (compare(version, V3) === -1) {\r\n\t\t\tthis.v2 = true\r\n\t\t} else if (compare(version, V4) === -1) {\r\n\t\t\tthis.v3 = true\r\n\t\t} else {\r\n\t\t\tthis.v4 = true\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\r\n// function isCountryCode(countryCode) {\r\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\r\n// }","import isObject from './helpers/isObject.js'\r\n\r\n// Extracts the following properties from function arguments:\r\n// * input `text`\r\n// * `options` object\r\n// * `metadata` JSON\r\nexport default function normalizeArguments(args) {\r\n\tconst [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args)\r\n\r\n\tlet text\r\n\tlet options\r\n\tlet metadata\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `parsePhoneNumber('88005553535', ...)`.\r\n\tif (typeof arg_1 === 'string') {\r\n\t\ttext = arg_1\r\n\t}\r\n\telse throw new TypeError('A text for parsing must be a string.')\r\n\r\n\t// If \"default country\" argument is being passed then move it to `options`.\r\n\t// `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\r\n\tif (!arg_2 || typeof arg_2 === 'string')\r\n\t{\r\n\t\tif (arg_4) {\r\n\t\t\toptions = arg_3\r\n\t\t\tmetadata = arg_4\r\n\t\t} else {\r\n\t\t\toptions = undefined\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\r\n\t\tif (arg_2) {\r\n\t\t\toptions = { defaultCountry: arg_2, ...options }\r\n\t\t}\r\n\t}\r\n\t// `defaultCountry` is not passed.\r\n\t// Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\r\n\telse if (isObject(arg_2))\r\n\t{\r\n\t\tif (arg_3) {\r\n\t\t\toptions = arg_2\r\n\t\t\tmetadata = arg_3\r\n\t\t} else {\r\n\t\t\tmetadata = arg_2\r\n\t\t}\r\n\t}\r\n\telse throw new Error(`Invalid second argument: ${arg_2}`)\r\n\r\n\treturn {\r\n\t\ttext,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}","// https://stackoverflow.com/a/46971044/970769\r\n// \"Breaking changes in Typescript 2.1\"\r\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\r\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\r\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\nexport default class ParseError extends Error {\r\n constructor(code) {\r\n super(code)\r\n // Set the prototype explicitly.\r\n // Any subclass of FooError will have to manually set the prototype as well.\r\n Object.setPrototypeOf(this, ParseError.prototype)\r\n this.name = this.constructor.name\r\n }\r\n}","import { VALID_DIGITS } from '../../constants.js'\r\n\r\n// The RFC 3966 format for extensions.\r\nconst RFC3966_EXTN_PREFIX = ';ext='\r\n\r\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\r\nconst getExtensionDigitsPattern = (maxLength) => `([${VALID_DIGITS}]{1,${maxLength}})`\r\n\r\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\r\nexport default function createExtensionPattern(purpose) {\r\n\t// We cap the maximum length of an extension based on the ambiguity of the way\r\n\t// the extension is prefixed. As per ITU, the officially allowed length for\r\n\t// extensions is actually 40, but we don't support this since we haven't seen real\r\n\t// examples and this introduces many false interpretations as the extension labels\r\n\t// are not standardized.\r\n\t/** @type {string} */\r\n\tvar extLimitAfterExplicitLabel = '20';\r\n\t/** @type {string} */\r\n\tvar extLimitAfterLikelyLabel = '15';\r\n\t/** @type {string} */\r\n\tvar extLimitAfterAmbiguousChar = '9';\r\n\t/** @type {string} */\r\n\tvar extLimitWhenNotSure = '6';\r\n\r\n\t/** @type {string} */\r\n\tvar possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\u00A0\\\\t,]*\";\r\n\t// Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\r\n\t/** @type {string} */\r\n\tvar possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\u00A0\\\\t,-]*\";\r\n\t/** @type {string} */\r\n\tvar optionalExtnSuffix = \"#?\";\r\n\r\n\t// Here the extension is called out in more explicit way, i.e mentioning it obvious\r\n\t// patterns like \"ext.\".\r\n\t/** @type {string} */\r\n\tvar explicitExtLabels =\r\n\t \"(?:e?xt(?:ensi(?:o\\u0301?|\\u00F3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\";\r\n\t// One-character symbols that can be used to indicate an extension, and less\r\n\t// commonly used or more ambiguous extension labels.\r\n\t/** @type {string} */\r\n\tvar ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\";\r\n\t// When extension is not separated clearly.\r\n\t/** @type {string} */\r\n\tvar ambiguousSeparator = \"[- ]+\";\r\n\t// This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\r\n\t// comma as extension label may have it.\r\n\t/** @type {string} */\r\n\tvar possibleSeparatorsNumberExtLabelNoComma = \"[ \\u00A0\\\\t]*\";\r\n\t// \",,\" is commonly used for auto dialling the extension when connected. First\r\n\t// comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\r\n\t// not repeat it here. Semi-colon works in Iphone and Android also to pop up a\r\n\t// button with the extension number following.\r\n\t/** @type {string} */\r\n\tvar autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\r\n\r\n\t/** @type {string} */\r\n\tvar rfcExtn = RFC3966_EXTN_PREFIX\r\n\t + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\r\n\t/** @type {string} */\r\n\tvar explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels\r\n\t + possibleCharsAfterExtLabel\r\n\t + getExtensionDigitsPattern(extLimitAfterExplicitLabel)\r\n\t + optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels\r\n\t + possibleCharsAfterExtLabel\r\n\t+ getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\r\n\t+ optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar americanStyleExtnWithSuffix = ambiguousSeparator\r\n\t+ getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\r\n\r\n\t/** @type {string} */\r\n\tvar autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma\r\n\t + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel\r\n\t + getExtensionDigitsPattern(extLimitAfterLikelyLabel)\r\n\t+ optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma\r\n\t + \"(?:,)+\" + possibleCharsAfterExtLabel\r\n\t + getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\r\n\t + optionalExtnSuffix;\r\n\r\n\t// The first regular expression covers RFC 3966 format, where the extension is added\r\n\t// using \";ext=\". The second more generic where extension is mentioned with explicit\r\n\t// labels like \"ext:\". In both the above cases we allow more numbers in extension than\r\n\t// any other extension labels. The third one captures when single character extension\r\n\t// labels or less commonly used labels are used. In such cases we capture fewer\r\n\t// extension digits in order to reduce the chance of falsely interpreting two\r\n\t// numbers beside each other as a number + extension. The fourth one covers the\r\n\t// special case of American numbers where the extension is written with a hash\r\n\t// at the end, such as \"- 503#\". The fifth one is exclusively for extension\r\n\t// autodialling formats which are used when dialling and in this case we accept longer\r\n\t// extensions. The last one is more liberal on the number of commas that acts as\r\n\t// extension labels, so we have a strict cap on the number of digits in such extensions.\r\n\treturn rfcExtn + \"|\"\r\n\t + explicitExtn + \"|\"\r\n\t + ambiguousExtn + \"|\"\r\n\t + americanStyleExtnWithSuffix + \"|\"\r\n\t + autoDiallingExtn + \"|\"\r\n\t + onlyCommasExtn;\r\n}","import {\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from '../constants.js'\r\n\r\nimport createExtensionPattern from './extension/createExtensionPattern.js'\r\n\r\n// Regular expression of viable phone numbers. This is location independent.\r\n// Checks we have at least three leading digits, and only valid punctuation,\r\n// alpha characters and digits in the phone number. Does not include extension\r\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\r\n// used as a placeholder for carrier codes, for example in Brazilian phone\r\n// numbers. We also allow multiple '+' characters at the start.\r\n//\r\n// Corresponds to the following:\r\n// [digits]{minLengthNsn}|\r\n// plus_sign*\r\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\r\n//\r\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\r\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\r\n// The second expression restricts the number of digits to three or more, but\r\n// then allows them to be in international form, and to have alpha-characters\r\n// and punctuation. We split up the two reg-exes here and combine them when\r\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\r\n// with ^ and append $ to each branch.\r\n//\r\n// \"Note VALID_PUNCTUATION starts with a -,\r\n// so must be the first in the range\" (c) Google devs.\r\n// (wtf did they mean by saying that; probably nothing)\r\n//\r\nconst MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'\r\n//\r\n// And this is the second reg-exp:\r\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\r\n//\r\nexport const VALID_PHONE_NUMBER =\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){3,}' +\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']*'\r\n\r\n// This regular expression isn't present in Google's `libphonenumber`\r\n// and is only used to determine whether the phone number being input\r\n// is too short for it to even consider it a \"valid\" number.\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nconst VALID_PHONE_NUMBER_START_REG_EXP = new RegExp(\r\n\t'^' +\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){1,2}' +\r\n\t'$'\r\n, 'i')\r\n\r\nexport const VALID_PHONE_NUMBER_WITH_EXTENSION =\r\n\tVALID_PHONE_NUMBER +\r\n\t// Phone number extensions\r\n\t'(?:' + createExtensionPattern() + ')?'\r\n\r\n// The combined regular expression for valid phone numbers:\r\n//\r\nconst VALID_PHONE_NUMBER_PATTERN = new RegExp(\r\n\t// Either a short two-digit-only phone number\r\n\t'^' +\r\n\t\tMIN_LENGTH_PHONE_NUMBER_PATTERN +\r\n\t'$' +\r\n\t'|' +\r\n\t// Or a longer fully parsed phone number (min 3 characters)\r\n\t'^' +\r\n\t\tVALID_PHONE_NUMBER_WITH_EXTENSION +\r\n\t'$'\r\n, 'i')\r\n\r\n// Checks to see if the string of characters could possibly be a phone number at\r\n// all. At the moment, checks to see that the string begins with at least 2\r\n// digits, ignoring any punctuation commonly found in phone numbers. This method\r\n// does not require the number to be normalized in advance - but does assume\r\n// that leading non-number symbols have been removed, such as by the method\r\n// `extract_possible_number`.\r\n//\r\nexport default function isViablePhoneNumber(number) {\r\n\treturn number.length >= MIN_LENGTH_FOR_NSN &&\r\n\t\tVALID_PHONE_NUMBER_PATTERN.test(number)\r\n}\r\n\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nexport function isViablePhoneNumberStart(number) {\r\n\treturn VALID_PHONE_NUMBER_START_REG_EXP.test(number)\r\n}","import createExtensionPattern from './createExtensionPattern.js'\r\n\r\n// Regexp of all known extension prefixes used by different regions followed by\r\n// 1 or more valid digits, for use when parsing.\r\nconst EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i')\r\n\r\n// Strips any extension (as in, the part of the number dialled after the call is\r\n// connected, usually indicated with extn, ext, x or similar) from the end of\r\n// the number, and returns it.\r\nexport default function extractExtension(number) {\r\n\tconst start = number.search(EXTN_PATTERN)\r\n\tif (start < 0) {\r\n\t\treturn {}\r\n\t}\r\n\t// If we find a potential extension, and the number preceding this is a viable\r\n\t// number, we assume it is an extension.\r\n\tconst numberWithoutExtension = number.slice(0, start)\r\n\tconst matches = number.match(EXTN_PATTERN)\r\n\tlet i = 1\r\n\twhile (i < matches.length) {\r\n\t\tif (matches[i]) {\r\n\t\t\treturn {\r\n\t\t\t\tnumber: numberWithoutExtension,\r\n\t\t\t\text: matches[i]\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n}","import { parseDigit } from './helpers/parseDigits.js'\r\n\r\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\r\nexport default function parseIncompletePhoneNumber(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tresult += parsePhoneNumberCharacter(character, result) || ''\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {function?} emitEvent - An optional \"emit event\" function.\r\n * @return {string?} The parsed character.\r\n */\r\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters, emitEvent) {\r\n\t// Only allow a leading `+`.\r\n\tif (character === '+') {\r\n\t\t// If this `+` is not the first parsed character\r\n\t\t// then discard it.\r\n\t\tif (prevParsedCharacters) {\r\n\t\t\t// `emitEvent` argument was added to this `export`ed function on Dec 26th, 2023.\r\n\t\t\t// Any 3rd-party code that used to `import` and call this function before that\r\n\t\t\t// won't be passing any `emitEvent` argument.\r\n\t\t\t//\r\n\t\t\t// The addition of the `emitEvent` argument was to fix the slightly-weird behavior\r\n\t\t\t// of parsing an input string when the user inputs something like `\"2+7\"\r\n\t\t\t// https://github.com/catamphetamine/react-phone-number-input/issues/437\r\n\t\t\t//\r\n\t\t\t// If the parser encounters an unexpected `+` in a string being parsed\r\n\t\t\t// then it simply discards that out-of-place `+` and any following characters.\r\n\t\t\t//\r\n\t\t\tif (typeof emitEvent === 'function') {\r\n\t\t\t\temitEvent('end')\r\n\t\t\t}\r\n\t\t\treturn\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\t// Allow digits.\r\n\treturn parseDigit(character)\r\n}","// When phone numbers are written in `RFC3966` format — `\"tel:+12133734253\"` —\r\n// they can have their \"calling code\" part written separately in a `phone-context` parameter.\r\n// Example: `\"tel:12133734253;phone-context=+1\"`.\r\n// This function parses the full phone number from the local number and the `phone-context`\r\n// when the `phone-context` contains a `+` sign.\r\n\r\nimport {\r\n VALID_DIGITS,\r\n // PLUS_CHARS\r\n} from '../constants.js'\r\n\r\nexport const PLUS_SIGN = '+'\r\n\r\nconst RFC3966_VISUAL_SEPARATOR_ = '[\\\\-\\\\.\\\\(\\\\)]?'\r\n\r\nconst RFC3966_PHONE_DIGIT_ = '(' + '[' + VALID_DIGITS + ']' + '|' + RFC3966_VISUAL_SEPARATOR_ + ')'\r\n\r\nconst RFC3966_GLOBAL_NUMBER_DIGITS_ =\r\n\t'^' +\r\n\t'\\\\' +\r\n\tPLUS_SIGN +\r\n\tRFC3966_PHONE_DIGIT_ +\r\n\t'*' +\r\n\t'[' + VALID_DIGITS + ']' +\r\n\tRFC3966_PHONE_DIGIT_ +\r\n\t'*' +\r\n\t'$'\r\n\r\n/**\r\n * Regular expression of valid global-number-digits for the phone-context\r\n * parameter, following the syntax defined in RFC3966.\r\n */\r\nconst RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_ = new RegExp(RFC3966_GLOBAL_NUMBER_DIGITS_, 'g')\r\n\r\n// In this port of Google's library, we don't accept alpha characters in phone numbers.\r\n// const ALPHANUM_ = VALID_ALPHA_ + VALID_DIGITS\r\nconst ALPHANUM_ = VALID_DIGITS\r\n\r\nconst RFC3966_DOMAINLABEL_ = '[' + ALPHANUM_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*'\r\n\r\nconst VALID_ALPHA_ = 'a-zA-Z'\r\nconst RFC3966_TOPLABEL_ = '[' + VALID_ALPHA_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*'\r\n\r\nconst RFC3966_DOMAINNAME_ = '^(' + RFC3966_DOMAINLABEL_ + '\\\\.)*' + RFC3966_TOPLABEL_ + '\\\\.?$'\r\n\r\n/**\r\n * Regular expression of valid domainname for the phone-context parameter,\r\n * following the syntax defined in RFC3966.\r\n */\r\nconst RFC3966_DOMAINNAME_PATTERN_ = new RegExp(RFC3966_DOMAINNAME_, 'g')\r\n\r\nexport const RFC3966_PREFIX_ = 'tel:'\r\nexport const RFC3966_PHONE_CONTEXT_ = ';phone-context='\r\nexport const RFC3966_ISDN_SUBADDRESS_ = ';isub='\r\n\r\n/**\r\n * Extracts the value of the phone-context parameter of `numberToExtractFrom`,\r\n * following the syntax defined in RFC3966.\r\n *\r\n * @param {string} numberToExtractFrom\r\n * @return {string|null} the extracted string (possibly empty), or `null` if no phone-context parameter is found.\r\n */\r\nexport default function extractPhoneContext(numberToExtractFrom) {\r\n\tconst indexOfPhoneContext = numberToExtractFrom.indexOf(RFC3966_PHONE_CONTEXT_)\r\n\t// If no phone-context parameter is present\r\n\tif (indexOfPhoneContext < 0) {\r\n\t\treturn null\r\n\t}\r\n\r\n\tconst phoneContextStart = indexOfPhoneContext + RFC3966_PHONE_CONTEXT_.length\r\n\t// If phone-context parameter is empty\r\n\tif (phoneContextStart >= numberToExtractFrom.length) {\r\n\t\treturn ''\r\n\t}\r\n\r\n\tconst phoneContextEnd = numberToExtractFrom.indexOf(';', phoneContextStart)\r\n\t// If phone-context is not the last parameter\r\n\tif (phoneContextEnd >= 0) {\r\n\t\treturn numberToExtractFrom.substring(phoneContextStart, phoneContextEnd)\r\n\t} else {\r\n\t\treturn numberToExtractFrom.substring(phoneContextStart)\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns whether the value of phoneContext follows the syntax defined in RFC3966.\r\n *\r\n * @param {string|null} phoneContext\r\n * @return {boolean}\r\n */\r\nexport function isPhoneContextValid(phoneContext) {\r\n\tif (phoneContext === null) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (phoneContext.length === 0) {\r\n\t\treturn false\r\n\t}\r\n\r\n\t// Does phone-context value match pattern of global-number-digits or domainname.\r\n\treturn RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_.test(phoneContext) ||\r\n\t\tRFC3966_DOMAINNAME_PATTERN_.test(phoneContext)\r\n}","import extractPhoneContext, {\r\n\tisPhoneContextValid,\r\n\tPLUS_SIGN,\r\n\tRFC3966_PREFIX_,\r\n\tRFC3966_PHONE_CONTEXT_,\r\n\tRFC3966_ISDN_SUBADDRESS_\r\n} from './extractPhoneContext.js'\r\n\r\nimport ParseError from '../ParseError.js'\r\n\r\n/**\r\n * @param {string} numberToParse\r\n * @param {string} nationalNumber\r\n * @return {}\r\n */\r\nexport default function extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(numberToParse, {\r\n\textractFormattedPhoneNumber\r\n}) {\r\n\tconst phoneContext = extractPhoneContext(numberToParse)\r\n\tif (!isPhoneContextValid(phoneContext)) {\r\n\t\tthrow new ParseError('NOT_A_NUMBER')\r\n\t}\r\n\r\n\tlet phoneNumberString\r\n\r\n\tif (phoneContext === null) {\r\n\t\t// Extract a possible number from the string passed in.\r\n\t\t// (this strips leading characters that could not be the start of a phone number)\r\n\t\tphoneNumberString = extractFormattedPhoneNumber(numberToParse) || ''\r\n\t} else {\r\n\t\tphoneNumberString = ''\r\n\r\n\t\t// If the phone context contains a phone number prefix, we need to capture\r\n\t\t// it, whereas domains will be ignored.\r\n\t\tif (phoneContext.charAt(0) === PLUS_SIGN) {\r\n\t\t\tphoneNumberString += phoneContext\r\n\t\t}\r\n\r\n\t\t// Now append everything between the \"tel:\" prefix and the phone-context.\r\n\t\t// This should include the national number, an optional extension or\r\n\t\t// isdn-subaddress component. Note we also handle the case when \"tel:\" is\r\n\t\t// missing, as we have seen in some of the phone number inputs.\r\n\t\t// In that case, we append everything from the beginning.\r\n\t\tconst indexOfRfc3966Prefix = numberToParse.indexOf(RFC3966_PREFIX_)\r\n\t\tlet indexOfNationalNumber\r\n\t\t// RFC 3966 \"tel:\" prefix is preset at this stage because\r\n\t\t// `isPhoneContextValid()` requires it to be present.\r\n\t\t/* istanbul ignore else */\r\n\t\tif (indexOfRfc3966Prefix >= 0) {\r\n\t\t\tindexOfNationalNumber = indexOfRfc3966Prefix + RFC3966_PREFIX_.length\r\n\t\t} else {\r\n\t\t\tindexOfNationalNumber = 0\r\n\t\t}\r\n\t\tconst indexOfPhoneContext = numberToParse.indexOf(RFC3966_PHONE_CONTEXT_)\r\n\t\tphoneNumberString += numberToParse.substring(indexOfNationalNumber, indexOfPhoneContext)\r\n\t}\r\n\r\n\t// Delete the isdn-subaddress and everything after it if it is present.\r\n\t// Note extension won't appear at the same time with isdn-subaddress\r\n\t// according to paragraph 5.3 of the RFC3966 spec.\r\n\tconst indexOfIsdn = phoneNumberString.indexOf(RFC3966_ISDN_SUBADDRESS_)\r\n\tif (indexOfIsdn > 0) {\r\n\t\tphoneNumberString = phoneNumberString.substring(0, indexOfIsdn)\r\n\t}\r\n\t// If both phone context and isdn-subaddress are absent but other\r\n\t// parameters are present, the parameters are left in nationalNumber.\r\n\t// This is because we are concerned about deleting content from a potential\r\n\t// number string when there is no strong evidence that the number is\r\n\t// actually written in RFC3966.\r\n\r\n\tif (phoneNumberString !== '') {\r\n\t\treturn phoneNumberString\r\n\t}\r\n}","// This is a port of Google Android `libphonenumber`'s\r\n// `phonenumberutil.js` of December 31th, 2018.\r\n//\r\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n\r\nimport {\r\n\tVALID_DIGITS,\r\n\tPLUS_CHARS,\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tMAX_LENGTH_FOR_NSN\r\n} from './constants.js'\r\n\r\nimport ParseError from './ParseError.js'\r\nimport Metadata from './metadata.js'\r\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js'\r\nimport extractExtension from './helpers/extension/extractExtension.js'\r\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js'\r\nimport getCountryCallingCode from './getCountryCallingCode.js'\r\nimport { isPossibleNumber } from './isPossible.js'\r\n// import { parseRFC3966 } from './helpers/RFC3966.js'\r\nimport PhoneNumber from './PhoneNumber.js'\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport extractNationalNumber from './helpers/extractNationalNumber.js'\r\nimport stripIddPrefix from './helpers/stripIddPrefix.js'\r\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'\r\nimport extractFormattedPhoneNumberFromPossibleRfc3966NumberUri from './helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js'\r\n\r\n// We don't allow input strings for parsing to be longer than 250 chars.\r\n// This prevents malicious input from consuming CPU.\r\nconst MAX_INPUT_STRING_LENGTH = 250\r\n\r\n// This consists of the plus symbol, digits, and arabic-indic digits.\r\nconst PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']')\r\n\r\n// Regular expression of trailing characters that we want to remove.\r\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\r\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\r\nconst AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$')\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\n// Examples:\r\n//\r\n// ```js\r\n// parse('8 (800) 555-35-35', 'RU')\r\n// parse('8 (800) 555-35-35', 'RU', metadata)\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\r\n// parse('+7 800 555 35 35')\r\n// parse('+7 800 555 35 35', metadata)\r\n// ```\r\n//\r\n\r\n/**\r\n * Parses a phone number.\r\n *\r\n * parse('123456789', { defaultCountry: 'RU', v2: true }, metadata)\r\n * parse('123456789', { defaultCountry: 'RU' }, metadata)\r\n * parse('123456789', undefined, metadata)\r\n *\r\n * @param {string} input\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {object|PhoneNumber?} If `options.v2: true` flag is passed, it returns a `PhoneNumber?` instance. Otherwise, returns an object of shape `{ phone: '...', country: '...' }` (or just `{}` if no phone number was parsed).\r\n */\r\nexport default function parse(text, options, metadata) {\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// Validate `defaultCountry`.\r\n\tif (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\r\n\t\t}\r\n\t\tthrow new Error(`Unknown country: ${options.defaultCountry}`)\r\n\t}\r\n\r\n\t// Parse the phone number.\r\n\tconst { number: formattedPhoneNumber, ext, error } = parseInput(text, options.v2, options.extract)\r\n\r\n\t// If the phone number is not viable then return nothing.\r\n\tif (!formattedPhoneNumber) {\r\n\t\tif (options.v2) {\r\n\t\t\tif (error === 'TOO_SHORT') {\r\n\t\t\t\tthrow new ParseError('TOO_SHORT')\r\n\t\t\t}\r\n\t\t\tthrow new ParseError('NOT_A_NUMBER')\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst {\r\n\t\tcountry,\r\n\t\tnationalNumber,\r\n\t\tcountryCallingCode,\r\n\t\tcountryCallingCodeSource,\r\n\t\tcarrierCode\r\n\t} = parsePhoneNumber(\r\n\t\tformattedPhoneNumber,\r\n\t\toptions.defaultCountry,\r\n\t\toptions.defaultCallingCode,\r\n\t\tmetadata\r\n\t)\r\n\r\n\tif (!metadata.hasSelectedNumberingPlan()) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// Validate national (significant) number length.\r\n\tif (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\r\n\t\t// Won't throw here because the regexp already demands length > 1.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('TOO_SHORT')\r\n\t\t}\r\n\t\t// Google's demo just throws an error in this case.\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// Validate national (significant) number length.\r\n\t//\r\n\t// A sidenote:\r\n\t//\r\n\t// They say that sometimes national (significant) numbers\r\n\t// can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\r\n\t// https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\r\n\t// Such numbers will just be discarded.\r\n\t//\r\n\tif (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('TOO_LONG')\r\n\t\t}\r\n\t\t// Google's demo just throws an error in this case.\r\n\t\treturn {}\r\n\t}\r\n\r\n\tif (options.v2) {\r\n\t\tconst phoneNumber = new PhoneNumber(\r\n\t\t\tcountryCallingCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tmetadata.metadata\r\n\t\t)\r\n\t\tif (country) {\r\n\t\t\tphoneNumber.country = country\r\n\t\t}\r\n\t\tif (carrierCode) {\r\n\t\t\tphoneNumber.carrierCode = carrierCode\r\n\t\t}\r\n\t\tif (ext) {\r\n\t\t\tphoneNumber.ext = ext\r\n\t\t}\r\n\t\tphoneNumber.__countryCallingCodeSource = countryCallingCodeSource\r\n\t\treturn phoneNumber\r\n\t}\r\n\r\n\t// Check if national phone number pattern matches the number.\r\n\t// National number pattern is different for each country,\r\n\t// even for those ones which are part of the \"NANPA\" group.\r\n\tconst valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ?\r\n\t\tmatchesEntirely(nationalNumber, metadata.nationalNumberPattern()) :\r\n\t\tfalse\r\n\r\n\tif (!options.extended) {\r\n\t\treturn valid ? result(country, nationalNumber, ext) : {}\r\n\t}\r\n\r\n\t// isInternational: countryCallingCode !== undefined\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode,\r\n\t\tcarrierCode,\r\n\t\tvalid,\r\n\t\tpossible: valid ? true : (\r\n\t\t\toptions.extended === true &&\r\n\t\t\tmetadata.possibleLengths() &&\r\n\t\t\tisPossibleNumber(nationalNumber, metadata) ? true : false\r\n\t\t),\r\n\t\tphone: nationalNumber,\r\n\t\text\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\r\nfunction extractFormattedPhoneNumber(text, extract, throwOnError) {\r\n\tif (!text) {\r\n\t\treturn\r\n\t}\r\n\tif (text.length > MAX_INPUT_STRING_LENGTH) {\r\n\t\tif (throwOnError) {\r\n\t\t\tthrow new ParseError('TOO_LONG')\r\n\t\t}\r\n\t\treturn\r\n\t}\r\n\tif (extract === false) {\r\n\t\treturn text\r\n\t}\r\n\t// Attempt to extract a possible number from the string passed in\r\n\tconst startsAt = text.search(PHONE_NUMBER_START_PATTERN)\r\n\tif (startsAt < 0) {\r\n\t\treturn\r\n\t}\r\n\treturn text\r\n\t\t// Trim everything to the left of the phone number\r\n\t\t.slice(startsAt)\r\n\t\t// Remove trailing non-numerical characters\r\n\t\t.replace(AFTER_PHONE_NUMBER_END_PATTERN, '')\r\n}\r\n\r\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nfunction parseInput(text, v2, extract) {\r\n\t// // Parse RFC 3966 phone number URI.\r\n\t// if (text && text.indexOf('tel:') === 0) {\r\n\t// \treturn parseRFC3966(text)\r\n\t// }\r\n\t// let number = extractFormattedPhoneNumber(text, extract, v2)\r\n\tlet number = extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(text, {\r\n\t\textractFormattedPhoneNumber: (text) => extractFormattedPhoneNumber(text, extract, v2)\r\n\t})\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\tif (!isViablePhoneNumber(number)) {\r\n\t\tif (isViablePhoneNumberStart(number)) {\r\n\t\t\treturn { error: 'TOO_SHORT' }\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\t// Attempt to parse extension first, since it doesn't require region-specific\r\n\t// data and we want to have the non-normalised number here.\r\n\tconst withExtensionStripped = extractExtension(number)\r\n\tif (withExtensionStripped.ext) {\r\n\t\treturn withExtensionStripped\r\n\t}\r\n\treturn { number }\r\n}\r\n\r\n/**\r\n * Creates `parse()` result object.\r\n */\r\nfunction result(country, nationalNumber, ext) {\r\n\tconst result = {\r\n\t\tcountry,\r\n\t\tphone: nationalNumber\r\n\t}\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\r\nfunction parsePhoneNumber(\r\n\tformattedPhoneNumber,\r\n\tdefaultCountry,\r\n\tdefaultCallingCode,\r\n\tmetadata\r\n) {\r\n\t// Extract calling code from phone number.\r\n\tlet { countryCallingCodeSource, countryCallingCode, number } = extractCountryCallingCode(\r\n\t\tparseIncompletePhoneNumber(formattedPhoneNumber),\r\n\t\tdefaultCountry,\r\n\t\tdefaultCallingCode,\r\n\t\tmetadata.metadata\r\n\t)\r\n\r\n\t// Choose a country by `countryCallingCode`.\r\n\tlet country\r\n\tif (countryCallingCode) {\r\n\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t}\r\n\t// If `formattedPhoneNumber` is passed in \"national\" format\r\n\t// then `number` is defined and `countryCallingCode` is `undefined`.\r\n\telse if (number && (defaultCountry || defaultCallingCode)) {\r\n\t\tmetadata.selectNumberingPlan(defaultCountry, defaultCallingCode)\r\n\t\tif (defaultCountry) {\r\n\t\t\tcountry = defaultCountry\r\n\t\t} else {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\r\n\t\t\t\t\tcountry = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tcountryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata)\r\n\t}\r\n\telse return {}\r\n\r\n\tif (!number) {\r\n\t\treturn {\r\n\t\t\tcountryCallingCodeSource,\r\n\t\t\tcountryCallingCode\r\n\t\t}\r\n\t}\r\n\r\n\tconst {\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t} = extractNationalNumber(\r\n\t\tparseIncompletePhoneNumber(number),\r\n\t\tmetadata\r\n\t)\r\n\r\n\t// Sometimes there are several countries\r\n\t// corresponding to the same country phone code\r\n\t// (e.g. NANPA countries all having `1` country phone code).\r\n\t// Therefore, to reliably determine the exact country,\r\n\t// national (significant) number should have been parsed first.\r\n\t//\r\n\t// When `metadata.json` is generated, all \"ambiguous\" country phone codes\r\n\t// get their countries populated with the full set of\r\n\t// \"phone number type\" regular expressions.\r\n\t//\r\n\tconst exactCountry = getCountryByCallingCode(countryCallingCode, {\r\n\t\tnationalNumber,\r\n\t\tdefaultCountry,\r\n\t\tmetadata\r\n\t})\r\n\tif (exactCountry) {\r\n\t\tcountry = exactCountry\r\n\t\t/* istanbul ignore if */\r\n\t\tif (exactCountry === '001') {\r\n\t\t\t// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\r\n\t\t\t// If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\r\n\t\t\t// then remove the \"istanbul ignore if\".\r\n\t\t} else {\r\n\t\t\tmetadata.country(country)\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode,\r\n\t\tcountryCallingCodeSource,\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t}\r\n}","import parsePhoneNumberWithError from './parsePhoneNumberWithError_.js'\r\nimport ParseError from './ParseError.js'\r\nimport { isSupportedCountry } from './metadata.js'\r\n\r\nexport default function parsePhoneNumber(text, options, metadata) {\r\n\t// Validate `defaultCountry`.\r\n\tif (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\r\n\t\toptions = {\r\n\t\t\t...options,\r\n\t\t\tdefaultCountry: undefined\r\n\t\t}\r\n\t}\r\n\t// Parse phone number.\r\n\ttry {\r\n\t\treturn parsePhoneNumberWithError(text, options, metadata)\r\n\t} catch (error) {\r\n\t\t/* istanbul ignore else */\r\n\t\tif (error instanceof ParseError) {\r\n\t\t\t//\r\n\t\t} else {\r\n\t\t\tthrow error\r\n\t\t}\r\n\t}\r\n}\r\n","import parse from './parse.js'\r\n\r\nexport default function parsePhoneNumberWithError(text, options, metadata) {\r\n\treturn parse(text, { ...options, v2: true }, metadata)\r\n}","// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"version\":4,\"country_calling_codes\":{\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"880\":[\"BD\"],\"886\":[\"TW\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]},\"countries\":{\"AC\":[\"247\",\"00\",\"(?:[01589]\\\\d|[46])\\\\d{4}\",[5,6]],\"AD\":[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]]],\"AE\":[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AF\":[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\"],\"AG\":[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([457]\\\\d{6})$|1\",\"268$1\",0,\"268\"],\"AI\":[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2457]\\\\d{6})$|1\",\"264$1\",0,\"264\"],\"AL\":[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\"],\"AM\":[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],\"0\"],\"AO\":[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]]],\"AR\":[\"54\",\"00\",\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\"],\"AS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"([267]\\\\d{6})$|1\",\"684$1\",0,\"684\"],\"AT\":[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AU\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",[5,6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,\"(183[12])|0\",0,0,0,[[\"(?:(?:(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|7(?:[013-57-9]\\\\d|2[0-8]))\\\\d|3(?:(?:[0-3589]\\\\d|6[1-9]|7[0-35-9])\\\\d|4(?:[0-578]\\\\d|90)))\\\\d\\\\d|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4])|3\\\\d\\\\d)|(?:6[0-8]|[78]\\\\d)\\\\d{3}|9(?:[02-9]\\\\d{3}|1(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79])))))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-389]|94[0-4])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,[\"163\\\\d{2,6}\",[5,6,7,8,9]],[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"AW\":[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]]],\"AX\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10,11,12],0,\"0\",0,0,0,0,\"18\",0,\"00\"],\"AZ\":[\"994\",\"00\",\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],\"0\"],\"BA\":[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\"],\"BB\":[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"246$1\",0,\"246\"],\"BD\":[\"880\",\"00\",\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:[15]|28|4[14])|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|2[23]\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\"],\"BE\":[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\"],\"BF\":[\"226\",\"00\",\"[025-7]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[025-7]\"]]]],\"BG\":[\"359\",\"00\",\"00800\\\\d{7}|[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9,12],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"BH\":[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[02-4679]\"]]]],\"BI\":[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]]],\"BJ\":[\"229\",\"00\",\"[24-689]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-689]\"]]]],\"BL\":[\"590\",\"00\",\"590\\\\d{6}|(?:69|80|9\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:2[7-9]|3[3-7]|5[12]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-5])\\\\d{4}\"]]],\"BM\":[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"441$1\",0,\"441\"],\"BN\":[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]]],\"BO\":[\"591\",\"00(?:1\\\\d)?\",\"8001\\\\d{5}|(?:[2-467]\\\\d|50)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[235]|4[46]\"]],[\"(\\\\d{8})\",\"$1\",[\"[67]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\"],\"BQ\":[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\"],\"BR\":[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-46-9]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\"]],\"0\",0,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\"],\"BS\":[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([3-8]\\\\d{6})$|1\",\"242$1\",0,\"242\"],\"BT\":[\"975\",\"00\",\"[17]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]]],\"BW\":[\"267\",\"00\",\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"BY\":[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,0,\"8~10\"],\"BZ\":[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]]],\"CA\":[\"1\",\"011\",\"(?:[2-8]\\\\d|90)\\\\d{8}|3\\\\d{6}\",[7,10],0,\"1\",0,0,0,0,0,[[\"(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|54|6[578]|82)|4(?:03|1[68]|[26]8|3[178]|50|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|[18]3|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|7[39])|90[25])[2-9]\\\\d{6}\",[10]],[\"\",[10]],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",[10]],[\"900[2-9]\\\\d{6}\",[10]],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:00|2[125-9]|33|44|66|77|88)|622)[2-9]\\\\d{6}\",[10]],0,[\"310\\\\d{4}\",[7]],0,[\"600[2-9]\\\\d{6}\",[10]]]],\"CC\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-389]|94[0-4])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CD\":[\"243\",\"00\",\"(?:(?:[189]|5\\\\d)\\\\d|2)\\\\d{7}|[1-68]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"5\"],\"0$1\"]],\"0\"],\"CF\":[\"236\",\"00\",\"(?:[27]\\\\d{3}|8776)\\\\d{4}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[278]\"]]]],\"CG\":[\"242\",\"00\",\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]]],\"CH\":[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\"],\"CI\":[\"225\",\"00\",\"[02]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]]],\"CK\":[\"682\",\"00\",\"[2-578]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]]],\"CL\":[\"56\",\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]]],\"CM\":[\"237\",\"00\",\"[26]\\\\d{8}|88\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]]],\"CN\":[\"86\",\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"(?:(?:1[03-689]|2\\\\d)\\\\d\\\\d|6)\\\\d{8}|1\\\\d{10}|[126]\\\\d{6}(?:\\\\d(?:\\\\d{2})?)?|86\\\\d{5,6}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{5,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]|3(?:[157]|35|49|9[1-68])|4(?:1[124-9]|2[179]|6[47-9]|7|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:07|1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3|4[13]|5[1-5]|7[0-79]|9[0-35-9])|(?:4[35]|59|85)[1-9]\",\"(?:10|2[0-57-9])(?:1[02]|9[56])|8078|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))1\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|80781|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))12\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|807812|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"(1(?:[12]\\\\d|79)\\\\d\\\\d)|0\",0,0,0,0,\"00\"],\"CO\":[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:46|60\\\\d\\\\d)\\\\d{6}|(?:1\\\\d|[39])\\\\d{9}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"46\"]],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6|90\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3[0-357]|91\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0([3579]|4(?:[14]4|56))?\"],\"CR\":[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],\"CU\":[\"53\",\"119\",\"(?:[2-7]|8\\\\d\\\\d)\\\\d{7}|[2-47]\\\\d{6}|[34]\\\\d{5}\",[6,7,8,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[56]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],\"0\"],\"CV\":[\"238\",\"0\",\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"CW\":[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\"],\"CX\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-389]|94[0-4])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CY\":[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]]],\"CZ\":[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"96\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]]],\"DE\":[\"49\",\"00\",\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[015]\\\\d|2[13]|31|[46][1-8])\\\\d{1,9}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[03568]\",\"15(?:[0568]|31)\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\"],\"DJ\":[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]]],\"DK\":[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]]],\"DM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"767$1\",0,\"767\"],\"DO\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8001|8[024]9\"],\"DZ\":[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\"],\"EC\":[\"593\",\"00\",\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"EE\":[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"EG\":[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{8})\",\"$1 $2\",[\"1\"],\"0$1\"]],\"0\"],\"EH\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,\"528[89]\"],\"ER\":[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\"],\"ES\":[\"34\",\"00\",\"[5-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]]],\"ET\":[\"251\",\"00\",\"(?:11|[2-579]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-579]\"],\"0$1\"]],\"0\"],\"FI\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{5})\",\"$1\",[\"20[2-59]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"(?:[1-3]0|[68])0|70[07-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[14]|2[09]|50|7[135]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"(?:1[49]|[2568])[1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",0,\"00\"],\"FJ\":[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,0,\"00\"],\"FK\":[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5]],\"FM\":[\"691\",\"00\",\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]]],\"FO\":[\"298\",\"00\",\"[2-9]\\\\d{5}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\"],\"FR\":[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\"],\"GA\":[\"241\",\"00\",\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"]],0,0,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\",\"$1\"],\"GB\":[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0-35])|4(?:(?:[0-5]\\\\d|70)\\\\d|69[7-9])|(?:(?:5[0-26-9]|[78][0-49])\\\\d|6(?:[0-4]\\\\d|50))\\\\d)|(?:2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d|1(?:[0-7]\\\\d|8[0-3]))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d)\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",[9,10]],[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]],0,\" x\"],\"GD\":[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"473$1\",0,\"473\"],\"GE\":[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],\"0\"],\"GF\":[\"594\",\"00\",\"[56]94\\\\d{6}|(?:80|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[56]|9[47]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[89]\"],\"0$1\"]],\"0\"],\"GG\":[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"([25-9]\\\\d{5})$|0\",\"1481$1\",0,0,[[\"1481[25-9]\\\\d{5}\",[10]],[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]]],\"GH\":[\"233\",\"00\",\"(?:[235]\\\\d{3}|800)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],\"0\"],\"GI\":[\"350\",\"00\",\"(?:[25]\\\\d|60)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]]],\"GL\":[\"299\",\"00\",\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]]],\"GM\":[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"GN\":[\"224\",\"00\",\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]]],\"GP\":[\"590\",\"00\",\"590\\\\d{6}|(?:69|80|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1-9]|5[3-579]|[68][0-689]|7[08]|9\\\\d)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-5])\\\\d{4}\"]]],\"GQ\":[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]]],\"GR\":[\"30\",\"00\",\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",[10,11,12],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\"$1 $2 $3\",[\"8\"]]]],\"GT\":[\"502\",\"00\",\"80\\\\d{6}|(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-8]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"GU\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"671$1\",0,\"671\"],\"GW\":[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]]],\"GY\":[\"592\",\"001\",\"(?:[2-8]\\\\d{3}|9008)\\\\d{3}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"HK\":[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,0,\"00\"],\"HN\":[\"504\",\"00\",\"8\\\\d{10}|[237-9]\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]]],\"HR\":[\"385\",\"00\",\"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6|7[245]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-57]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"HT\":[\"509\",\"00\",\"(?:[2-489]\\\\d|55)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"HU\":[\"36\",\"00\",\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],\"06\"],\"ID\":[\"62\",\"00[89]\",\"00[1-9]\\\\d{9,14}|(?:[1-36]|8\\\\d{5})\\\\d{6}|00\\\\d{9}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\"],\"IE\":[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"IL\":[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\"],\"IM\":[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([25-8]\\\\d{5})$|0\",\"1624$1\",0,\"74576|(?:16|7[56])24\"],\"IN\":[\"91\",\"00\",\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\"],\"IO\":[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]]],\"IQ\":[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"IR\":[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\"],\"IS\":[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,0,\"00\"],\"IT\":[\"39\",\"00\",\"0\\\\d{5,10}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|(?:43|55|70)\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",[6,7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[378]|43\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,[[\"0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\",[6,7,8,9,10,11]],[\"3[2-9]\\\\d{7,8}|(?:31|43)\\\\d{8}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],[\"3[2-8]\\\\d{9,10}\",[11,12]],0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"JE\":[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([0-24-8]\\\\d{5})$|0\",\"1534$1\",0,0,[[\"1534[0-24-8]\\\\d{5}\"],[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97\\\\d))\\\\d{5}\"],[\"80(?:07(?:35|81)|8901)\\\\d{4}\"],[\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"],[\"701511\\\\d{4}\"],0,[\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\"],[\"56\\\\d{8}\"]]],\"JM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\"],\"JO\":[\"962\",\"00\",\"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"JP\":[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51)|9(?:80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[0459]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[26-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9]|9[29])|5(?:2|3(?:[045]|9[0-8])|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|3(?:[29]|60)|49|51|6(?:[0-24]|36|5[0-3589]|7[23]|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3(?:[045]|9(?:[0-58]|6[4-9]|7[0-35689]))|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|60|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[2-57-9]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|7(?:2[2-468]|3[78])|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[257-9]\"],\"0$1\"]],\"0\",0,\"(000[259]\\\\d{6})$|(?:(?:003768)0?)|0\",\"$1\"],\"KE\":[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"KG\":[\"996\",\"00\",\"8\\\\d{9}|[235-9]\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"KH\":[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"KI\":[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\"],\"KM\":[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]]],\"KN\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"869$1\",0,\"869\"],\"KP\":[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"KR\":[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]0|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],\"KW\":[\"965\",\"00\",\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]]],\"KY\":[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"345$1\",0,\"345\"],\"KZ\":[\"7\",\"810\",\"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\",[10,14],0,\"8\",0,0,0,0,\"33|7\",0,\"8~10\"],\"LA\":[\"856\",\"00\",\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"30[0135-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\"],\"LB\":[\"961\",\"00\",\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],\"0\"],\"LC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-8]\\\\d{6})$|1\",\"758$1\",0,\"758\"],\"LI\":[\"423\",\"00\",\"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2379]|8(?:0[09]|7)\",\"[2379]|8(?:0(?:02|9)|7)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"(1001)|0\"],\"LK\":[\"94\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\"],\"LR\":[\"231\",\"00\",\"(?:[245]\\\\d|33|77|88)\\\\d{7}|(?:2\\\\d|[4-6])\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4[67]|[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-578]\"],\"0$1\"]],\"0\"],\"LS\":[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]]],\"LT\":[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-7]\"],\"(0-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(0-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(0-$1)\",1]],\"0\",0,\"[08]\"],\"LU\":[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],\"LV\":[\"371\",\"00\",\"(?:[268]\\\\d|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[269]|8[01]\"]]]],\"LY\":[\"218\",\"00\",\"[2-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MA\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[45]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-46-9]|3[3-9]|9)|8(?:0[89]|92)\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1-$2\",[\"[5-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"5(?:2(?:[0-25-79]\\\\d|3[1-578]|4[02-46-8]|8[0235-7])|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|8[014-9]|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[0167]\\\\d|2[0-4]|5[01]|8[0-3]))\\\\d{6}\"],[\"80[0-7]\\\\d{6}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"(?:592(?:4[0-2]|93)|80[89]\\\\d\\\\d)\\\\d{4}\"]]],\"MC\":[\"377\",\"00\",\"(?:[3489]|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],\"0\"],\"MD\":[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\"],\"ME\":[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MF\":[\"590\",\"00\",\"590\\\\d{6}|(?:69|80|9\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:0[079]|[14]3|[27][79]|3[03-7]|5[0-268]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-5])\\\\d{4}\"]]],\"MG\":[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"([24-9]\\\\d{6})$|0\",\"20$1\"],\"MH\":[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\"],\"MK\":[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2|34[47]|4(?:[37]7|5[47]|64)\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\"],\"ML\":[\"223\",\"00\",\"[24-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]]],\"MM\":[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"4(?:[2-46]|5[3-5])|5|6(?:[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-5]|(?:60|86)[23]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|452|678|86\",\"[12]|452|6788|86\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"MN\":[\"976\",\"001\",\"[12]\\\\d{7,9}|[5-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\"],\"MO\":[\"853\",\"00\",\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]]],\"MP\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"670$1\",0,\"670\"],\"MQ\":[\"596\",\"00\",\"596\\\\d{6}|(?:69|[89]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]|8(?:0[6-9]|[36])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"MR\":[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]]],\"MS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",[10],0,\"1\",0,\"([34]\\\\d{6})$|1\",\"664$1\",0,\"664\"],\"MT\":[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]]],\"MU\":[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:[57]|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57]\"]],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,0,\"020\"],\"MV\":[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[34679]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,0,\"00\"],\"MW\":[\"265\",\"00\",\"(?:[1289]\\\\d|31|77)\\\\d{7}|1\\\\d{6}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],\"0\"],\"MX\":[\"52\",\"0[09]\",\"[2-9]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"]]],0,0,0,0,0,0,0,\"00\"],\"MY\":[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9]|53)|8\",\"1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1(?:[367]|80)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"MZ\":[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"NA\":[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"NC\":[\"687\",\"00\",\"(?:050|[2-57-9]\\\\d\\\\d)\\\\d{3}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[02-57-9]\"]]]],\"NE\":[\"227\",\"00\",\"[027-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[0467]\"]]]],\"NF\":[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\"],\"NG\":[\"234\",\"009\",\"38\\\\d{6}|[78]\\\\d{9,13}|(?:20|9\\\\d)\\\\d{8}\",[8,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"20[129]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\"],\"NI\":[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]]],\"NL\":[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|8\\\\d{6,9}|9\\\\d{6,10}|1\\\\d{4,5}\",[5,6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-578]|91\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"NO\":[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\"],\"NP\":[\"977\",\"00\",\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-59]|[67][2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\"],\"NR\":[\"674\",\"00\",\"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-68]\"]]]],\"NU\":[\"683\",\"00\",\"(?:[4-7]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]]],\"NZ\":[\"64\",\"0(?:0|161)\",\"[1289]\\\\d{9}|50\\\\d{5}(?:\\\\d{2,3})?|[27-9]\\\\d{7,8}|(?:[34]\\\\d|6[0-35-9])\\\\d{6}|8\\\\d{4,6}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-79]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|8|90\",\"50(?:[0367]|88)|8|90\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[589]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\"],\"OM\":[\"968\",\"00\",\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]]],\"PA\":[\"507\",\"00\",\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",[7,8,10,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]]],\"PE\":[\"51\",\"00|19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,0,\"00\",\" Anexo \"],\"PF\":[\"689\",\"00\",\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",[6,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"PG\":[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,0,\"00\"],\"PH\":[\"63\",\"00\",\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\"],\"PK\":[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\"],\"PL\":[\"48\",\"00\",\"(?:6|8\\\\d\\\\d)\\\\d{7}|[1-9]\\\\d{6}(?:\\\\d{2})?|[26]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|20|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]]],\"PM\":[\"508\",\"00\",\"[45]\\\\d{5}|(?:708|8\\\\d\\\\d)\\\\d{6}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"PR\":[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\"],\"PS\":[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"PT\":[\"351\",\"00\",\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]]],\"PW\":[\"680\",\"01[12]\",\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"PY\":[\"595\",\"00\",\"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],\"0\"],\"QA\":[\"974\",\"00\",\"800\\\\d{4}|(?:2|800)\\\\d{6}|(?:0080|[3-7])\\\\d{7}\",[7,8,9,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[16]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[3-7]\"]]]],\"RE\":[\"262\",\"00\",\"(?:26|[689]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2689]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"26(?:2\\\\d\\\\d|3(?:0\\\\d|1[0-6]))\\\\d{4}\"],[\"69(?:2\\\\d\\\\d|3(?:[06][0-6]|1[013]|2[0-2]|3[0-39]|4\\\\d|5[0-5]|7[0-37]|8[0-8]|9[0-479]))\\\\d{4}\"],[\"80\\\\d{7}\"],[\"89[1-37-9]\\\\d{6}\"],0,0,0,0,[\"9(?:399[0-3]|479[0-5]|76(?:2[278]|3[0-37]))\\\\d{4}\"],[\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\"]]],\"RO\":[\"40\",\"00\",\"(?:[236-8]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[236-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\" int \"],\"RS\":[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\"],\"RU\":[\"7\",\"810\",\"8\\\\d{13}|[347-9]\\\\d{9}\",[10,14],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",1],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],\"8\",0,0,0,0,\"3[04-689]|[489]\",0,\"8~10\"],\"RW\":[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"]],\"0\"],\"SA\":[\"966\",\"00\",\"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\"],\"SB\":[\"677\",\"0[01]\",\"[6-9]\\\\d{6}|[1-6]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"6[89]|7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],\"SC\":[\"248\",\"010|0[0-2]\",\"(?:[2489]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],0,0,0,0,0,0,0,\"00\"],\"SD\":[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"SE\":[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44|9)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\"],\"SG\":[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-9]|[1-9])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"SH\":[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\"],\"SI\":[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,0,\"00\"],\"SJ\":[\"47\",\"00\",\"0\\\\d{4}|(?:[489]\\\\d|79)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\"],\"SK\":[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\"],\"SL\":[\"232\",\"00\",\"(?:[237-9]\\\\d|66)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],\"0\"],\"SM\":[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\"],\"SN\":[\"221\",\"00\",\"(?:[378]\\\\d|93)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]]],\"SO\":[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"(?:2|90)4|[67]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[348]|64|79|90\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6[0-35-9]|77|9[2-9]\"]]],\"0\"],\"SR\":[\"597\",\"00\",\"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]]],\"SS\":[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"ST\":[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]]],\"SV\":[\"503\",\"00\",\"[267]\\\\d{7}|(?:80\\\\d|900)\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]]],\"SX\":[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"(5\\\\d{6})$|1\",\"721$1\",0,\"721\"],\"SY\":[\"963\",\"00\",\"[1-39]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-5]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\",1]],\"0\"],\"SZ\":[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]]],\"TA\":[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\"],\"TC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-479]\\\\d{6})$|1\",\"649$1\",0,\"649\"],\"TD\":[\"235\",\"00|16\",\"(?:22|[689]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[26-9]\"]]],0,0,0,0,0,0,0,\"00\"],\"TG\":[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]]],\"TH\":[\"66\",\"00[1-9]\",\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",[8,9,10,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"TJ\":[\"992\",\"810\",\"[0-57-9]\\\\d{8}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"44[02-479]|[34]7\"]],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[1245]|3[12])\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[0-57-9]\"]]],0,0,0,0,0,0,0,\"8~10\"],\"TK\":[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7]],\"TL\":[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]]],\"TM\":[\"993\",\"810\",\"(?:[1-6]\\\\d|71)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[67]\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"TN\":[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]]],\"TO\":[\"676\",\"00\",\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]]],\"TR\":[\"90\",\"00\",\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",[7,10,12,13],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|61[06])\",\"5(?:[0-59]|61[06]1)\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1]],\"0\"],\"TT\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-46-8]\\\\d{6})$|1\",\"868$1\",0,\"868\"],\"TV\":[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"TW\":[\"886\",\"0(?:0[25-79]|19)\",\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10,11],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\"#\"],\"TZ\":[\"255\",\"00[056]\",\"(?:[25-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\"],\"UA\":[\"380\",\"00\",\"[89]\\\\d{9}|[3-9]\\\\d{8}\",[9,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])\",\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|89|9[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"0~0\"],\"UG\":[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\"],\"US\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"310\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[[\"(?:3052(?:0[0-8]|[1-9]\\\\d)|5056(?:[0-35-9]\\\\d|4[468])|7302[0-4]\\\\d)\\\\d{4}|(?:305[3-9]|472[24]|505[2-57-9]|7306|983[2-47-9])\\\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-47-9]|1[02-9]|2[013569]|3[0-24679]|4[167]|5[0-2]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\\\\d{6}\"],0,0,0,[\"305209\\\\d{4}\"]]],\"UY\":[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"0004\\\\d{2,9}|[1249]\\\\d{7}|(?:[49]\\\\d|80)\\\\d{5}\",[6,7,8,9,10,11,12,13],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[49]0|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3 $4\",[\"0\"]]],\"0\",0,0,0,0,0,0,\"00\",\" int. \"],\"UZ\":[\"998\",\"00\",\"(?:20|33|[5-79]\\\\d|88)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-9]\"]]]],\"VA\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11,12],0,0,0,0,0,0,\"06698\"],\"VC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"784$1\",0,\"784\"],\"VE\":[\"58\",\"00\",\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\"]],\"0\"],\"VG\":[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-578]\\\\d{6})$|1\",\"284$1\",0,\"284\"],\"VI\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"340$1\",0,\"340\"],\"VN\":[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[357-9]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\"],\"VU\":[\"678\",\"00\",\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]]],\"WF\":[\"681\",\"00\",\"(?:40|72|8\\\\d{4})\\\\d{4}|[89]\\\\d{5}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[47-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"WS\":[\"685\",\"0\",\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"XK\":[\"383\",\"00\",\"2\\\\d{7,8}|3\\\\d{7,11}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2|39\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7,10})\",\"$1 $2\",[\"3\"],\"0$1\"]],\"0\"],\"YE\":[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7(?:[24-6]|8[0-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"YT\":[\"262\",\"00\",\"(?:80|9\\\\d)\\\\d{7}|(?:26|63)9\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"269(?:0[0-467]|15|5[0-4]|6\\\\d|[78]0)\\\\d{4}\"],[\"639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|40|5[05-9]|9[04-79])\\\\d{4}\"],[\"80\\\\d{7}\"],0,0,0,0,0,[\"9(?:(?:39|47)8[01]|769\\\\d)\\\\d{4}\"]]],\"ZA\":[\"27\",\"00\",\"[1-79]\\\\d{8}|8\\\\d{4,9}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"ZM\":[\"260\",\"00\",\"800\\\\d{6}|(?:21|63|[79]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],\"0\"],\"ZW\":[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\"]},\"nonGeographic\":{\"800\":[\"800\",0,\"(?:00|[1-9]\\\\d)\\\\d{6}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],0,0,0,0,0,0,[0,0,[\"(?:00|[1-9]\\\\d)\\\\d{6}\"]]],\"808\":[\"808\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,[\"[1-9]\\\\d{7}\"]]],\"870\":[\"870\",0,\"7\\\\d{11}|[35-7]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[35-7]\"]]],0,0,0,0,0,0,[0,[\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"]]],\"878\":[\"878\",0,\"10\\\\d{10}\",[12],[[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"10\\\\d{10}\"]]],\"881\":[\"881\",0,\"6\\\\d{9}|[0-36-9]\\\\d{8}\",[9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-37-9]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{5,6})\",\"$1 $2 $3\",[\"6\"]]],0,0,0,0,0,0,[0,[\"6\\\\d{9}|[0-36-9]\\\\d{8}\"]]],\"882\":[\"882\",0,\"[13]\\\\d{6}(?:\\\\d{2,5})?|[19]\\\\d{7}|(?:[25]\\\\d\\\\d|4)\\\\d{7}(?:\\\\d{2})?\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"49\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"1[36]|9\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"16\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|23|3(?:[15]|4[57])|4|51\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34\"]],[\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-35]\"]]],0,0,0,0,0,0,[0,[\"342\\\\d{4}|(?:337|49)\\\\d{6}|(?:3(?:2|47|7\\\\d{3})|50\\\\d{3})\\\\d{7}\",[7,8,9,10,12]],0,0,0,[\"348[57]\\\\d{7}\",[11]],0,0,[\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:345\\\\d|9[89])\\\\d{6}|(?:10|2(?:3|85\\\\d)|3(?:[15]|[69]\\\\d\\\\d)|4[15-8]|51)\\\\d{8}\"]]],\"883\":[\"883\",0,\"(?:[1-4]\\\\d|51)\\\\d{6,10}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,8})\",\"$1 $2 $3\",[\"[14]|2[24-689]|3[02-689]|51[24-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"21\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[235]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"(?:2(?:00\\\\d\\\\d|10)|(?:370[1-9]|51\\\\d0)\\\\d)\\\\d{7}|51(?:00\\\\d{5}|[24-9]0\\\\d{4,7})|(?:1[0-79]|2[24-689]|3[02-689]|4[0-4])0\\\\d{5,9}\"]]],\"888\":[\"888\",0,\"\\\\d{11}\",[11],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],0,0,0,0,0,0,[0,0,0,0,0,0,[\"\\\\d{11}\"]]],\"979\":[\"979\",0,\"[1359]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],0,0,0,0,0,0,[0,0,0,[\"[1359]\\\\d{8}\"]]]}}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.min.json.js'\r\n\r\nexport default function withMetadataArgument(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}","const n = /[^\\0-\\x7E]/;\nconst t = /[\\x2E\\u3002\\uFF0E\\uFF61]/g;\nconst o = {\n overflow: \"Overflow Error\",\n \"not-basic\": \"Illegal Input\",\n \"invalid-input\": \"Invalid Input\"\n};\nconst e = Math.floor;\nconst r = String.fromCharCode;\nfunction s(n2) {\n throw new RangeError(o[n2]);\n}\nconst c = function(n2, t2) {\n return n2 + 22 + 75 * (n2 < 26) - ((t2 != 0) << 5);\n};\nconst u = function(n2, t2, o2) {\n let r2 = 0;\n for (n2 = o2 ? e(n2 / 700) : n2 >> 1, n2 += e(n2 / t2); n2 > 455; r2 += 36) {\n n2 = e(n2 / 35);\n }\n return e(r2 + 36 * n2 / (n2 + 38));\n};\nfunction toASCII(o2) {\n return function(n2, o3) {\n const e2 = n2.split(\"@\");\n let r2 = \"\";\n e2.length > 1 && (r2 = e2[0] + \"@\", n2 = e2[1]);\n const s2 = function(n3, t2) {\n const o4 = [];\n let e3 = n3.length;\n for (; e3--; ) {\n o4[e3] = t2(n3[e3]);\n }\n return o4;\n }((n2 = n2.replace(t, \".\")).split(\".\"), o3).join(\".\");\n return r2 + s2;\n }(o2, function(t2) {\n return n.test(t2) ? \"xn--\" + function(n2) {\n const t3 = [];\n const o3 = (n2 = function(n3) {\n const t4 = [];\n let o4 = 0;\n const e2 = n3.length;\n for (; o4 < e2; ) {\n const r2 = n3.charCodeAt(o4++);\n if (r2 >= 55296 && r2 <= 56319 && o4 < e2) {\n const e3 = n3.charCodeAt(o4++);\n (64512 & e3) == 56320 ? t4.push(((1023 & r2) << 10) + (1023 & e3) + 65536) : (t4.push(r2), o4--);\n } else {\n t4.push(r2);\n }\n }\n return t4;\n }(n2)).length;\n let f = 128;\n let i = 0;\n let l = 72;\n for (const o4 of n2) {\n o4 < 128 && t3.push(r(o4));\n }\n const h = t3.length;\n let p = h;\n for (h && t3.push(\"-\"); p < o3; ) {\n let o4 = 2147483647;\n for (const t4 of n2) {\n t4 >= f && t4 < o4 && (o4 = t4);\n }\n const a = p + 1;\n o4 - f > e((2147483647 - i) / a) && s(\"overflow\"), i += (o4 - f) * a, f = o4;\n for (const o5 of n2) {\n if (o5 < f && ++i > 2147483647 && s(\"overflow\"), o5 == f) {\n let n3 = i;\n for (let o6 = 36; ; o6 += 36) {\n const s2 = o6 <= l ? 1 : o6 >= l + 26 ? 26 : o6 - l;\n if (n3 < s2) {\n break;\n }\n const u2 = n3 - s2;\n const f2 = 36 - s2;\n t3.push(r(c(s2 + u2 % f2, 0))), n3 = e(u2 / f2);\n }\n t3.push(r(c(n3, 0))), l = u(i, a, p == h), i = 0, ++p;\n }\n }\n ++i, ++f;\n }\n return t3.join(\"\");\n }(t2) : t2;\n });\n}\n\nconst HASH_RE = /#/g;\nconst AMPERSAND_RE = /&/g;\nconst SLASH_RE = /\\//g;\nconst EQUAL_RE = /=/g;\nconst IM_RE = /\\?/g;\nconst PLUS_RE = /\\+/g;\nconst ENC_CARET_RE = /%5e/gi;\nconst ENC_BACKTICK_RE = /%60/gi;\nconst ENC_CURLY_OPEN_RE = /%7b/gi;\nconst ENC_PIPE_RE = /%7c/gi;\nconst ENC_CURLY_CLOSE_RE = /%7d/gi;\nconst ENC_SPACE_RE = /%20/gi;\nconst ENC_SLASH_RE = /%2f/gi;\nconst ENC_ENC_SLASH_RE = /%252f/gi;\nfunction encode(text) {\n return encodeURI(\"\" + text).replace(ENC_PIPE_RE, \"|\");\n}\nfunction encodeHash(text) {\n return encode(text).replace(ENC_CURLY_OPEN_RE, \"{\").replace(ENC_CURLY_CLOSE_RE, \"}\").replace(ENC_CARET_RE, \"^\");\n}\nfunction encodeQueryValue(input) {\n return encode(typeof input === \"string\" ? input : JSON.stringify(input)).replace(PLUS_RE, \"%2B\").replace(ENC_SPACE_RE, \"+\").replace(HASH_RE, \"%23\").replace(AMPERSAND_RE, \"%26\").replace(ENC_BACKTICK_RE, \"`\").replace(ENC_CARET_RE, \"^\").replace(SLASH_RE, \"%2F\");\n}\nfunction encodeQueryKey(text) {\n return encodeQueryValue(text).replace(EQUAL_RE, \"%3D\");\n}\nfunction encodePath(text) {\n return encode(text).replace(HASH_RE, \"%23\").replace(IM_RE, \"%3F\").replace(ENC_ENC_SLASH_RE, \"%2F\").replace(AMPERSAND_RE, \"%26\").replace(PLUS_RE, \"%2B\");\n}\nfunction encodeParam(text) {\n return encodePath(text).replace(SLASH_RE, \"%2F\");\n}\nfunction decode(text = \"\") {\n try {\n return decodeURIComponent(\"\" + text);\n } catch {\n return \"\" + text;\n }\n}\nfunction decodePath(text) {\n return decode(text.replace(ENC_SLASH_RE, \"%252F\"));\n}\nfunction decodeQueryKey(text) {\n return decode(text.replace(PLUS_RE, \" \"));\n}\nfunction decodeQueryValue(text) {\n return decode(text.replace(PLUS_RE, \" \"));\n}\nfunction encodeHost(name = \"\") {\n return toASCII(name);\n}\n\nfunction parseQuery(parametersString = \"\") {\n const object = {};\n if (parametersString[0] === \"?\") {\n parametersString = parametersString.slice(1);\n }\n for (const parameter of parametersString.split(\"&\")) {\n const s = parameter.match(/([^=]+)=?(.*)/) || [];\n if (s.length < 2) {\n continue;\n }\n const key = decodeQueryKey(s[1]);\n if (key === \"__proto__\" || key === \"constructor\") {\n continue;\n }\n const value = decodeQueryValue(s[2] || \"\");\n if (object[key] === void 0) {\n object[key] = value;\n } else if (Array.isArray(object[key])) {\n object[key].push(value);\n } else {\n object[key] = [object[key], value];\n }\n }\n return object;\n}\nfunction encodeQueryItem(key, value) {\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n value = String(value);\n }\n if (!value) {\n return encodeQueryKey(key);\n }\n if (Array.isArray(value)) {\n return value.map((_value) => `${encodeQueryKey(key)}=${encodeQueryValue(_value)}`).join(\"&\");\n }\n return `${encodeQueryKey(key)}=${encodeQueryValue(value)}`;\n}\nfunction stringifyQuery(query) {\n return Object.keys(query).filter((k) => query[k] !== void 0).map((k) => encodeQueryItem(k, query[k])).filter(Boolean).join(\"&\");\n}\n\nconst PROTOCOL_STRICT_REGEX = /^[\\s\\w\\0+.-]{2,}:([/\\\\]{1,2})/;\nconst PROTOCOL_REGEX = /^[\\s\\w\\0+.-]{2,}:([/\\\\]{2})?/;\nconst PROTOCOL_RELATIVE_REGEX = /^([/\\\\]\\s*){2,}[^/\\\\]/;\nconst PROTOCOL_SCRIPT_RE = /^[\\s\\0]*(blob|data|javascript|vbscript):$/i;\nconst TRAILING_SLASH_RE = /\\/$|\\/\\?|\\/#/;\nconst JOIN_LEADING_SLASH_RE = /^\\.?\\//;\nfunction isRelative(inputString) {\n return [\"./\", \"../\"].some((string_) => inputString.startsWith(string_));\n}\nfunction hasProtocol(inputString, opts = {}) {\n if (typeof opts === \"boolean\") {\n opts = { acceptRelative: opts };\n }\n if (opts.strict) {\n return PROTOCOL_STRICT_REGEX.test(inputString);\n }\n return PROTOCOL_REGEX.test(inputString) || (opts.acceptRelative ? PROTOCOL_RELATIVE_REGEX.test(inputString) : false);\n}\nfunction isScriptProtocol(protocol) {\n return !!protocol && PROTOCOL_SCRIPT_RE.test(protocol);\n}\nfunction hasTrailingSlash(input = \"\", respectQueryAndFragment) {\n if (!respectQueryAndFragment) {\n return input.endsWith(\"/\");\n }\n return TRAILING_SLASH_RE.test(input);\n}\nfunction withoutTrailingSlash(input = \"\", respectQueryAndFragment) {\n if (!respectQueryAndFragment) {\n return (hasTrailingSlash(input) ? input.slice(0, -1) : input) || \"/\";\n }\n if (!hasTrailingSlash(input, true)) {\n return input || \"/\";\n }\n let path = input;\n let fragment = \"\";\n const fragmentIndex = input.indexOf(\"#\");\n if (fragmentIndex >= 0) {\n path = input.slice(0, fragmentIndex);\n fragment = input.slice(fragmentIndex);\n }\n const [s0, ...s] = path.split(\"?\");\n const cleanPath = s0.endsWith(\"/\") ? s0.slice(0, -1) : s0;\n return (cleanPath || \"/\") + (s.length > 0 ? `?${s.join(\"?\")}` : \"\") + fragment;\n}\nfunction withTrailingSlash(input = \"\", respectQueryAndFragment) {\n if (!respectQueryAndFragment) {\n return input.endsWith(\"/\") ? input : input + \"/\";\n }\n if (hasTrailingSlash(input, true)) {\n return input || \"/\";\n }\n let path = input;\n let fragment = \"\";\n const fragmentIndex = input.indexOf(\"#\");\n if (fragmentIndex >= 0) {\n path = input.slice(0, fragmentIndex);\n fragment = input.slice(fragmentIndex);\n if (!path) {\n return fragment;\n }\n }\n const [s0, ...s] = path.split(\"?\");\n return s0 + \"/\" + (s.length > 0 ? `?${s.join(\"?\")}` : \"\") + fragment;\n}\nfunction hasLeadingSlash(input = \"\") {\n return input.startsWith(\"/\");\n}\nfunction withoutLeadingSlash(input = \"\") {\n return (hasLeadingSlash(input) ? input.slice(1) : input) || \"/\";\n}\nfunction withLeadingSlash(input = \"\") {\n return hasLeadingSlash(input) ? input : \"/\" + input;\n}\nfunction cleanDoubleSlashes(input = \"\") {\n return input.split(\"://\").map((string_) => string_.replace(/\\/{2,}/g, \"/\")).join(\"://\");\n}\nfunction withBase(input, base) {\n if (isEmptyURL(base) || hasProtocol(input)) {\n return input;\n }\n const _base = withoutTrailingSlash(base);\n if (input.startsWith(_base)) {\n return input;\n }\n return joinURL(_base, input);\n}\nfunction withoutBase(input, base) {\n if (isEmptyURL(base)) {\n return input;\n }\n const _base = withoutTrailingSlash(base);\n if (!input.startsWith(_base)) {\n return input;\n }\n const trimmed = input.slice(_base.length);\n return trimmed[0] === \"/\" ? trimmed : \"/\" + trimmed;\n}\nfunction withQuery(input, query) {\n const parsed = parseURL(input);\n const mergedQuery = { ...parseQuery(parsed.search), ...query };\n parsed.search = stringifyQuery(mergedQuery);\n return stringifyParsedURL(parsed);\n}\nfunction getQuery(input) {\n return parseQuery(parseURL(input).search);\n}\nfunction isEmptyURL(url) {\n return !url || url === \"/\";\n}\nfunction isNonEmptyURL(url) {\n return url && url !== \"/\";\n}\nfunction joinURL(base, ...input) {\n let url = base || \"\";\n for (const segment of input.filter((url2) => isNonEmptyURL(url2))) {\n if (url) {\n const _segment = segment.replace(JOIN_LEADING_SLASH_RE, \"\");\n url = withTrailingSlash(url) + _segment;\n } else {\n url = segment;\n }\n }\n return url;\n}\nfunction joinRelativeURL(..._input) {\n const JOIN_SEGMENT_SPLIT_RE = /\\/(?!\\/)/;\n const input = _input.filter(Boolean);\n const segments = [];\n let segmentsDepth = 0;\n for (const i of input) {\n if (!i || i === \"/\") {\n continue;\n }\n for (const [sindex, s] of i.split(JOIN_SEGMENT_SPLIT_RE).entries()) {\n if (!s || s === \".\") {\n continue;\n }\n if (s === \"..\") {\n if (segments.length === 1 && hasProtocol(segments[0])) {\n continue;\n }\n segments.pop();\n segmentsDepth--;\n continue;\n }\n if (sindex === 1 && segments[segments.length - 1]?.endsWith(\":/\")) {\n segments[segments.length - 1] += \"/\" + s;\n continue;\n }\n segments.push(s);\n segmentsDepth++;\n }\n }\n let url = segments.join(\"/\");\n if (segmentsDepth >= 0) {\n if (input[0]?.startsWith(\"/\") && !url.startsWith(\"/\")) {\n url = \"/\" + url;\n } else if (input[0]?.startsWith(\"./\") && !url.startsWith(\"./\")) {\n url = \"./\" + url;\n }\n } else {\n url = \"../\".repeat(-1 * segmentsDepth) + url;\n }\n if (input[input.length - 1]?.endsWith(\"/\") && !url.endsWith(\"/\")) {\n url += \"/\";\n }\n return url;\n}\nfunction withHttp(input) {\n return withProtocol(input, \"http://\");\n}\nfunction withHttps(input) {\n return withProtocol(input, \"https://\");\n}\nfunction withoutProtocol(input) {\n return withProtocol(input, \"\");\n}\nfunction withProtocol(input, protocol) {\n let match = input.match(PROTOCOL_REGEX);\n if (!match) {\n match = input.match(/^\\/{2,}/);\n }\n if (!match) {\n return protocol + input;\n }\n return protocol + input.slice(match[0].length);\n}\nfunction normalizeURL(input) {\n const parsed = parseURL(input);\n parsed.pathname = encodePath(decodePath(parsed.pathname));\n parsed.hash = encodeHash(decode(parsed.hash));\n parsed.host = encodeHost(decode(parsed.host));\n parsed.search = stringifyQuery(parseQuery(parsed.search));\n return stringifyParsedURL(parsed);\n}\nfunction resolveURL(base = \"\", ...inputs) {\n if (typeof base !== \"string\") {\n throw new TypeError(\n `URL input should be string received ${typeof base} (${base})`\n );\n }\n const filteredInputs = inputs.filter((input) => isNonEmptyURL(input));\n if (filteredInputs.length === 0) {\n return base;\n }\n const url = parseURL(base);\n for (const inputSegment of filteredInputs) {\n const urlSegment = parseURL(inputSegment);\n if (urlSegment.pathname) {\n url.pathname = withTrailingSlash(url.pathname) + withoutLeadingSlash(urlSegment.pathname);\n }\n if (urlSegment.hash && urlSegment.hash !== \"#\") {\n url.hash = urlSegment.hash;\n }\n if (urlSegment.search && urlSegment.search !== \"?\") {\n if (url.search && url.search !== \"?\") {\n const queryString = stringifyQuery({\n ...parseQuery(url.search),\n ...parseQuery(urlSegment.search)\n });\n url.search = queryString.length > 0 ? \"?\" + queryString : \"\";\n } else {\n url.search = urlSegment.search;\n }\n }\n }\n return stringifyParsedURL(url);\n}\nfunction isSamePath(p1, p2) {\n return decode(withoutTrailingSlash(p1)) === decode(withoutTrailingSlash(p2));\n}\nfunction isEqual(a, b, options = {}) {\n if (!options.trailingSlash) {\n a = withTrailingSlash(a);\n b = withTrailingSlash(b);\n }\n if (!options.leadingSlash) {\n a = withLeadingSlash(a);\n b = withLeadingSlash(b);\n }\n if (!options.encoding) {\n a = decode(a);\n b = decode(b);\n }\n return a === b;\n}\nfunction withFragment(input, hash) {\n if (!hash || hash === \"#\") {\n return input;\n }\n const parsed = parseURL(input);\n parsed.hash = hash === \"\" ? \"\" : \"#\" + encodeHash(hash);\n return stringifyParsedURL(parsed);\n}\nfunction withoutFragment(input) {\n return stringifyParsedURL({ ...parseURL(input), hash: \"\" });\n}\nfunction withoutHost(input) {\n const parsed = parseURL(input);\n return (parsed.pathname || \"/\") + parsed.search + parsed.hash;\n}\n\nconst protocolRelative = Symbol.for(\"ufo:protocolRelative\");\nfunction parseURL(input = \"\", defaultProto) {\n const _specialProtoMatch = input.match(\n /^[\\s\\0]*(blob:|data:|javascript:|vbscript:)(.*)/i\n );\n if (_specialProtoMatch) {\n const [, _proto, _pathname = \"\"] = _specialProtoMatch;\n return {\n protocol: _proto.toLowerCase(),\n pathname: _pathname,\n href: _proto + _pathname,\n auth: \"\",\n host: \"\",\n search: \"\",\n hash: \"\"\n };\n }\n if (!hasProtocol(input, { acceptRelative: true })) {\n return defaultProto ? parseURL(defaultProto + input) : parsePath(input);\n }\n const [, protocol = \"\", auth, hostAndPath = \"\"] = input.replace(/\\\\/g, \"/\").match(/^[\\s\\0]*([\\w+.-]{2,}:)?\\/\\/([^/@]+@)?(.*)/) || [];\n let [, host = \"\", path = \"\"] = hostAndPath.match(/([^#/?]*)(.*)?/) || [];\n if (protocol === \"file:\") {\n path = path.replace(/\\/(?=[A-Za-z]:)/, \"\");\n }\n const { pathname, search, hash } = parsePath(path);\n return {\n protocol: protocol.toLowerCase(),\n auth: auth ? auth.slice(0, Math.max(0, auth.length - 1)) : \"\",\n host,\n pathname,\n search,\n hash,\n [protocolRelative]: !protocol\n };\n}\nfunction parsePath(input = \"\") {\n const [pathname = \"\", search = \"\", hash = \"\"] = (input.match(/([^#?]*)(\\?[^#]*)?(#.*)?/) || []).splice(1);\n return {\n pathname,\n search,\n hash\n };\n}\nfunction parseAuth(input = \"\") {\n const [username, password] = input.split(\":\");\n return {\n username: decode(username),\n password: decode(password)\n };\n}\nfunction parseHost(input = \"\") {\n const [hostname, port] = (input.match(/([^/:]*):?(\\d+)?/) || []).splice(1);\n return {\n hostname: decode(hostname),\n port\n };\n}\nfunction stringifyParsedURL(parsed) {\n const pathname = parsed.pathname || \"\";\n const search = parsed.search ? (parsed.search.startsWith(\"?\") ? \"\" : \"?\") + parsed.search : \"\";\n const hash = parsed.hash || \"\";\n const auth = parsed.auth ? parsed.auth + \"@\" : \"\";\n const host = parsed.host || \"\";\n const proto = parsed.protocol || parsed[protocolRelative] ? (parsed.protocol || \"\") + \"//\" : \"\";\n return proto + auth + host + pathname + search + hash;\n}\nconst FILENAME_STRICT_REGEX = /\\/([^/]+\\.[^/]+)$/;\nconst FILENAME_REGEX = /\\/([^/]+)$/;\nfunction parseFilename(input = \"\", { strict }) {\n const { pathname } = parseURL(input);\n const matches = strict ? pathname.match(FILENAME_STRICT_REGEX) : pathname.match(FILENAME_REGEX);\n return matches ? matches[1] : void 0;\n}\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass $URL {\n constructor(input = \"\") {\n __publicField(this, \"protocol\");\n __publicField(this, \"host\");\n __publicField(this, \"auth\");\n __publicField(this, \"pathname\");\n __publicField(this, \"query\", {});\n __publicField(this, \"hash\");\n if (typeof input !== \"string\") {\n throw new TypeError(\n `URL input should be string received ${typeof input} (${input})`\n );\n }\n const parsed = parseURL(input);\n this.protocol = decode(parsed.protocol);\n this.host = decode(parsed.host);\n this.auth = decode(parsed.auth);\n this.pathname = decodePath(parsed.pathname);\n this.query = parseQuery(parsed.search);\n this.hash = decode(parsed.hash);\n }\n get hostname() {\n return parseHost(this.host).hostname;\n }\n get port() {\n return parseHost(this.host).port || \"\";\n }\n get username() {\n return parseAuth(this.auth).username;\n }\n get password() {\n return parseAuth(this.auth).password || \"\";\n }\n get hasProtocol() {\n return this.protocol.length;\n }\n get isAbsolute() {\n return this.hasProtocol || this.pathname[0] === \"/\";\n }\n get search() {\n const q = stringifyQuery(this.query);\n return q.length > 0 ? \"?\" + q : \"\";\n }\n get searchParams() {\n const p = new URLSearchParams();\n for (const name in this.query) {\n const value = this.query[name];\n if (Array.isArray(value)) {\n for (const v of value) {\n p.append(name, v);\n }\n } else {\n p.append(\n name,\n typeof value === \"string\" ? value : JSON.stringify(value)\n );\n }\n }\n return p;\n }\n get origin() {\n return (this.protocol ? this.protocol + \"//\" : \"\") + encodeHost(this.host);\n }\n get fullpath() {\n return encodePath(this.pathname) + this.search + encodeHash(this.hash);\n }\n get encodedAuth() {\n if (!this.auth) {\n return \"\";\n }\n const { username, password } = parseAuth(this.auth);\n return encodeURIComponent(username) + (password ? \":\" + encodeURIComponent(password) : \"\");\n }\n get href() {\n const auth = this.encodedAuth;\n const originWithAuth = (this.protocol ? this.protocol + \"//\" : \"\") + (auth ? auth + \"@\" : \"\") + encodeHost(this.host);\n return this.hasProtocol && this.isAbsolute ? originWithAuth + this.fullpath : this.fullpath;\n }\n append(url) {\n if (url.hasProtocol) {\n throw new Error(\"Cannot append a URL with protocol\");\n }\n Object.assign(this.query, url.query);\n if (url.pathname) {\n this.pathname = withTrailingSlash(this.pathname) + withoutLeadingSlash(url.pathname);\n }\n if (url.hash) {\n this.hash = url.hash;\n }\n }\n toJSON() {\n return this.href;\n }\n toString() {\n return this.href;\n }\n}\nfunction createURL(input) {\n return new $URL(input);\n}\n\nexport { $URL, cleanDoubleSlashes, createURL, decode, decodePath, decodeQueryKey, decodeQueryValue, encode, encodeHash, encodeHost, encodeParam, encodePath, encodeQueryItem, encodeQueryKey, encodeQueryValue, getQuery, hasLeadingSlash, hasProtocol, hasTrailingSlash, isEmptyURL, isEqual, isNonEmptyURL, isRelative, isSamePath, isScriptProtocol, joinRelativeURL, joinURL, normalizeURL, parseAuth, parseFilename, parseHost, parsePath, parseQuery, parseURL, resolveURL, stringifyParsedURL, stringifyQuery, withBase, withFragment, withHttp, withHttps, withLeadingSlash, withProtocol, withQuery, withTrailingSlash, withoutBase, withoutFragment, withoutHost, withoutLeadingSlash, withoutProtocol, withoutTrailingSlash };\n","import destr from 'destr';\nimport { withBase, withQuery } from 'ufo';\n\nclass FetchError extends Error {\n constructor(message, opts) {\n super(message, opts);\n this.name = \"FetchError\";\n if (opts?.cause && !this.cause) {\n this.cause = opts.cause;\n }\n }\n}\nfunction createFetchError(ctx) {\n const errorMessage = ctx.error?.message || ctx.error?.toString() || \"\";\n const method = ctx.request?.method || ctx.options?.method || \"GET\";\n const url = ctx.request?.url || String(ctx.request) || \"/\";\n const requestStr = `[${method}] ${JSON.stringify(url)}`;\n const statusStr = ctx.response ? `${ctx.response.status} ${ctx.response.statusText}` : \"<no response>\";\n const message = `${requestStr}: ${statusStr}${errorMessage ? ` ${errorMessage}` : \"\"}`;\n const fetchError = new FetchError(\n message,\n ctx.error ? { cause: ctx.error } : void 0\n );\n for (const key of [\"request\", \"options\", \"response\"]) {\n Object.defineProperty(fetchError, key, {\n get() {\n return ctx[key];\n }\n });\n }\n for (const [key, refKey] of [\n [\"data\", \"_data\"],\n [\"status\", \"status\"],\n [\"statusCode\", \"status\"],\n [\"statusText\", \"statusText\"],\n [\"statusMessage\", \"statusText\"]\n ]) {\n Object.defineProperty(fetchError, key, {\n get() {\n return ctx.response && ctx.response[refKey];\n }\n });\n }\n return fetchError;\n}\n\nconst payloadMethods = new Set(\n Object.freeze([\"PATCH\", \"POST\", \"PUT\", \"DELETE\"])\n);\nfunction isPayloadMethod(method = \"GET\") {\n return payloadMethods.has(method.toUpperCase());\n}\nfunction isJSONSerializable(value) {\n if (value === void 0) {\n return false;\n }\n const t = typeof value;\n if (t === \"string\" || t === \"number\" || t === \"boolean\" || t === null) {\n return true;\n }\n if (t !== \"object\") {\n return false;\n }\n if (Array.isArray(value)) {\n return true;\n }\n if (value.buffer) {\n return false;\n }\n return value.constructor && value.constructor.name === \"Object\" || typeof value.toJSON === \"function\";\n}\nconst textTypes = /* @__PURE__ */ new Set([\n \"image/svg\",\n \"application/xml\",\n \"application/xhtml\",\n \"application/html\"\n]);\nconst JSON_RE = /^application\\/(?:[\\w!#$%&*.^`~-]*\\+)?json(;.+)?$/i;\nfunction detectResponseType(_contentType = \"\") {\n if (!_contentType) {\n return \"json\";\n }\n const contentType = _contentType.split(\";\").shift() || \"\";\n if (JSON_RE.test(contentType)) {\n return \"json\";\n }\n if (textTypes.has(contentType) || contentType.startsWith(\"text/\")) {\n return \"text\";\n }\n return \"blob\";\n}\nfunction resolveFetchOptions(request, input, defaults, Headers) {\n const headers = mergeHeaders(\n input?.headers ?? request?.headers,\n defaults?.headers,\n Headers\n );\n let query;\n if (defaults?.query || defaults?.params || input?.params || input?.query) {\n query = {\n ...defaults?.params,\n ...defaults?.query,\n ...input?.params,\n ...input?.query\n };\n }\n return {\n ...defaults,\n ...input,\n query,\n params: query,\n headers\n };\n}\nfunction mergeHeaders(input, defaults, Headers) {\n if (!defaults) {\n return new Headers(input);\n }\n const headers = new Headers(defaults);\n if (input) {\n for (const [key, value] of Symbol.iterator in input || Array.isArray(input) ? input : new Headers(input)) {\n headers.set(key, value);\n }\n }\n return headers;\n}\nasync function callHooks(context, hooks) {\n if (hooks) {\n if (Array.isArray(hooks)) {\n for (const hook of hooks) {\n await hook(context);\n }\n } else {\n await hooks(context);\n }\n }\n}\n\nconst retryStatusCodes = /* @__PURE__ */ new Set([\n 408,\n // Request Timeout\n 409,\n // Conflict\n 425,\n // Too Early (Experimental)\n 429,\n // Too Many Requests\n 500,\n // Internal Server Error\n 502,\n // Bad Gateway\n 503,\n // Service Unavailable\n 504\n // Gateway Timeout\n]);\nconst nullBodyResponses = /* @__PURE__ */ new Set([101, 204, 205, 304]);\nfunction createFetch(globalOptions = {}) {\n const {\n fetch = globalThis.fetch,\n Headers = globalThis.Headers,\n AbortController = globalThis.AbortController\n } = globalOptions;\n async function onError(context) {\n const isAbort = context.error && context.error.name === \"AbortError\" && !context.options.timeout || false;\n if (context.options.retry !== false && !isAbort) {\n let retries;\n if (typeof context.options.retry === \"number\") {\n retries = context.options.retry;\n } else {\n retries = isPayloadMethod(context.options.method) ? 0 : 1;\n }\n const responseCode = context.response && context.response.status || 500;\n if (retries > 0 && (Array.isArray(context.options.retryStatusCodes) ? context.options.retryStatusCodes.includes(responseCode) : retryStatusCodes.has(responseCode))) {\n const retryDelay = typeof context.options.retryDelay === \"function\" ? context.options.retryDelay(context) : context.options.retryDelay || 0;\n if (retryDelay > 0) {\n await new Promise((resolve) => setTimeout(resolve, retryDelay));\n }\n return $fetchRaw(context.request, {\n ...context.options,\n retry: retries - 1\n });\n }\n }\n const error = createFetchError(context);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(error, $fetchRaw);\n }\n throw error;\n }\n const $fetchRaw = async function $fetchRaw2(_request, _options = {}) {\n const context = {\n request: _request,\n options: resolveFetchOptions(\n _request,\n _options,\n globalOptions.defaults,\n Headers\n ),\n response: void 0,\n error: void 0\n };\n if (context.options.method) {\n context.options.method = context.options.method.toUpperCase();\n }\n if (context.options.onRequest) {\n await callHooks(context, context.options.onRequest);\n }\n if (typeof context.request === \"string\") {\n if (context.options.baseURL) {\n context.request = withBase(context.request, context.options.baseURL);\n }\n if (context.options.query) {\n context.request = withQuery(context.request, context.options.query);\n delete context.options.query;\n }\n if (\"query\" in context.options) {\n delete context.options.query;\n }\n if (\"params\" in context.options) {\n delete context.options.params;\n }\n }\n if (context.options.body && isPayloadMethod(context.options.method)) {\n if (isJSONSerializable(context.options.body)) {\n context.options.body = typeof context.options.body === \"string\" ? context.options.body : JSON.stringify(context.options.body);\n context.options.headers = new Headers(context.options.headers || {});\n if (!context.options.headers.has(\"content-type\")) {\n context.options.headers.set(\"content-type\", \"application/json\");\n }\n if (!context.options.headers.has(\"accept\")) {\n context.options.headers.set(\"accept\", \"application/json\");\n }\n } else if (\n // ReadableStream Body\n \"pipeTo\" in context.options.body && typeof context.options.body.pipeTo === \"function\" || // Node.js Stream Body\n typeof context.options.body.pipe === \"function\"\n ) {\n if (!(\"duplex\" in context.options)) {\n context.options.duplex = \"half\";\n }\n }\n }\n let abortTimeout;\n if (!context.options.signal && context.options.timeout) {\n const controller = new AbortController();\n abortTimeout = setTimeout(() => {\n const error = new Error(\n \"[TimeoutError]: The operation was aborted due to timeout\"\n );\n error.name = \"TimeoutError\";\n error.code = 23;\n controller.abort(error);\n }, context.options.timeout);\n context.options.signal = controller.signal;\n }\n try {\n context.response = await fetch(\n context.request,\n context.options\n );\n } catch (error) {\n context.error = error;\n if (context.options.onRequestError) {\n await callHooks(\n context,\n context.options.onRequestError\n );\n }\n return await onError(context);\n } finally {\n if (abortTimeout) {\n clearTimeout(abortTimeout);\n }\n }\n const hasBody = (context.response.body || // https://github.com/unjs/ofetch/issues/324\n // https://github.com/unjs/ofetch/issues/294\n // https://github.com/JakeChampion/fetch/issues/1454\n context.response._bodyInit) && !nullBodyResponses.has(context.response.status) && context.options.method !== \"HEAD\";\n if (hasBody) {\n const responseType = (context.options.parseResponse ? \"json\" : context.options.responseType) || detectResponseType(context.response.headers.get(\"content-type\") || \"\");\n switch (responseType) {\n case \"json\": {\n const data = await context.response.text();\n const parseFunction = context.options.parseResponse || destr;\n context.response._data = parseFunction(data);\n break;\n }\n case \"stream\": {\n context.response._data = context.response.body || context.response._bodyInit;\n break;\n }\n default: {\n context.response._data = await context.response[responseType]();\n }\n }\n }\n if (context.options.onResponse) {\n await callHooks(\n context,\n context.options.onResponse\n );\n }\n if (!context.options.ignoreResponseError && context.response.status >= 400 && context.response.status < 600) {\n if (context.options.onResponseError) {\n await callHooks(\n context,\n context.options.onResponseError\n );\n }\n return await onError(context);\n }\n return context.response;\n };\n const $fetch = async function $fetch2(request, options) {\n const r = await $fetchRaw(request, options);\n return r._data;\n };\n $fetch.raw = $fetchRaw;\n $fetch.native = (...args) => fetch(...args);\n $fetch.create = (defaultOptions = {}, customGlobalOptions = {}) => createFetch({\n ...globalOptions,\n ...customGlobalOptions,\n defaults: {\n ...globalOptions.defaults,\n ...customGlobalOptions.defaults,\n ...defaultOptions\n }\n });\n return $fetch;\n}\n\nexport { FetchError as F, createFetchError as a, createFetch as c };\n","let e={data:\"\"},t=t=>\"object\"==typeof window?((t?t.querySelector(\"#_goober\"):window._goober)||Object.assign((t||document.head).appendChild(document.createElement(\"style\")),{innerHTML:\" \",id:\"_goober\"})).firstChild:t||e,r=e=>{let r=t(e),l=r.data;return r.data=\"\",l},l=/(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g,a=/\\/\\*[^]*?\\*\\/| +/g,n=/\\n+/g,o=(e,t)=>{let r=\"\",l=\"\",a=\"\";for(let n in e){let c=e[n];\"@\"==n[0]?\"i\"==n[1]?r=n+\" \"+c+\";\":l+=\"f\"==n[1]?o(c,n):n+\"{\"+o(c,\"k\"==n[1]?\"\":t)+\"}\":\"object\"==typeof c?l+=o(c,t?t.replace(/([^,])+/g,e=>n.replace(/([^,]*:\\S+\\([^)]*\\))|([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+\" \"+t:t)):n):null!=c&&(n=/^--/.test(n)?n:n.replace(/[A-Z]/g,\"-$&\").toLowerCase(),a+=o.p?o.p(n,c):n+\":\"+c+\";\")}return r+(t&&a?t+\"{\"+a+\"}\":a)+l},c={},s=e=>{if(\"object\"==typeof e){let t=\"\";for(let r in e)t+=r+s(e[r]);return t}return e},i=(e,t,r,i,p)=>{let u=s(e),d=c[u]||(c[u]=(e=>{let t=0,r=11;for(;t<e.length;)r=101*r+e.charCodeAt(t++)>>>0;return\"go\"+r})(u));if(!c[d]){let t=u!==e?e:(e=>{let t,r,o=[{}];for(;t=l.exec(e.replace(a,\"\"));)t[4]?o.shift():t[3]?(r=t[3].replace(n,\" \").trim(),o.unshift(o[0][r]=o[0][r]||{})):o[0][t[1]]=t[2].replace(n,\" \").trim();return o[0]})(e);c[d]=o(p?{[\"@keyframes \"+d]:t}:t,r?\"\":\".\"+d)}let f=r&&c.g?c.g:null;return r&&(c.g=c[d]),((e,t,r,l)=>{l?t.data=t.data.replace(l,e):-1===t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(c[d],t,i,f),d},p=(e,t,r)=>e.reduce((e,l,a)=>{let n=t[a];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?\".\"+t:e&&\"object\"==typeof e?e.props?\"\":o(e,\"\"):!1===e?\"\":e}return e+l+(null==n?\"\":n)},\"\");function u(e){let r=this||{},l=e.call?e(r.p):e;return i(l.unshift?l.raw?p(l,[].slice.call(arguments,1),r.p):l.reduce((e,t)=>Object.assign(e,t&&t.call?t(r.p):t),{}):l,t(r.target),r.g,r.o,r.k)}let d,f,g,b=u.bind({g:1}),h=u.bind({k:1});function m(e,t,r,l){o.p=t,d=e,f=r,g=l}function j(e,t){let r=this||{};return function(){let l=arguments;function a(n,o){let c=Object.assign({},n),s=c.className||a.className;r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\\d+/.test(s),c.className=u.apply(r,l)+(s?\" \"+s:\"\"),t&&(c.ref=o);let i=e;return e[0]&&(i=c.as||e,delete c.as),g&&i[0]&&g(c),d(i,c)}return t?t(a):a}}export{u as css,r as extractCss,b as glob,h as keyframes,m as setup,j as styled};\n","import { CSSProperties } from 'react';\n\nexport type ToastType = 'success' | 'error' | 'loading' | 'blank' | 'custom';\nexport type ToastPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\nexport type Renderable = JSX.Element | string | null;\n\nexport interface IconTheme {\n primary: string;\n secondary: string;\n}\n\nexport type ValueFunction<TValue, TArg> = (arg: TArg) => TValue;\nexport type ValueOrFunction<TValue, TArg> =\n | TValue\n | ValueFunction<TValue, TArg>;\n\nconst isFunction = <TValue, TArg>(\n valOrFunction: ValueOrFunction<TValue, TArg>\n): valOrFunction is ValueFunction<TValue, TArg> =>\n typeof valOrFunction === 'function';\n\nexport const resolveValue = <TValue, TArg>(\n valOrFunction: ValueOrFunction<TValue, TArg>,\n arg: TArg\n): TValue => (isFunction(valOrFunction) ? valOrFunction(arg) : valOrFunction);\n\nexport interface Toast {\n type: ToastType;\n id: string;\n message: ValueOrFunction<Renderable, Toast>;\n icon?: Renderable;\n duration?: number;\n pauseDuration: number;\n position?: ToastPosition;\n\n ariaProps: {\n role: 'status' | 'alert';\n 'aria-live': 'assertive' | 'off' | 'polite';\n };\n\n style?: CSSProperties;\n className?: string;\n iconTheme?: IconTheme;\n\n createdAt: number;\n visible: boolean;\n height?: number;\n}\n\nexport type ToastOptions = Partial<\n Pick<\n Toast,\n | 'id'\n | 'icon'\n | 'duration'\n | 'ariaProps'\n | 'className'\n | 'style'\n | 'position'\n | 'iconTheme'\n >\n>;\n\nexport type DefaultToastOptions = ToastOptions & {\n [key in ToastType]?: ToastOptions;\n};\n\nexport interface ToasterProps {\n position?: ToastPosition;\n toastOptions?: DefaultToastOptions;\n reverseOrder?: boolean;\n gutter?: number;\n containerStyle?: React.CSSProperties;\n containerClassName?: string;\n children?: (toast: Toast) => JSX.Element;\n}\n\nexport interface ToastWrapperProps {\n id: string;\n className?: string;\n style?: React.CSSProperties;\n onHeightUpdate: (id: string, height: number) => void;\n children?: React.ReactNode;\n}\n","export const genId = (() => {\n let count = 0;\n return () => {\n return (++count).toString();\n };\n})();\n\nexport const prefersReducedMotion = (() => {\n // Cache result\n let shouldReduceMotion: boolean | undefined = undefined;\n\n return () => {\n if (shouldReduceMotion === undefined && typeof window !== 'undefined') {\n const mediaQuery = matchMedia('(prefers-reduced-motion: reduce)');\n shouldReduceMotion = !mediaQuery || mediaQuery.matches;\n }\n return shouldReduceMotion;\n };\n})();\n","import { useEffect, useState } from 'react';\nimport { DefaultToastOptions, Toast, ToastType } from './types';\n\nconst TOAST_LIMIT = 20;\n\nexport enum ActionType {\n ADD_TOAST,\n UPDATE_TOAST,\n UPSERT_TOAST,\n DISMISS_TOAST,\n REMOVE_TOAST,\n START_PAUSE,\n END_PAUSE,\n}\n\ntype Action =\n | {\n type: ActionType.ADD_TOAST;\n toast: Toast;\n }\n | {\n type: ActionType.UPSERT_TOAST;\n toast: Toast;\n }\n | {\n type: ActionType.UPDATE_TOAST;\n toast: Partial<Toast>;\n }\n | {\n type: ActionType.DISMISS_TOAST;\n toastId?: string;\n }\n | {\n type: ActionType.REMOVE_TOAST;\n toastId?: string;\n }\n | {\n type: ActionType.START_PAUSE;\n time: number;\n }\n | {\n type: ActionType.END_PAUSE;\n time: number;\n };\n\ninterface State {\n toasts: Toast[];\n pausedAt: number | undefined;\n}\n\nconst toastTimeouts = new Map<Toast['id'], ReturnType<typeof setTimeout>>();\n\nexport const TOAST_EXPIRE_DISMISS_DELAY = 1000;\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: ActionType.REMOVE_TOAST,\n toastId: toastId,\n });\n }, TOAST_EXPIRE_DISMISS_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nconst clearFromRemoveQueue = (toastId: string) => {\n const timeout = toastTimeouts.get(toastId);\n if (timeout) {\n clearTimeout(timeout);\n }\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case ActionType.ADD_TOAST:\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case ActionType.UPDATE_TOAST:\n // ! Side effects !\n if (action.toast.id) {\n clearFromRemoveQueue(action.toast.id);\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n };\n\n case ActionType.UPSERT_TOAST:\n const { toast } = action;\n return state.toasts.find((t) => t.id === toast.id)\n ? reducer(state, { type: ActionType.UPDATE_TOAST, toast })\n : reducer(state, { type: ActionType.ADD_TOAST, toast });\n\n case ActionType.DISMISS_TOAST:\n const { toastId } = action;\n\n // ! Side effects ! - This could be execrated into a dismissToast() action, but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n visible: false,\n }\n : t\n ),\n };\n case ActionType.REMOVE_TOAST:\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n\n case ActionType.START_PAUSE:\n return {\n ...state,\n pausedAt: action.time,\n };\n\n case ActionType.END_PAUSE:\n const diff = action.time - (state.pausedAt || 0);\n\n return {\n ...state,\n pausedAt: undefined,\n toasts: state.toasts.map((t) => ({\n ...t,\n pauseDuration: t.pauseDuration + diff,\n })),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [], pausedAt: undefined };\n\nexport const dispatch = (action: Action) => {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n};\n\nexport const defaultTimeouts: {\n [key in ToastType]: number;\n} = {\n blank: 4000,\n error: 4000,\n success: 2000,\n loading: Infinity,\n custom: 4000,\n};\n\nexport const useStore = (toastOptions: DefaultToastOptions = {}): State => {\n const [state, setState] = useState<State>(memoryState);\n useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n const mergedToasts = state.toasts.map((t) => ({\n ...toastOptions,\n ...toastOptions[t.type],\n ...t,\n duration:\n t.duration ||\n toastOptions[t.type]?.duration ||\n toastOptions?.duration ||\n defaultTimeouts[t.type],\n style: {\n ...toastOptions.style,\n ...toastOptions[t.type]?.style,\n ...t.style,\n },\n }));\n\n return {\n ...state,\n toasts: mergedToasts,\n };\n};\n","import {\n Renderable,\n Toast,\n ToastOptions,\n ToastType,\n DefaultToastOptions,\n ValueOrFunction,\n resolveValue,\n} from './types';\nimport { genId } from './utils';\nimport { dispatch, ActionType } from './store';\n\ntype Message = ValueOrFunction<Renderable, Toast>;\n\ntype ToastHandler = (message: Message, options?: ToastOptions) => string;\n\nconst createToast = (\n message: Message,\n type: ToastType = 'blank',\n opts?: ToastOptions\n): Toast => ({\n createdAt: Date.now(),\n visible: true,\n type,\n ariaProps: {\n role: 'status',\n 'aria-live': 'polite',\n },\n message,\n pauseDuration: 0,\n ...opts,\n id: opts?.id || genId(),\n});\n\nconst createHandler =\n (type?: ToastType): ToastHandler =>\n (message, options) => {\n const toast = createToast(message, type, options);\n dispatch({ type: ActionType.UPSERT_TOAST, toast });\n return toast.id;\n };\n\nconst toast = (message: Message, opts?: ToastOptions) =>\n createHandler('blank')(message, opts);\n\ntoast.error = createHandler('error');\ntoast.success = createHandler('success');\ntoast.loading = createHandler('loading');\ntoast.custom = createHandler('custom');\n\ntoast.dismiss = (toastId?: string) => {\n dispatch({\n type: ActionType.DISMISS_TOAST,\n toastId,\n });\n};\n\ntoast.remove = (toastId?: string) =>\n dispatch({ type: ActionType.REMOVE_TOAST, toastId });\n\ntoast.promise = <T>(\n promise: Promise<T>,\n msgs: {\n loading: Renderable;\n success: ValueOrFunction<Renderable, T>;\n error: ValueOrFunction<Renderable, any>;\n },\n opts?: DefaultToastOptions\n) => {\n const id = toast.loading(msgs.loading, { ...opts, ...opts?.loading });\n\n promise\n .then((p) => {\n toast.success(resolveValue(msgs.success, p), {\n id,\n ...opts,\n ...opts?.success,\n });\n return p;\n })\n .catch((e) => {\n toast.error(resolveValue(msgs.error, e), {\n id,\n ...opts,\n ...opts?.error,\n });\n });\n\n return promise;\n};\n\nexport { toast };\n","import { useEffect, useCallback } from 'react';\nimport { dispatch, ActionType, useStore } from './store';\nimport { toast } from './toast';\nimport { DefaultToastOptions, Toast, ToastPosition } from './types';\n\nconst updateHeight = (toastId: string, height: number) => {\n dispatch({\n type: ActionType.UPDATE_TOAST,\n toast: { id: toastId, height },\n });\n};\nconst startPause = () => {\n dispatch({\n type: ActionType.START_PAUSE,\n time: Date.now(),\n });\n};\n\nexport const useToaster = (toastOptions?: DefaultToastOptions) => {\n const { toasts, pausedAt } = useStore(toastOptions);\n\n useEffect(() => {\n if (pausedAt) {\n return;\n }\n\n const now = Date.now();\n const timeouts = toasts.map((t) => {\n if (t.duration === Infinity) {\n return;\n }\n\n const durationLeft =\n (t.duration || 0) + t.pauseDuration - (now - t.createdAt);\n\n if (durationLeft < 0) {\n if (t.visible) {\n toast.dismiss(t.id);\n }\n return;\n }\n return setTimeout(() => toast.dismiss(t.id), durationLeft);\n });\n\n return () => {\n timeouts.forEach((timeout) => timeout && clearTimeout(timeout));\n };\n }, [toasts, pausedAt]);\n\n const endPause = useCallback(() => {\n if (pausedAt) {\n dispatch({ type: ActionType.END_PAUSE, time: Date.now() });\n }\n }, [pausedAt]);\n\n const calculateOffset = useCallback(\n (\n toast: Toast,\n opts?: {\n reverseOrder?: boolean;\n gutter?: number;\n defaultPosition?: ToastPosition;\n }\n ) => {\n const { reverseOrder = false, gutter = 8, defaultPosition } = opts || {};\n\n const relevantToasts = toasts.filter(\n (t) =>\n (t.position || defaultPosition) ===\n (toast.position || defaultPosition) && t.height\n );\n const toastIndex = relevantToasts.findIndex((t) => t.id === toast.id);\n const toastsBefore = relevantToasts.filter(\n (toast, i) => i < toastIndex && toast.visible\n ).length;\n\n const offset = relevantToasts\n .filter((t) => t.visible)\n .slice(...(reverseOrder ? [toastsBefore + 1] : [0, toastsBefore]))\n .reduce((acc, t) => acc + (t.height || 0) + gutter, 0);\n\n return offset;\n },\n [toasts]\n );\n\n return {\n toasts,\n handlers: {\n updateHeight,\n startPause,\n endPause,\n calculateOffset,\n },\n };\n};\n","import { styled, keyframes } from 'goober';\n\nconst circleAnimation = keyframes`\nfrom {\n transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n opacity: 1;\n}`;\n\nconst firstLineAnimation = keyframes`\nfrom {\n transform: scale(0);\n opacity: 0;\n}\nto {\n transform: scale(1);\n opacity: 1;\n}`;\n\nconst secondLineAnimation = keyframes`\nfrom {\n transform: scale(0) rotate(90deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(90deg);\n\topacity: 1;\n}`;\n\nexport interface ErrorTheme {\n primary?: string;\n secondary?: string;\n}\n\nexport const ErrorIcon = styled('div')<ErrorTheme>`\n width: 20px;\n opacity: 0;\n height: 20px;\n border-radius: 10px;\n background: ${(p) => p.primary || '#ff4b4b'};\n position: relative;\n transform: rotate(45deg);\n\n animation: ${circleAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n animation-delay: 100ms;\n\n &:after,\n &:before {\n content: '';\n animation: ${firstLineAnimation} 0.15s ease-out forwards;\n animation-delay: 150ms;\n position: absolute;\n border-radius: 3px;\n opacity: 0;\n background: ${(p) => p.secondary || '#fff'};\n bottom: 9px;\n left: 4px;\n height: 2px;\n width: 12px;\n }\n\n &:before {\n animation: ${secondLineAnimation} 0.15s ease-out forwards;\n animation-delay: 180ms;\n transform: rotate(90deg);\n }\n`;\n","import { styled, keyframes } from 'goober';\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`;\n\nexport interface LoaderTheme {\n primary?: string;\n secondary?: string;\n}\n\nexport const LoaderIcon = styled('div')<LoaderTheme>`\n width: 12px;\n height: 12px;\n box-sizing: border-box;\n border: 2px solid;\n border-radius: 100%;\n border-color: ${(p) => p.secondary || '#e0e0e0'};\n border-right-color: ${(p) => p.primary || '#616161'};\n animation: ${rotate} 1s linear infinite;\n`;\n","import { styled, keyframes } from 'goober';\n\nconst circleAnimation = keyframes`\nfrom {\n transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n\topacity: 1;\n}`;\n\nconst checkmarkAnimation = keyframes`\n0% {\n\theight: 0;\n\twidth: 0;\n\topacity: 0;\n}\n40% {\n height: 0;\n\twidth: 6px;\n\topacity: 1;\n}\n100% {\n opacity: 1;\n height: 10px;\n}`;\n\nexport interface CheckmarkTheme {\n primary?: string;\n secondary?: string;\n}\n\nexport const CheckmarkIcon = styled('div')<CheckmarkTheme>`\n width: 20px;\n opacity: 0;\n height: 20px;\n border-radius: 10px;\n background: ${(p) => p.primary || '#61d345'};\n position: relative;\n transform: rotate(45deg);\n\n animation: ${circleAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n animation-delay: 100ms;\n &:after {\n content: '';\n box-sizing: border-box;\n animation: ${checkmarkAnimation} 0.2s ease-out forwards;\n opacity: 0;\n animation-delay: 200ms;\n position: absolute;\n border-right: 2px solid;\n border-bottom: 2px solid;\n border-color: ${(p) => p.secondary || '#fff'};\n bottom: 6px;\n left: 6px;\n height: 10px;\n width: 6px;\n }\n`;\n","import * as React from 'react';\nimport { styled, keyframes } from 'goober';\n\nimport { Toast } from '../core/types';\nimport { ErrorIcon, ErrorTheme } from './error';\nimport { LoaderIcon, LoaderTheme } from './loader';\nimport { CheckmarkIcon, CheckmarkTheme } from './checkmark';\n\nconst StatusWrapper = styled('div')`\n position: absolute;\n`;\n\nconst IndicatorWrapper = styled('div')`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n min-width: 20px;\n min-height: 20px;\n`;\n\nconst enter = keyframes`\nfrom {\n transform: scale(0.6);\n opacity: 0.4;\n}\nto {\n transform: scale(1);\n opacity: 1;\n}`;\n\nexport const AnimatedIconWrapper = styled('div')`\n position: relative;\n transform: scale(0.6);\n opacity: 0.4;\n min-width: 20px;\n animation: ${enter} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n`;\n\nexport type IconThemes = Partial<{\n success: CheckmarkTheme;\n error: ErrorTheme;\n loading: LoaderTheme;\n}>;\n\nexport const ToastIcon: React.FC<{\n toast: Toast;\n}> = ({ toast }) => {\n const { icon, type, iconTheme } = toast;\n if (icon !== undefined) {\n if (typeof icon === 'string') {\n return <AnimatedIconWrapper>{icon}</AnimatedIconWrapper>;\n } else {\n return icon;\n }\n }\n\n if (type === 'blank') {\n return null;\n }\n\n return (\n <IndicatorWrapper>\n <LoaderIcon {...iconTheme} />\n {type !== 'loading' && (\n <StatusWrapper>\n {type === 'error' ? (\n <ErrorIcon {...iconTheme} />\n ) : (\n <CheckmarkIcon {...iconTheme} />\n )}\n </StatusWrapper>\n )}\n </IndicatorWrapper>\n );\n};\n","import * as React from 'react';\nimport { styled, keyframes } from 'goober';\n\nimport { Toast, ToastPosition, resolveValue, Renderable } from '../core/types';\nimport { ToastIcon } from './toast-icon';\nimport { prefersReducedMotion } from '../core/utils';\n\nconst enterAnimation = (factor: number) => `\n0% {transform: translate3d(0,${factor * -200}%,0) scale(.6); opacity:.5;}\n100% {transform: translate3d(0,0,0) scale(1); opacity:1;}\n`;\n\nconst exitAnimation = (factor: number) => `\n0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}\n100% {transform: translate3d(0,${factor * -150}%,-1px) scale(.6); opacity:0;}\n`;\n\nconst fadeInAnimation = `0%{opacity:0;} 100%{opacity:1;}`;\nconst fadeOutAnimation = `0%{opacity:1;} 100%{opacity:0;}`;\n\nconst ToastBarBase = styled('div')`\n display: flex;\n align-items: center;\n background: #fff;\n color: #363636;\n line-height: 1.3;\n will-change: transform;\n box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05);\n max-width: 350px;\n pointer-events: auto;\n padding: 8px 10px;\n border-radius: 8px;\n`;\n\nconst Message = styled('div')`\n display: flex;\n justify-content: center;\n margin: 4px 10px;\n color: inherit;\n flex: 1 1 auto;\n white-space: pre-line;\n`;\n\ninterface ToastBarProps {\n toast: Toast;\n position?: ToastPosition;\n style?: React.CSSProperties;\n children?: (components: {\n icon: Renderable;\n message: Renderable;\n }) => Renderable;\n}\n\nconst getAnimationStyle = (\n position: ToastPosition,\n visible: boolean\n): React.CSSProperties => {\n const top = position.includes('top');\n const factor = top ? 1 : -1;\n\n const [enter, exit] = prefersReducedMotion()\n ? [fadeInAnimation, fadeOutAnimation]\n : [enterAnimation(factor), exitAnimation(factor)];\n\n return {\n animation: visible\n ? `${keyframes(enter)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`\n : `${keyframes(exit)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`,\n };\n};\n\nexport const ToastBar: React.FC<ToastBarProps> = React.memo(\n ({ toast, position, style, children }) => {\n const animationStyle: React.CSSProperties = toast.height\n ? getAnimationStyle(\n toast.position || position || 'top-center',\n toast.visible\n )\n : { opacity: 0 };\n\n const icon = <ToastIcon toast={toast} />;\n const message = (\n <Message {...toast.ariaProps}>\n {resolveValue(toast.message, toast)}\n </Message>\n );\n\n return (\n <ToastBarBase\n className={toast.className}\n style={{\n ...animationStyle,\n ...style,\n ...toast.style,\n }}\n >\n {typeof children === 'function' ? (\n children({\n icon,\n message,\n })\n ) : (\n <>\n {icon}\n {message}\n </>\n )}\n </ToastBarBase>\n );\n }\n);\n","import { css, setup } from 'goober';\nimport * as React from 'react';\nimport {\n resolveValue,\n ToasterProps,\n ToastPosition,\n ToastWrapperProps,\n} from '../core/types';\nimport { useToaster } from '../core/use-toaster';\nimport { prefersReducedMotion } from '../core/utils';\nimport { ToastBar } from './toast-bar';\n\nsetup(React.createElement);\n\nconst ToastWrapper = ({\n id,\n className,\n style,\n onHeightUpdate,\n children,\n}: ToastWrapperProps) => {\n const ref = React.useCallback(\n (el: HTMLElement | null) => {\n if (el) {\n const updateHeight = () => {\n const height = el.getBoundingClientRect().height;\n onHeightUpdate(id, height);\n };\n updateHeight();\n new MutationObserver(updateHeight).observe(el, {\n subtree: true,\n childList: true,\n characterData: true,\n });\n }\n },\n [id, onHeightUpdate]\n );\n\n return (\n <div ref={ref} className={className} style={style}>\n {children}\n </div>\n );\n};\n\nconst getPositionStyle = (\n position: ToastPosition,\n offset: number\n): React.CSSProperties => {\n const top = position.includes('top');\n const verticalStyle: React.CSSProperties = top ? { top: 0 } : { bottom: 0 };\n const horizontalStyle: React.CSSProperties = position.includes('center')\n ? {\n justifyContent: 'center',\n }\n : position.includes('right')\n ? {\n justifyContent: 'flex-end',\n }\n : {};\n return {\n left: 0,\n right: 0,\n display: 'flex',\n position: 'absolute',\n transition: prefersReducedMotion()\n ? undefined\n : `all 230ms cubic-bezier(.21,1.02,.73,1)`,\n transform: `translateY(${offset * (top ? 1 : -1)}px)`,\n ...verticalStyle,\n ...horizontalStyle,\n };\n};\n\nconst activeClass = css`\n z-index: 9999;\n > * {\n pointer-events: auto;\n }\n`;\n\nconst DEFAULT_OFFSET = 16;\n\nexport const Toaster: React.FC<ToasterProps> = ({\n reverseOrder,\n position = 'top-center',\n toastOptions,\n gutter,\n children,\n containerStyle,\n containerClassName,\n}) => {\n const { toasts, handlers } = useToaster(toastOptions);\n\n return (\n <div\n style={{\n position: 'fixed',\n zIndex: 9999,\n top: DEFAULT_OFFSET,\n left: DEFAULT_OFFSET,\n right: DEFAULT_OFFSET,\n bottom: DEFAULT_OFFSET,\n pointerEvents: 'none',\n ...containerStyle,\n }}\n className={containerClassName}\n onMouseEnter={handlers.startPause}\n onMouseLeave={handlers.endPause}\n >\n {toasts.map((t) => {\n const toastPosition = t.position || position;\n const offset = handlers.calculateOffset(t, {\n reverseOrder,\n gutter,\n defaultPosition: position,\n });\n const positionStyle = getPositionStyle(toastPosition, offset);\n\n return (\n <ToastWrapper\n id={t.id}\n key={t.id}\n onHeightUpdate={handlers.updateHeight}\n className={t.visible ? activeClass : ''}\n style={positionStyle}\n >\n {t.type === 'custom' ? (\n resolveValue(t.message, t)\n ) : children ? (\n children(t)\n ) : (\n <ToastBar toast={t} position={toastPosition} />\n )}\n </ToastWrapper>\n );\n })}\n </div>\n );\n};\n","import { toast } from './core/toast';\n\nexport * from './headless';\n\nexport { ToastBar } from './components/toast-bar';\nexport { ToastIcon } from './components/toast-icon';\nexport { Toaster } from './components/toaster';\nexport { CheckmarkIcon } from './components/checkmark';\nexport { ErrorIcon } from './components/error';\nexport { LoaderIcon } from './components/loader';\n\nexport { toast };\nexport default toast;\n","import React, { useEffect, useLayoutEffect, createContext, useContext, useMemo, useRef, createElement } from 'react';\n\n// Shared state between server components and client components\nconst noop = ()=>{};\n// Using noop() as the undefined value as undefined can be replaced\n// by something else. Prettier ignore and extra parentheses are necessary here\n// to ensure that tsc doesn't remove the __NOINLINE__ comment.\n// prettier-ignore\nconst UNDEFINED = /*#__NOINLINE__*/ noop();\nconst OBJECT = Object;\nconst isUndefined = (v)=>v === UNDEFINED;\nconst isFunction = (v)=>typeof v == 'function';\nconst mergeObjects = (a, b)=>({\n ...a,\n ...b\n });\nconst isPromiseLike = (x)=>isFunction(x.then);\n\n// use WeakMap to store the object->key mapping\n// so the objects can be garbage collected.\n// WeakMap uses a hashtable under the hood, so the lookup\n// complexity is almost O(1).\nconst table = new WeakMap();\n// counter of the key\nlet counter = 0;\n// A stable hash implementation that supports:\n// - Fast and ensures unique hash properties\n// - Handles unserializable values\n// - Handles object key ordering\n// - Generates short results\n//\n// This is not a serialization function, and the result is not guaranteed to be\n// parsable.\nconst stableHash = (arg)=>{\n const type = typeof arg;\n const constructor = arg && arg.constructor;\n const isDate = constructor == Date;\n let result;\n let index;\n if (OBJECT(arg) === arg && !isDate && constructor != RegExp) {\n // Object/function, not null/date/regexp. Use WeakMap to store the id first.\n // If it's already hashed, directly return the result.\n result = table.get(arg);\n if (result) return result;\n // Store the hash first for circular reference detection before entering the\n // recursive `stableHash` calls.\n // For other objects like set and map, we use this id directly as the hash.\n result = ++counter + '~';\n table.set(arg, result);\n if (constructor == Array) {\n // Array.\n result = '@';\n for(index = 0; index < arg.length; index++){\n result += stableHash(arg[index]) + ',';\n }\n table.set(arg, result);\n }\n if (constructor == OBJECT) {\n // Object, sort keys.\n result = '#';\n const keys = OBJECT.keys(arg).sort();\n while(!isUndefined(index = keys.pop())){\n if (!isUndefined(arg[index])) {\n result += index + ':' + stableHash(arg[index]) + ',';\n }\n }\n table.set(arg, result);\n }\n } else {\n result = isDate ? arg.toJSON() : type == 'symbol' ? arg.toString() : type == 'string' ? JSON.stringify(arg) : '' + arg;\n }\n return result;\n};\n\n// Global state used to deduplicate requests and store listeners\nconst SWRGlobalState = new WeakMap();\n\nconst EMPTY_CACHE = {};\nconst INITIAL_CACHE = {};\nconst STR_UNDEFINED = 'undefined';\n// NOTE: Use the function to guarantee it's re-evaluated between jsdom and node runtime for tests.\nconst isWindowDefined = typeof window != STR_UNDEFINED;\nconst isDocumentDefined = typeof document != STR_UNDEFINED;\nconst hasRequestAnimationFrame = ()=>isWindowDefined && typeof window['requestAnimationFrame'] != STR_UNDEFINED;\nconst createCacheHelper = (cache, key)=>{\n const state = SWRGlobalState.get(cache);\n return [\n // Getter\n ()=>!isUndefined(key) && cache.get(key) || EMPTY_CACHE,\n // Setter\n (info)=>{\n if (!isUndefined(key)) {\n const prev = cache.get(key);\n // Before writing to the store, we keep the value in the initial cache\n // if it's not there yet.\n if (!(key in INITIAL_CACHE)) {\n INITIAL_CACHE[key] = prev;\n }\n state[5](key, mergeObjects(prev, info), prev || EMPTY_CACHE);\n }\n },\n // Subscriber\n state[6],\n // Get server cache snapshot\n ()=>{\n if (!isUndefined(key)) {\n // If the cache was updated on the client, we return the stored initial value.\n if (key in INITIAL_CACHE) return INITIAL_CACHE[key];\n }\n // If we haven't done any client-side updates, we return the current value.\n return !isUndefined(key) && cache.get(key) || EMPTY_CACHE;\n }\n ];\n} // export { UNDEFINED, OBJECT, isUndefined, isFunction, mergeObjects, isPromiseLike }\n;\n\n/**\n * Due to the bug https://bugs.chromium.org/p/chromium/issues/detail?id=678075,\n * it's not reliable to detect if the browser is currently online or offline\n * based on `navigator.onLine`.\n * As a workaround, we always assume it's online on the first load, and change\n * the status upon `online` or `offline` events.\n */ let online = true;\nconst isOnline = ()=>online;\n// For node and React Native, `add/removeEventListener` doesn't exist on window.\nconst [onWindowEvent, offWindowEvent] = isWindowDefined && window.addEventListener ? [\n window.addEventListener.bind(window),\n window.removeEventListener.bind(window)\n] : [\n noop,\n noop\n];\nconst isVisible = ()=>{\n const visibilityState = isDocumentDefined && document.visibilityState;\n return isUndefined(visibilityState) || visibilityState !== 'hidden';\n};\nconst initFocus = (callback)=>{\n // focus revalidate\n if (isDocumentDefined) {\n document.addEventListener('visibilitychange', callback);\n }\n onWindowEvent('focus', callback);\n return ()=>{\n if (isDocumentDefined) {\n document.removeEventListener('visibilitychange', callback);\n }\n offWindowEvent('focus', callback);\n };\n};\nconst initReconnect = (callback)=>{\n // revalidate on reconnected\n const onOnline = ()=>{\n online = true;\n callback();\n };\n // nothing to revalidate, just update the status\n const onOffline = ()=>{\n online = false;\n };\n onWindowEvent('online', onOnline);\n onWindowEvent('offline', onOffline);\n return ()=>{\n offWindowEvent('online', onOnline);\n offWindowEvent('offline', onOffline);\n };\n};\nconst preset = {\n isOnline,\n isVisible\n};\nconst defaultConfigOptions = {\n initFocus,\n initReconnect\n};\n\nconst IS_REACT_LEGACY = !React.useId;\nconst IS_SERVER = !isWindowDefined || 'Deno' in window;\n// Polyfill requestAnimationFrame\nconst rAF = (f)=>hasRequestAnimationFrame() ? window['requestAnimationFrame'](f) : setTimeout(f, 1);\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\nconst useIsomorphicLayoutEffect = IS_SERVER ? useEffect : useLayoutEffect;\n// This assignment is to extend the Navigator type to use effectiveType.\nconst navigatorConnection = typeof navigator !== 'undefined' && navigator.connection;\n// Adjust the config based on slow connection status (<= 70Kbps).\nconst slowConnection = !IS_SERVER && navigatorConnection && ([\n 'slow-2g',\n '2g'\n].includes(navigatorConnection.effectiveType) || navigatorConnection.saveData);\n\nconst serialize = (key)=>{\n if (isFunction(key)) {\n try {\n key = key();\n } catch (err) {\n // dependencies not ready\n key = '';\n }\n }\n // Use the original key as the argument of fetcher. This can be a string or an\n // array of values.\n const args = key;\n // If key is not falsy, or not an empty array, hash it.\n key = typeof key == 'string' ? key : (Array.isArray(key) ? key.length : key) ? stableHash(key) : '';\n return [\n key,\n args\n ];\n};\n\n// Global timestamp.\nlet __timestamp = 0;\nconst getTimestamp = ()=>++__timestamp;\n\nconst FOCUS_EVENT = 0;\nconst RECONNECT_EVENT = 1;\nconst MUTATE_EVENT = 2;\nconst ERROR_REVALIDATE_EVENT = 3;\n\nvar events = {\n __proto__: null,\n ERROR_REVALIDATE_EVENT: ERROR_REVALIDATE_EVENT,\n FOCUS_EVENT: FOCUS_EVENT,\n MUTATE_EVENT: MUTATE_EVENT,\n RECONNECT_EVENT: RECONNECT_EVENT\n};\n\nasync function internalMutate(...args) {\n const [cache, _key, _data, _opts] = args;\n // When passing as a boolean, it's explicitly used to disable/enable\n // revalidation.\n const options = mergeObjects({\n populateCache: true,\n throwOnError: true\n }, typeof _opts === 'boolean' ? {\n revalidate: _opts\n } : _opts || {});\n let populateCache = options.populateCache;\n const rollbackOnErrorOption = options.rollbackOnError;\n let optimisticData = options.optimisticData;\n const rollbackOnError = (error)=>{\n return typeof rollbackOnErrorOption === 'function' ? rollbackOnErrorOption(error) : rollbackOnErrorOption !== false;\n };\n const throwOnError = options.throwOnError;\n // If the second argument is a key filter, return the mutation results for all\n // filtered keys.\n if (isFunction(_key)) {\n const keyFilter = _key;\n const matchedKeys = [];\n const it = cache.keys();\n for (const key of it){\n if (// Skip the special useSWRInfinite and useSWRSubscription keys.\n !/^\\$(inf|sub)\\$/.test(key) && keyFilter(cache.get(key)._k)) {\n matchedKeys.push(key);\n }\n }\n return Promise.all(matchedKeys.map(mutateByKey));\n }\n return mutateByKey(_key);\n async function mutateByKey(_k) {\n // Serialize key\n const [key] = serialize(_k);\n if (!key) return;\n const [get, set] = createCacheHelper(cache, key);\n const [EVENT_REVALIDATORS, MUTATION, FETCH, PRELOAD] = SWRGlobalState.get(cache);\n const startRevalidate = ()=>{\n const revalidators = EVENT_REVALIDATORS[key];\n const revalidate = isFunction(options.revalidate) ? options.revalidate(get().data, _k) : options.revalidate !== false;\n if (revalidate) {\n // Invalidate the key by deleting the concurrent request markers so new\n // requests will not be deduped.\n delete FETCH[key];\n delete PRELOAD[key];\n if (revalidators && revalidators[0]) {\n return revalidators[0](MUTATE_EVENT).then(()=>get().data);\n }\n }\n return get().data;\n };\n // If there is no new data provided, revalidate the key with current state.\n if (args.length < 3) {\n // Revalidate and broadcast state.\n return startRevalidate();\n }\n let data = _data;\n let error;\n // Update global timestamps.\n const beforeMutationTs = getTimestamp();\n MUTATION[key] = [\n beforeMutationTs,\n 0\n ];\n const hasOptimisticData = !isUndefined(optimisticData);\n const state = get();\n // `displayedData` is the current value on screen. It could be the optimistic value\n // that is going to be overridden by a `committedData`, or get reverted back.\n // `committedData` is the validated value that comes from a fetch or mutation.\n const displayedData = state.data;\n const currentData = state._c;\n const committedData = isUndefined(currentData) ? displayedData : currentData;\n // Do optimistic data update.\n if (hasOptimisticData) {\n optimisticData = isFunction(optimisticData) ? optimisticData(committedData, displayedData) : optimisticData;\n // When we set optimistic data, backup the current committedData data in `_c`.\n set({\n data: optimisticData,\n _c: committedData\n });\n }\n if (isFunction(data)) {\n // `data` is a function, call it passing current cache value.\n try {\n data = data(committedData);\n } catch (err) {\n // If it throws an error synchronously, we shouldn't update the cache.\n error = err;\n }\n }\n // `data` is a promise/thenable, resolve the final data first.\n if (data && isPromiseLike(data)) {\n // This means that the mutation is async, we need to check timestamps to\n // avoid race conditions.\n data = await data.catch((err)=>{\n error = err;\n });\n // Check if other mutations have occurred since we've started this mutation.\n // If there's a race we don't update cache or broadcast the change,\n // just return the data.\n if (beforeMutationTs !== MUTATION[key][0]) {\n if (error) throw error;\n return data;\n } else if (error && hasOptimisticData && rollbackOnError(error)) {\n // Rollback. Always populate the cache in this case but without\n // transforming the data.\n populateCache = true;\n // Reset data to be the latest committed data, and clear the `_c` value.\n set({\n data: committedData,\n _c: UNDEFINED\n });\n }\n }\n // If we should write back the cache after request.\n if (populateCache) {\n if (!error) {\n // Transform the result into data.\n if (isFunction(populateCache)) {\n const populateCachedData = populateCache(data, committedData);\n set({\n data: populateCachedData,\n error: UNDEFINED,\n _c: UNDEFINED\n });\n } else {\n // Only update cached data and reset the error if there's no error. Data can be `undefined` here.\n set({\n data,\n error: UNDEFINED,\n _c: UNDEFINED\n });\n }\n }\n }\n // Reset the timestamp to mark the mutation has ended.\n MUTATION[key][1] = getTimestamp();\n // Update existing SWR Hooks' internal states:\n Promise.resolve(startRevalidate()).then(()=>{\n // The mutation and revalidation are ended, we can clear it since the data is\n // not an optimistic value anymore.\n set({\n _c: UNDEFINED\n });\n });\n // Throw error or return data\n if (error) {\n if (throwOnError) throw error;\n return;\n }\n return data;\n }\n}\n\nconst revalidateAllKeys = (revalidators, type)=>{\n for(const key in revalidators){\n if (revalidators[key][0]) revalidators[key][0](type);\n }\n};\nconst initCache = (provider, options)=>{\n // The global state for a specific provider will be used to deduplicate\n // requests and store listeners. As well as a mutate function that is bound to\n // the cache.\n // The provider's global state might be already initialized. Let's try to get the\n // global state associated with the provider first.\n if (!SWRGlobalState.has(provider)) {\n const opts = mergeObjects(defaultConfigOptions, options);\n // If there's no global state bound to the provider, create a new one with the\n // new mutate function.\n const EVENT_REVALIDATORS = {};\n const mutate = internalMutate.bind(UNDEFINED, provider);\n let unmount = noop;\n const subscriptions = {};\n const subscribe = (key, callback)=>{\n const subs = subscriptions[key] || [];\n subscriptions[key] = subs;\n subs.push(callback);\n return ()=>subs.splice(subs.indexOf(callback), 1);\n };\n const setter = (key, value, prev)=>{\n provider.set(key, value);\n const subs = subscriptions[key];\n if (subs) {\n for (const fn of subs){\n fn(value, prev);\n }\n }\n };\n const initProvider = ()=>{\n if (!SWRGlobalState.has(provider)) {\n // Update the state if it's new, or if the provider has been extended.\n SWRGlobalState.set(provider, [\n EVENT_REVALIDATORS,\n {},\n {},\n {},\n mutate,\n setter,\n subscribe\n ]);\n if (!IS_SERVER) {\n // When listening to the native events for auto revalidations,\n // we intentionally put a delay (setTimeout) here to make sure they are\n // fired after immediate JavaScript executions, which can be\n // React's state updates.\n // This avoids some unnecessary revalidations such as\n // https://github.com/vercel/swr/issues/1680.\n const releaseFocus = opts.initFocus(setTimeout.bind(UNDEFINED, revalidateAllKeys.bind(UNDEFINED, EVENT_REVALIDATORS, FOCUS_EVENT)));\n const releaseReconnect = opts.initReconnect(setTimeout.bind(UNDEFINED, revalidateAllKeys.bind(UNDEFINED, EVENT_REVALIDATORS, RECONNECT_EVENT)));\n unmount = ()=>{\n releaseFocus && releaseFocus();\n releaseReconnect && releaseReconnect();\n // When un-mounting, we need to remove the cache provider from the state\n // storage too because it's a side-effect. Otherwise, when re-mounting we\n // will not re-register those event listeners.\n SWRGlobalState.delete(provider);\n };\n }\n }\n };\n initProvider();\n // This is a new provider, we need to initialize it and setup DOM events\n // listeners for `focus` and `reconnect` actions.\n // We might want to inject an extra layer on top of `provider` in the future,\n // such as key serialization, auto GC, etc.\n // For now, it's just a `Map` interface without any modifications.\n return [\n provider,\n mutate,\n initProvider,\n unmount\n ];\n }\n return [\n provider,\n SWRGlobalState.get(provider)[4]\n ];\n};\n\n// error retry\nconst onErrorRetry = (_, __, config, revalidate, opts)=>{\n const maxRetryCount = config.errorRetryCount;\n const currentRetryCount = opts.retryCount;\n // Exponential backoff\n const timeout = ~~((Math.random() + 0.5) * (1 << (currentRetryCount < 8 ? currentRetryCount : 8))) * config.errorRetryInterval;\n if (!isUndefined(maxRetryCount) && currentRetryCount > maxRetryCount) {\n return;\n }\n setTimeout(revalidate, timeout, opts);\n};\nconst compare = (currentData, newData)=>stableHash(currentData) == stableHash(newData);\n// Default cache provider\nconst [cache, mutate] = initCache(new Map());\n// Default config\nconst defaultConfig = mergeObjects({\n // events\n onLoadingSlow: noop,\n onSuccess: noop,\n onError: noop,\n onErrorRetry,\n onDiscarded: noop,\n // switches\n revalidateOnFocus: true,\n revalidateOnReconnect: true,\n revalidateIfStale: true,\n shouldRetryOnError: true,\n // timeouts\n errorRetryInterval: slowConnection ? 10000 : 5000,\n focusThrottleInterval: 5 * 1000,\n dedupingInterval: 2 * 1000,\n loadingTimeout: slowConnection ? 5000 : 3000,\n // providers\n compare,\n isPaused: ()=>false,\n cache,\n mutate,\n fallback: {}\n}, // use web preset by default\npreset);\n\nconst mergeConfigs = (a, b)=>{\n // Need to create a new object to avoid mutating the original here.\n const v = mergeObjects(a, b);\n // If two configs are provided, merge their `use` and `fallback` options.\n if (b) {\n const { use: u1, fallback: f1 } = a;\n const { use: u2, fallback: f2 } = b;\n if (u1 && u2) {\n v.use = u1.concat(u2);\n }\n if (f1 && f2) {\n v.fallback = mergeObjects(f1, f2);\n }\n }\n return v;\n};\n\nconst SWRConfigContext = createContext({});\nconst SWRConfig = (props)=>{\n const { value } = props;\n const parentConfig = useContext(SWRConfigContext);\n const isFunctionalConfig = isFunction(value);\n const config = useMemo(()=>isFunctionalConfig ? value(parentConfig) : value, [\n isFunctionalConfig,\n parentConfig,\n value\n ]);\n // Extend parent context values and middleware.\n const extendedConfig = useMemo(()=>isFunctionalConfig ? config : mergeConfigs(parentConfig, config), [\n isFunctionalConfig,\n parentConfig,\n config\n ]);\n // Should not use the inherited provider.\n const provider = config && config.provider;\n // initialize the cache only on first access.\n const cacheContextRef = useRef(UNDEFINED);\n if (provider && !cacheContextRef.current) {\n cacheContextRef.current = initCache(provider(extendedConfig.cache || cache), config);\n }\n const cacheContext = cacheContextRef.current;\n // Override the cache if a new provider is given.\n if (cacheContext) {\n extendedConfig.cache = cacheContext[0];\n extendedConfig.mutate = cacheContext[1];\n }\n // Unsubscribe events.\n useIsomorphicLayoutEffect(()=>{\n if (cacheContext) {\n cacheContext[2] && cacheContext[2]();\n return cacheContext[3];\n }\n }, []);\n return createElement(SWRConfigContext.Provider, mergeObjects(props, {\n value: extendedConfig\n }));\n};\n\nconst INFINITE_PREFIX = '$inf$';\n\n// @ts-expect-error\nconst enableDevtools = isWindowDefined && window.__SWR_DEVTOOLS_USE__;\nconst use = enableDevtools ? window.__SWR_DEVTOOLS_USE__ : [];\nconst setupDevTools = ()=>{\n if (enableDevtools) {\n // @ts-expect-error\n window.__SWR_DEVTOOLS_REACT__ = React;\n }\n};\n\nconst normalize = (args)=>{\n return isFunction(args[1]) ? [\n args[0],\n args[1],\n args[2] || {}\n ] : [\n args[0],\n null,\n (args[1] === null ? args[2] : args[1]) || {}\n ];\n};\n\nconst useSWRConfig = ()=>{\n return mergeObjects(defaultConfig, useContext(SWRConfigContext));\n};\n\nconst preload = (key_, fetcher)=>{\n const [key, fnArg] = serialize(key_);\n const [, , , PRELOAD] = SWRGlobalState.get(cache);\n // Prevent preload to be called multiple times before used.\n if (PRELOAD[key]) return PRELOAD[key];\n const req = fetcher(fnArg);\n PRELOAD[key] = req;\n return req;\n};\nconst middleware = (useSWRNext)=>(key_, fetcher_, config)=>{\n // fetcher might be a sync function, so this should not be an async function\n const fetcher = fetcher_ && ((...args)=>{\n const [key] = serialize(key_);\n const [, , , PRELOAD] = SWRGlobalState.get(cache);\n if (key.startsWith(INFINITE_PREFIX)) {\n // we want the infinite fetcher to be called.\n // handling of the PRELOAD cache happens there.\n return fetcher_(...args);\n }\n const req = PRELOAD[key];\n if (isUndefined(req)) return fetcher_(...args);\n delete PRELOAD[key];\n return req;\n });\n return useSWRNext(key_, fetcher, config);\n };\n\nconst BUILT_IN_MIDDLEWARE = use.concat(middleware);\n\n// It's tricky to pass generic types as parameters, so we just directly override\n// the types here.\nconst withArgs = (hook)=>{\n return function useSWRArgs(...args) {\n // Get the default and inherited configuration.\n const fallbackConfig = useSWRConfig();\n // Normalize arguments.\n const [key, fn, _config] = normalize(args);\n // Merge configurations.\n const config = mergeConfigs(fallbackConfig, _config);\n // Apply middleware\n let next = hook;\n const { use } = config;\n const middleware = (use || []).concat(BUILT_IN_MIDDLEWARE);\n for(let i = middleware.length; i--;){\n next = middleware[i](next);\n }\n return next(key, fn || config.fetcher || null, config);\n };\n};\n\n// Add a callback function to a list of keyed callback functions and return\n// the unsubscribe function.\nconst subscribeCallback = (key, callbacks, callback)=>{\n const keyedRevalidators = callbacks[key] || (callbacks[key] = []);\n keyedRevalidators.push(callback);\n return ()=>{\n const index = keyedRevalidators.indexOf(callback);\n if (index >= 0) {\n // O(1): faster than splice\n keyedRevalidators[index] = keyedRevalidators[keyedRevalidators.length - 1];\n keyedRevalidators.pop();\n }\n };\n};\n\n// Create a custom hook with a middleware\nconst withMiddleware = (useSWR, middleware)=>{\n return (...args)=>{\n const [key, fn, config] = normalize(args);\n const uses = (config.use || []).concat(middleware);\n return useSWR(key, fn, {\n ...config,\n use: uses\n });\n };\n};\n\nsetupDevTools();\n\nexport { INFINITE_PREFIX, IS_REACT_LEGACY, IS_SERVER, OBJECT, SWRConfig, SWRGlobalState, UNDEFINED, cache, compare, createCacheHelper, defaultConfig, defaultConfigOptions, getTimestamp, hasRequestAnimationFrame, initCache, internalMutate, isDocumentDefined, isFunction, isPromiseLike, isUndefined, isWindowDefined, mergeConfigs, mergeObjects, mutate, noop, normalize, preload, preset, rAF, events as revalidateEvents, serialize, slowConnection, stableHash, subscribeCallback, useIsomorphicLayoutEffect, useSWRConfig, withArgs, withMiddleware };\n","import 'client-only';\nimport ReactExports, { useRef, useMemo, useCallback, useDebugValue } from 'react';\nimport { useSyncExternalStore } from 'use-sync-external-store/shim/index.js';\nimport { serialize, OBJECT, SWRConfig as SWRConfig$1, defaultConfig, withArgs, SWRGlobalState, createCacheHelper, isUndefined, getTimestamp, UNDEFINED, isFunction, revalidateEvents, internalMutate, useIsomorphicLayoutEffect, subscribeCallback, IS_SERVER, rAF, IS_REACT_LEGACY, mergeObjects } from 'swr/_internal';\nexport { mutate, preload, useSWRConfig } from 'swr/_internal';\n\nconst unstable_serialize = (key)=>serialize(key)[0];\n\n/// <reference types=\"react/experimental\" />\nconst use = ReactExports.use || ((promise)=>{\n if (promise.status === 'pending') {\n throw promise;\n } else if (promise.status === 'fulfilled') {\n return promise.value;\n } else if (promise.status === 'rejected') {\n throw promise.reason;\n } else {\n promise.status = 'pending';\n promise.then((v)=>{\n promise.status = 'fulfilled';\n promise.value = v;\n }, (e)=>{\n promise.status = 'rejected';\n promise.reason = e;\n });\n throw promise;\n }\n});\nconst WITH_DEDUPE = {\n dedupe: true\n};\nconst useSWRHandler = (_key, fetcher, config)=>{\n const { cache, compare, suspense, fallbackData, revalidateOnMount, revalidateIfStale, refreshInterval, refreshWhenHidden, refreshWhenOffline, keepPreviousData } = config;\n const [EVENT_REVALIDATORS, MUTATION, FETCH, PRELOAD] = SWRGlobalState.get(cache);\n // `key` is the identifier of the SWR internal state,\n // `fnArg` is the argument/arguments parsed from the key, which will be passed\n // to the fetcher.\n // All of them are derived from `_key`.\n const [key, fnArg] = serialize(_key);\n // If it's the initial render of this hook.\n const initialMountedRef = useRef(false);\n // If the hook is unmounted already. This will be used to prevent some effects\n // to be called after unmounting.\n const unmountedRef = useRef(false);\n // Refs to keep the key and config.\n const keyRef = useRef(key);\n const fetcherRef = useRef(fetcher);\n const configRef = useRef(config);\n const getConfig = ()=>configRef.current;\n const isActive = ()=>getConfig().isVisible() && getConfig().isOnline();\n const [getCache, setCache, subscribeCache, getInitialCache] = createCacheHelper(cache, key);\n const stateDependencies = useRef({}).current;\n const fallback = isUndefined(fallbackData) ? config.fallback[key] : fallbackData;\n const isEqual = (prev, current)=>{\n for(const _ in stateDependencies){\n const t = _;\n if (t === 'data') {\n if (!compare(prev[t], current[t])) {\n if (!isUndefined(prev[t])) {\n return false;\n }\n if (!compare(returnedData, current[t])) {\n return false;\n }\n }\n } else {\n if (current[t] !== prev[t]) {\n return false;\n }\n }\n }\n return true;\n };\n const getSnapshot = useMemo(()=>{\n const shouldStartRequest = (()=>{\n if (!key) return false;\n if (!fetcher) return false;\n // If `revalidateOnMount` is set, we take the value directly.\n if (!isUndefined(revalidateOnMount)) return revalidateOnMount;\n // If it's paused, we skip revalidation.\n if (getConfig().isPaused()) return false;\n if (suspense) return false;\n if (!isUndefined(revalidateIfStale)) return revalidateIfStale;\n return true;\n })();\n // Get the cache and merge it with expected states.\n const getSelectedCache = (state)=>{\n // We only select the needed fields from the state.\n const snapshot = mergeObjects(state);\n delete snapshot._k;\n if (!shouldStartRequest) {\n return snapshot;\n }\n return {\n isValidating: true,\n isLoading: true,\n ...snapshot\n };\n };\n const cachedData = getCache();\n const initialData = getInitialCache();\n const clientSnapshot = getSelectedCache(cachedData);\n const serverSnapshot = cachedData === initialData ? clientSnapshot : getSelectedCache(initialData);\n // To make sure that we are returning the same object reference to avoid\n // unnecessary re-renders, we keep the previous snapshot and use deep\n // comparison to check if we need to return a new one.\n let memorizedSnapshot = clientSnapshot;\n return [\n ()=>{\n const newSnapshot = getSelectedCache(getCache());\n const compareResult = isEqual(newSnapshot, memorizedSnapshot);\n if (compareResult) {\n // Mentally, we should always return the `memorizedSnapshot` here\n // as there's no change between the new and old snapshots.\n // However, since the `isEqual` function only compares selected fields,\n // the values of the unselected fields might be changed. That's\n // simply because we didn't track them.\n // To support the case in https://github.com/vercel/swr/pull/2576,\n // we need to update these fields in the `memorizedSnapshot` too\n // with direct mutations to ensure the snapshot is always up-to-date\n // even for the unselected fields, but only trigger re-renders when\n // the selected fields are changed.\n memorizedSnapshot.data = newSnapshot.data;\n memorizedSnapshot.isLoading = newSnapshot.isLoading;\n memorizedSnapshot.isValidating = newSnapshot.isValidating;\n memorizedSnapshot.error = newSnapshot.error;\n return memorizedSnapshot;\n } else {\n memorizedSnapshot = newSnapshot;\n return newSnapshot;\n }\n },\n ()=>serverSnapshot\n ];\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n cache,\n key\n ]);\n // Get the current state that SWR should return.\n const cached = useSyncExternalStore(useCallback((callback)=>subscribeCache(key, (current, prev)=>{\n if (!isEqual(prev, current)) callback();\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n cache,\n key\n ]), getSnapshot[0], getSnapshot[1]);\n const isInitialMount = !initialMountedRef.current;\n const hasRevalidator = EVENT_REVALIDATORS[key] && EVENT_REVALIDATORS[key].length > 0;\n const cachedData = cached.data;\n const data = isUndefined(cachedData) ? fallback : cachedData;\n const error = cached.error;\n // Use a ref to store previously returned data. Use the initial data as its initial value.\n const laggyDataRef = useRef(data);\n const returnedData = keepPreviousData ? isUndefined(cachedData) ? laggyDataRef.current : cachedData : data;\n // - Suspense mode and there's stale data for the initial render.\n // - Not suspense mode and there is no fallback data and `revalidateIfStale` is enabled.\n // - `revalidateIfStale` is enabled but `data` is not defined.\n const shouldDoInitialRevalidation = (()=>{\n // if a key already has revalidators and also has error, we should not trigger revalidation\n if (hasRevalidator && !isUndefined(error)) return false;\n // If `revalidateOnMount` is set, we take the value directly.\n if (isInitialMount && !isUndefined(revalidateOnMount)) return revalidateOnMount;\n // If it's paused, we skip revalidation.\n if (getConfig().isPaused()) return false;\n // Under suspense mode, it will always fetch on render if there is no\n // stale data so no need to revalidate immediately mount it again.\n // If data exists, only revalidate if `revalidateIfStale` is true.\n if (suspense) return isUndefined(data) ? false : revalidateIfStale;\n // If there is no stale data, we need to revalidate when mount;\n // If `revalidateIfStale` is set to true, we will always revalidate.\n return isUndefined(data) || revalidateIfStale;\n })();\n // Resolve the default validating state:\n // If it's able to validate, and it should revalidate when mount, this will be true.\n const defaultValidatingState = !!(key && fetcher && isInitialMount && shouldDoInitialRevalidation);\n const isValidating = isUndefined(cached.isValidating) ? defaultValidatingState : cached.isValidating;\n const isLoading = isUndefined(cached.isLoading) ? defaultValidatingState : cached.isLoading;\n // The revalidation function is a carefully crafted wrapper of the original\n // `fetcher`, to correctly handle the many edge cases.\n const revalidate = useCallback(async (revalidateOpts)=>{\n const currentFetcher = fetcherRef.current;\n if (!key || !currentFetcher || unmountedRef.current || getConfig().isPaused()) {\n return false;\n }\n let newData;\n let startAt;\n let loading = true;\n const opts = revalidateOpts || {};\n // If there is no ongoing concurrent request, or `dedupe` is not set, a\n // new request should be initiated.\n const shouldStartNewRequest = !FETCH[key] || !opts.dedupe;\n /*\n For React 17\n Do unmount check for calls:\n If key has changed during the revalidation, or the component has been\n unmounted, old dispatch and old event callbacks should not take any\n effect\n\n For React 18\n only check if key has changed\n https://github.com/reactwg/react-18/discussions/82\n */ const callbackSafeguard = ()=>{\n if (IS_REACT_LEGACY) {\n return !unmountedRef.current && key === keyRef.current && initialMountedRef.current;\n }\n return key === keyRef.current;\n };\n // The final state object when the request finishes.\n const finalState = {\n isValidating: false,\n isLoading: false\n };\n const finishRequestAndUpdateState = ()=>{\n setCache(finalState);\n };\n const cleanupState = ()=>{\n // Check if it's still the same request before deleting it.\n const requestInfo = FETCH[key];\n if (requestInfo && requestInfo[1] === startAt) {\n delete FETCH[key];\n }\n };\n // Start fetching. Change the `isValidating` state, update the cache.\n const initialState = {\n isValidating: true\n };\n // It is in the `isLoading` state, if and only if there is no cached data.\n // This bypasses fallback data and laggy data.\n if (isUndefined(getCache().data)) {\n initialState.isLoading = true;\n }\n try {\n if (shouldStartNewRequest) {\n setCache(initialState);\n // If no cache is being rendered currently (it shows a blank page),\n // we trigger the loading slow event.\n if (config.loadingTimeout && isUndefined(getCache().data)) {\n setTimeout(()=>{\n if (loading && callbackSafeguard()) {\n getConfig().onLoadingSlow(key, config);\n }\n }, config.loadingTimeout);\n }\n // Start the request and save the timestamp.\n // Key must be truthy if entering here.\n FETCH[key] = [\n currentFetcher(fnArg),\n getTimestamp()\n ];\n }\n [newData, startAt] = FETCH[key];\n newData = await newData;\n if (shouldStartNewRequest) {\n // If the request isn't interrupted, clean it up after the\n // deduplication interval.\n setTimeout(cleanupState, config.dedupingInterval);\n }\n // If there're other ongoing request(s), started after the current one,\n // we need to ignore the current one to avoid possible race conditions:\n // req1------------------>res1 (current one)\n // req2---------------->res2\n // the request that fired later will always be kept.\n // The timestamp maybe be `undefined` or a number\n if (!FETCH[key] || FETCH[key][1] !== startAt) {\n if (shouldStartNewRequest) {\n if (callbackSafeguard()) {\n getConfig().onDiscarded(key);\n }\n }\n return false;\n }\n // Clear error.\n finalState.error = UNDEFINED;\n // If there're other mutations(s), that overlapped with the current revalidation:\n // case 1:\n // req------------------>res\n // mutate------>end\n // case 2:\n // req------------>res\n // mutate------>end\n // case 3:\n // req------------------>res\n // mutate-------...---------->\n // we have to ignore the revalidation result (res) because it's no longer fresh.\n // meanwhile, a new revalidation should be triggered when the mutation ends.\n const mutationInfo = MUTATION[key];\n if (!isUndefined(mutationInfo) && // case 1\n (startAt <= mutationInfo[0] || // case 2\n startAt <= mutationInfo[1] || // case 3\n mutationInfo[1] === 0)) {\n finishRequestAndUpdateState();\n if (shouldStartNewRequest) {\n if (callbackSafeguard()) {\n getConfig().onDiscarded(key);\n }\n }\n return false;\n }\n // Deep compare with the latest state to avoid extra re-renders.\n // For local state, compare and assign.\n const cacheData = getCache().data;\n // Since the compare fn could be custom fn\n // cacheData might be different from newData even when compare fn returns True\n finalState.data = compare(cacheData, newData) ? cacheData : newData;\n // Trigger the successful callback if it's the original request.\n if (shouldStartNewRequest) {\n if (callbackSafeguard()) {\n getConfig().onSuccess(newData, key, config);\n }\n }\n } catch (err) {\n cleanupState();\n const currentConfig = getConfig();\n const { shouldRetryOnError } = currentConfig;\n // Not paused, we continue handling the error. Otherwise, discard it.\n if (!currentConfig.isPaused()) {\n // Get a new error, don't use deep comparison for errors.\n finalState.error = err;\n // Error event and retry logic. Only for the actual request, not\n // deduped ones.\n if (shouldStartNewRequest && callbackSafeguard()) {\n currentConfig.onError(err, key, currentConfig);\n if (shouldRetryOnError === true || isFunction(shouldRetryOnError) && shouldRetryOnError(err)) {\n if (!getConfig().revalidateOnFocus || !getConfig().revalidateOnReconnect || isActive()) {\n // If it's inactive, stop. It will auto-revalidate when\n // refocusing or reconnecting.\n // When retrying, deduplication is always enabled.\n currentConfig.onErrorRetry(err, key, currentConfig, (_opts)=>{\n const revalidators = EVENT_REVALIDATORS[key];\n if (revalidators && revalidators[0]) {\n revalidators[0](revalidateEvents.ERROR_REVALIDATE_EVENT, _opts);\n }\n }, {\n retryCount: (opts.retryCount || 0) + 1,\n dedupe: true\n });\n }\n }\n }\n }\n }\n // Mark loading as stopped.\n loading = false;\n // Update the current hook's state.\n finishRequestAndUpdateState();\n return true;\n }, // `setState` is immutable, and `eventsCallback`, `fnArg`, and\n // `keyValidating` are depending on `key`, so we can exclude them from\n // the deps array.\n //\n // FIXME:\n // `fn` and `config` might be changed during the lifecycle,\n // but they might be changed every render like this.\n // `useSWR('key', () => fetch('/api/'), { suspense: true })`\n // So we omit the values from the deps array\n // even though it might cause unexpected behaviors.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n key,\n cache\n ]);\n // Similar to the global mutate but bound to the current cache and key.\n // `cache` isn't allowed to change during the lifecycle.\n const boundMutate = useCallback(// Use callback to make sure `keyRef.current` returns latest result every time\n (...args)=>{\n return internalMutate(cache, keyRef.current, ...args);\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n // The logic for updating refs.\n useIsomorphicLayoutEffect(()=>{\n fetcherRef.current = fetcher;\n configRef.current = config;\n // Handle laggy data updates. If there's cached data of the current key,\n // it'll be the correct reference.\n if (!isUndefined(cachedData)) {\n laggyDataRef.current = cachedData;\n }\n });\n // After mounted or key changed.\n useIsomorphicLayoutEffect(()=>{\n if (!key) return;\n const softRevalidate = revalidate.bind(UNDEFINED, WITH_DEDUPE);\n // Expose revalidators to global event listeners. So we can trigger\n // revalidation from the outside.\n let nextFocusRevalidatedAt = 0;\n const onRevalidate = (type, opts = {})=>{\n if (type == revalidateEvents.FOCUS_EVENT) {\n const now = Date.now();\n if (getConfig().revalidateOnFocus && now > nextFocusRevalidatedAt && isActive()) {\n nextFocusRevalidatedAt = now + getConfig().focusThrottleInterval;\n softRevalidate();\n }\n } else if (type == revalidateEvents.RECONNECT_EVENT) {\n if (getConfig().revalidateOnReconnect && isActive()) {\n softRevalidate();\n }\n } else if (type == revalidateEvents.MUTATE_EVENT) {\n return revalidate();\n } else if (type == revalidateEvents.ERROR_REVALIDATE_EVENT) {\n return revalidate(opts);\n }\n return;\n };\n const unsubEvents = subscribeCallback(key, EVENT_REVALIDATORS, onRevalidate);\n // Mark the component as mounted and update corresponding refs.\n unmountedRef.current = false;\n keyRef.current = key;\n initialMountedRef.current = true;\n // Keep the original key in the cache.\n setCache({\n _k: fnArg\n });\n // Trigger a revalidation\n if (shouldDoInitialRevalidation) {\n if (isUndefined(data) || IS_SERVER) {\n // Revalidate immediately.\n softRevalidate();\n } else {\n // Delay the revalidate if we have data to return so we won't block\n // rendering.\n rAF(softRevalidate);\n }\n }\n return ()=>{\n // Mark it as unmounted.\n unmountedRef.current = true;\n unsubEvents();\n };\n }, [\n key\n ]);\n // Polling\n useIsomorphicLayoutEffect(()=>{\n let timer;\n function next() {\n // Use the passed interval\n // ...or invoke the function with the updated data to get the interval\n const interval = isFunction(refreshInterval) ? refreshInterval(getCache().data) : refreshInterval;\n // We only start the next interval if `refreshInterval` is not 0, and:\n // - `force` is true, which is the start of polling\n // - or `timer` is not 0, which means the effect wasn't canceled\n if (interval && timer !== -1) {\n timer = setTimeout(execute, interval);\n }\n }\n function execute() {\n // Check if it's OK to execute:\n // Only revalidate when the page is visible, online, and not errored.\n if (!getCache().error && (refreshWhenHidden || getConfig().isVisible()) && (refreshWhenOffline || getConfig().isOnline())) {\n revalidate(WITH_DEDUPE).then(next);\n } else {\n // Schedule the next interval to check again.\n next();\n }\n }\n next();\n return ()=>{\n if (timer) {\n clearTimeout(timer);\n timer = -1;\n }\n };\n }, [\n refreshInterval,\n refreshWhenHidden,\n refreshWhenOffline,\n key\n ]);\n // Display debug info in React DevTools.\n useDebugValue(returnedData);\n // In Suspense mode, we can't return the empty `data` state.\n // If there is an `error`, the `error` needs to be thrown to the error boundary.\n // If there is no `error`, the `revalidation` promise needs to be thrown to\n // the suspense boundary.\n if (suspense && isUndefined(data) && key) {\n // SWR should throw when trying to use Suspense on the server with React 18,\n // without providing any initial data. See:\n // https://github.com/vercel/swr/issues/1832\n if (!IS_REACT_LEGACY && IS_SERVER) {\n throw new Error('Fallback data is required when using suspense in SSR.');\n }\n // Always update fetcher and config refs even with the Suspense mode.\n fetcherRef.current = fetcher;\n configRef.current = config;\n unmountedRef.current = false;\n const req = PRELOAD[key];\n if (!isUndefined(req)) {\n const promise = boundMutate(req);\n use(promise);\n }\n if (isUndefined(error)) {\n const promise = revalidate(WITH_DEDUPE);\n if (!isUndefined(returnedData)) {\n promise.status = 'fulfilled';\n promise.value = true;\n }\n use(promise);\n } else {\n throw error;\n }\n }\n return {\n mutate: boundMutate,\n get data () {\n stateDependencies.data = true;\n return returnedData;\n },\n get error () {\n stateDependencies.error = true;\n return error;\n },\n get isValidating () {\n stateDependencies.isValidating = true;\n return isValidating;\n },\n get isLoading () {\n stateDependencies.isLoading = true;\n return isLoading;\n }\n };\n};\nconst SWRConfig = OBJECT.defineProperty(SWRConfig$1, 'defaultValue', {\n value: defaultConfig\n});\n/**\n * A hook to fetch data.\n *\n * @link https://swr.vercel.app\n * @example\n * ```jsx\n * import useSWR from 'swr'\n * function Profile() {\n * const { data, error, isLoading } = useSWR('/api/user', fetcher)\n * if (error) return <div>failed to load</div>\n * if (isLoading) return <div>loading...</div>\n * return <div>hello {data.name}!</div>\n * }\n * ```\n */ const useSWR = withArgs(useSWRHandler);\n\nexport { SWRConfig, useSWR as default, unstable_serialize };\n","// This file is autogenerated. It's used to publish ESM to npm.\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\nvar trimLeft = /^\\s+/;\nvar trimRight = /\\s+$/;\nfunction tinycolor(color, opts) {\n color = color ? color : \"\";\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n var rgb = inputToRGB(color);\n this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) this._r = Math.round(this._r);\n if (this._g < 1) this._g = Math.round(this._g);\n if (this._b < 1) this._b = Math.round(this._b);\n this._ok = rgb.ok;\n}\ntinycolor.prototype = {\n isDark: function isDark() {\n return this.getBrightness() < 128;\n },\n isLight: function isLight() {\n return !this.isDark();\n },\n isValid: function isValid() {\n return this._ok;\n },\n getOriginalInput: function getOriginalInput() {\n return this._originalInput;\n },\n getFormat: function getFormat() {\n return this._format;\n },\n getAlpha: function getAlpha() {\n return this._a;\n },\n getBrightness: function getBrightness() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function getLuminance() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function setAlpha(value) {\n this._a = boundAlpha(value);\n this._roundA = Math.round(100 * this._a) / 100;\n return this;\n },\n toHsv: function toHsv() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v,\n a: this._a\n };\n },\n toHsvString: function toHsvString() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = Math.round(hsv.h * 360),\n s = Math.round(hsv.s * 100),\n v = Math.round(hsv.v * 100);\n return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function toHsl() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return {\n h: hsl.h * 360,\n s: hsl.s,\n l: hsl.l,\n a: this._a\n };\n },\n toHslString: function toHslString() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = Math.round(hsl.h * 360),\n s = Math.round(hsl.s * 100),\n l = Math.round(hsl.l * 100);\n return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function toHex(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function toHexString(allow3Char) {\n return \"#\" + this.toHex(allow3Char);\n },\n toHex8: function toHex8(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function toHex8String(allow4Char) {\n return \"#\" + this.toHex8(allow4Char);\n },\n toRgb: function toRgb() {\n return {\n r: Math.round(this._r),\n g: Math.round(this._g),\n b: Math.round(this._b),\n a: this._a\n };\n },\n toRgbString: function toRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \")\" : \"rgba(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function toPercentageRgb() {\n return {\n r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n a: this._a\n };\n },\n toPercentageRgbString: function toPercentageRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function toName() {\n if (this._a === 0) {\n return \"transparent\";\n }\n if (this._a < 1) {\n return false;\n }\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function toFilter(secondColor) {\n var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n },\n toString: function toString(format) {\n var formatSet = !!format;\n format = format || this._format;\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n },\n clone: function clone() {\n return tinycolor(this.toString());\n },\n _applyModification: function _applyModification(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function lighten() {\n return this._applyModification(_lighten, arguments);\n },\n brighten: function brighten() {\n return this._applyModification(_brighten, arguments);\n },\n darken: function darken() {\n return this._applyModification(_darken, arguments);\n },\n desaturate: function desaturate() {\n return this._applyModification(_desaturate, arguments);\n },\n saturate: function saturate() {\n return this._applyModification(_saturate, arguments);\n },\n greyscale: function greyscale() {\n return this._applyModification(_greyscale, arguments);\n },\n spin: function spin() {\n return this._applyModification(_spin, arguments);\n },\n _applyCombination: function _applyCombination(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function analogous() {\n return this._applyCombination(_analogous, arguments);\n },\n complement: function complement() {\n return this._applyCombination(_complement, arguments);\n },\n monochromatic: function monochromatic() {\n return this._applyCombination(_monochromatic, arguments);\n },\n splitcomplement: function splitcomplement() {\n return this._applyCombination(_splitcomplement, arguments);\n },\n // Disabled until https://github.com/bgrins/TinyColor/issues/254\n // polyad: function (number) {\n // return this._applyCombination(polyad, [number]);\n // },\n triad: function triad() {\n return this._applyCombination(polyad, [3]);\n },\n tetrad: function tetrad() {\n return this._applyCombination(polyad, [4]);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function (color, opts) {\n if (_typeof(color) == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n var rgb = {\n r: 0,\n g: 0,\n b: 0\n };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n if (_typeof(color) == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a\n };\n}\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n v: v\n };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) return false;\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\ntinycolor.random = function () {\n return tinycolor.fromRatio({\n r: Math.random(),\n g: Math.random(),\n b: Math.random()\n });\n};\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction _desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\nfunction _lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\nfunction _brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return tinycolor(rgb);\n}\nfunction _darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction _spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction _complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\nfunction polyad(color, number) {\n if (isNaN(number) || number <= 0) {\n throw new Error(\"Argument to polyad must be a positive number\");\n }\n var hsl = tinycolor(color).toHsl();\n var result = [tinycolor(color)];\n var step = 360 / number;\n for (var i = 1; i < number; i++) {\n result.push(tinycolor({\n h: (hsl.h + i * step) % 360,\n s: hsl.s,\n l: hsl.l\n }));\n }\n return result;\n}\nfunction _splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 72) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 216) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n}\nfunction _analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\nfunction _monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n while (results--) {\n ret.push(tinycolor({\n h: h,\n s: s,\n v: v\n }));\n v = (v + modification) % 1;\n }\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a\n };\n return tinycolor(rgba);\n};\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function (color1, color2) {\n var c1 = tinycolor(color1);\n var c2 = tinycolor(color2);\n return (Math.max(c1.getLuminance(), c2.getLuminance()) + 0.05) / (Math.min(c1.getLuminance(), c2.getLuminance()) + 0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n// the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n// the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n// tinycolor.isReadable(\"#000\", \"#111\") => false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n out = false;\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n if (tinycolor.isReadable(baseColor, bestColor, {\n level: level,\n size: size\n }) || !includeFallbackColors) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n};\n\n// Big List of Colors\n// ------------------\n// <https://www.w3.org/TR/css-color-4/#named-colors>\nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) n = \"100%\";\n var processPercent = isPercentage(n);\n n = Math.min(max, Math.max(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return n % max / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? \"0\" + c : \"\" + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\nvar matchers = function () {\n // <http://www.w3.org/TR/css3-values/#integers>\n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // <http://www.w3.org/TR/css3-values/#number-value>\n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n}();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == \"transparent\") {\n return {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n format: \"name\"\n };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if (match = matchers.rgb.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3]\n };\n }\n if (match = matchers.rgba.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsl.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3]\n };\n }\n if (match = matchers.hsla.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsv.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3]\n };\n }\n if (match = matchers.hsva.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hex8.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex6.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if (match = matchers.hex4.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n a: convertHexToDecimal(match[4] + \"\" + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex3.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n return false;\n}\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\n level: \"AA\",\n size: \"small\"\n };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\n level: level,\n size: size\n };\n}\n\nexport { tinycolor as default };\n","import type { Address } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Account } from '../types.js'\n\nexport type ParseAccountErrorType = ErrorType\n\nexport function parseAccount<accountOrAddress extends Address | Account>(\n account: accountOrAddress,\n): accountOrAddress extends Address ? Account : accountOrAddress {\n if (typeof account === 'string')\n return { address: account, type: 'json-rpc' } as any\n return account as any\n}\n","import type { AbiStateMutability } from '../../abi.js'\nimport { execTyped } from '../../regex.js'\nimport type {\n EventModifier,\n FunctionModifier,\n Modifier,\n} from '../types/signatures.js'\n\n// https://regexr.com/7gmok\nconst errorSignatureRegex =\n /^error (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\\((?<parameters>.*?)\\)$/\nexport function isErrorSignature(signature: string) {\n return errorSignatureRegex.test(signature)\n}\nexport function execErrorSignature(signature: string) {\n return execTyped<{ name: string; parameters: string }>(\n errorSignatureRegex,\n signature,\n )\n}\n\n// https://regexr.com/7gmoq\nconst eventSignatureRegex =\n /^event (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\\((?<parameters>.*?)\\)$/\nexport function isEventSignature(signature: string) {\n return eventSignatureRegex.test(signature)\n}\nexport function execEventSignature(signature: string) {\n return execTyped<{ name: string; parameters: string }>(\n eventSignatureRegex,\n signature,\n )\n}\n\n// https://regexr.com/7gmot\nconst functionSignatureRegex =\n /^function (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\\((?<parameters>.*?)\\)(?: (?<scope>external|public{1}))?(?: (?<stateMutability>pure|view|nonpayable|payable{1}))?(?: returns\\s?\\((?<returns>.*?)\\))?$/\nexport function isFunctionSignature(signature: string) {\n return functionSignatureRegex.test(signature)\n}\nexport function execFunctionSignature(signature: string) {\n return execTyped<{\n name: string\n parameters: string\n stateMutability?: AbiStateMutability\n returns?: string\n }>(functionSignatureRegex, signature)\n}\n\n// https://regexr.com/7gmp3\nconst structSignatureRegex =\n /^struct (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*) \\{(?<properties>.*?)\\}$/\nexport function isStructSignature(signature: string) {\n return structSignatureRegex.test(signature)\n}\nexport function execStructSignature(signature: string) {\n return execTyped<{ name: string; properties: string }>(\n structSignatureRegex,\n signature,\n )\n}\n\n// https://regexr.com/78u01\nconst constructorSignatureRegex =\n /^constructor\\((?<parameters>.*?)\\)(?:\\s(?<stateMutability>payable{1}))?$/\nexport function isConstructorSignature(signature: string) {\n return constructorSignatureRegex.test(signature)\n}\nexport function execConstructorSignature(signature: string) {\n return execTyped<{\n parameters: string\n stateMutability?: Extract<AbiStateMutability, 'payable'>\n }>(constructorSignatureRegex, signature)\n}\n\n// https://regexr.com/7srtn\nconst fallbackSignatureRegex =\n /^fallback\\(\\) external(?:\\s(?<stateMutability>payable{1}))?$/\nexport function isFallbackSignature(signature: string) {\n return fallbackSignatureRegex.test(signature)\n}\n\n// https://regexr.com/78u1k\nconst receiveSignatureRegex = /^receive\\(\\) external payable$/\nexport function isReceiveSignature(signature: string) {\n return receiveSignatureRegex.test(signature)\n}\n\nexport const modifiers = new Set<Modifier>([\n 'memory',\n 'indexed',\n 'storage',\n 'calldata',\n])\nexport const eventModifiers = new Set<EventModifier>(['indexed'])\nexport const functionModifiers = new Set<FunctionModifier>([\n 'calldata',\n 'memory',\n 'storage',\n])\n","import type { OneOf, Pretty } from './types.js'\nimport { version } from './version.js'\n\ntype BaseErrorArgs = Pretty<\n {\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n } & OneOf<{ details?: string | undefined } | { cause?: BaseError | Error }>\n>\n\nexport class BaseError extends Error {\n details: string\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n shortMessage: string\n\n override name = 'AbiTypeError'\n\n constructor(shortMessage: string, args: BaseErrorArgs = {}) {\n const details =\n args.cause instanceof BaseError\n ? args.cause.details\n : args.cause?.message\n ? args.cause.message\n : args.details!\n const docsPath =\n args.cause instanceof BaseError\n ? args.cause.docsPath || args.docsPath\n : args.docsPath\n const message = [\n shortMessage || 'An error occurred.',\n '',\n ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n ...(docsPath ? [`Docs: https://abitype.dev${docsPath}`] : []),\n ...(details ? [`Details: ${details}`] : []),\n `Version: abitype@${version}`,\n ].join('\\n')\n\n super(message)\n\n if (args.cause) this.cause = args.cause\n this.details = details\n this.docsPath = docsPath\n this.metaMessages = args.metaMessages\n this.shortMessage = shortMessage\n }\n}\n","import { BaseError } from '../../errors.js'\n\nexport class InvalidAbiItemError extends BaseError {\n override name = 'InvalidAbiItemError'\n\n constructor({ signature }: { signature: string | object }) {\n super('Failed to parse ABI item.', {\n details: `parseAbiItem(${JSON.stringify(signature, null, 2)})`,\n docsPath: '/api/human#parseabiitem-1',\n })\n }\n}\n\nexport class UnknownTypeError extends BaseError {\n override name = 'UnknownTypeError'\n\n constructor({ type }: { type: string }) {\n super('Unknown type.', {\n metaMessages: [\n `Type \"${type}\" is not a valid ABI type. Perhaps you forgot to include a struct signature?`,\n ],\n })\n }\n}\n\nexport class UnknownSolidityTypeError extends BaseError {\n override name = 'UnknownSolidityTypeError'\n\n constructor({ type }: { type: string }) {\n super('Unknown type.', {\n metaMessages: [`Type \"${type}\" is not a valid ABI type.`],\n })\n }\n}\n","import type { AbiItemType, AbiParameter } from '../../abi.js'\nimport { BaseError } from '../../errors.js'\nimport type { Modifier } from '../types/signatures.js'\n\nexport class InvalidAbiParameterError extends BaseError {\n override name = 'InvalidAbiParameterError'\n\n constructor({ param }: { param: string | object }) {\n super('Failed to parse ABI parameter.', {\n details: `parseAbiParameter(${JSON.stringify(param, null, 2)})`,\n docsPath: '/api/human#parseabiparameter-1',\n })\n }\n}\n\nexport class InvalidAbiParametersError extends BaseError {\n override name = 'InvalidAbiParametersError'\n\n constructor({ params }: { params: string | object }) {\n super('Failed to parse ABI parameters.', {\n details: `parseAbiParameters(${JSON.stringify(params, null, 2)})`,\n docsPath: '/api/human#parseabiparameters-1',\n })\n }\n}\n\nexport class InvalidParameterError extends BaseError {\n override name = 'InvalidParameterError'\n\n constructor({ param }: { param: string }) {\n super('Invalid ABI parameter.', {\n details: param,\n })\n }\n}\n\nexport class SolidityProtectedKeywordError extends BaseError {\n override name = 'SolidityProtectedKeywordError'\n\n constructor({ param, name }: { param: string; name: string }) {\n super('Invalid ABI parameter.', {\n details: param,\n metaMessages: [\n `\"${name}\" is a protected Solidity keyword. More info: https://docs.soliditylang.org/en/latest/cheatsheet.html`,\n ],\n })\n }\n}\n\nexport class InvalidModifierError extends BaseError {\n override name = 'InvalidModifierError'\n\n constructor({\n param,\n type,\n modifier,\n }: {\n param: string\n type?: AbiItemType | 'struct' | undefined\n modifier: Modifier\n }) {\n super('Invalid ABI parameter.', {\n details: param,\n metaMessages: [\n `Modifier \"${modifier}\" not allowed${\n type ? ` in \"${type}\" type` : ''\n }.`,\n ],\n })\n }\n}\n\nexport class InvalidFunctionModifierError extends BaseError {\n override name = 'InvalidFunctionModifierError'\n\n constructor({\n param,\n type,\n modifier,\n }: {\n param: string\n type?: AbiItemType | 'struct' | undefined\n modifier: Modifier\n }) {\n super('Invalid ABI parameter.', {\n details: param,\n metaMessages: [\n `Modifier \"${modifier}\" not allowed${\n type ? ` in \"${type}\" type` : ''\n }.`,\n `Data location can only be specified for array, struct, or mapping types, but \"${modifier}\" was given.`,\n ],\n })\n }\n}\n\nexport class InvalidAbiTypeParameterError extends BaseError {\n override name = 'InvalidAbiTypeParameterError'\n\n constructor({\n abiParameter,\n }: {\n abiParameter: AbiParameter & { indexed?: boolean | undefined }\n }) {\n super('Invalid ABI parameter.', {\n details: JSON.stringify(abiParameter, null, 2),\n metaMessages: ['ABI parameter type is invalid.'],\n })\n }\n}\n","import type { AbiItemType } from '../../abi.js'\nimport { BaseError } from '../../errors.js'\n\nexport class InvalidSignatureError extends BaseError {\n override name = 'InvalidSignatureError'\n\n constructor({\n signature,\n type,\n }: {\n signature: string\n type: AbiItemType | 'struct'\n }) {\n super(`Invalid ${type} signature.`, {\n details: signature,\n })\n }\n}\n\nexport class UnknownSignatureError extends BaseError {\n override name = 'UnknownSignatureError'\n\n constructor({ signature }: { signature: string }) {\n super('Unknown signature.', {\n details: signature,\n })\n }\n}\n\nexport class InvalidStructSignatureError extends BaseError {\n override name = 'InvalidStructSignatureError'\n\n constructor({ signature }: { signature: string }) {\n super('Invalid struct signature.', {\n details: signature,\n metaMessages: ['No properties exist.'],\n })\n }\n}\n","import { BaseError } from '../../errors.js'\n\nexport class CircularReferenceError extends BaseError {\n override name = 'CircularReferenceError'\n\n constructor({ type }: { type: string }) {\n super('Circular reference detected.', {\n metaMessages: [`Struct \"${type}\" is a circular reference.`],\n })\n }\n}\n","import { BaseError } from '../../errors.js'\n\nexport class InvalidParenthesisError extends BaseError {\n override name = 'InvalidParenthesisError'\n\n constructor({ current, depth }: { current: string; depth: number }) {\n super('Unbalanced parentheses.', {\n metaMessages: [\n `\"${current.trim()}\" has too many ${\n depth > 0 ? 'opening' : 'closing'\n } parentheses.`,\n ],\n details: `Depth \"${depth}\"`,\n })\n }\n}\n","import type { AbiItemType, AbiParameter } from '../../abi.js'\n\n/**\n * Gets {@link parameterCache} cache key namespaced by {@link type}. This prevents parameters from being accessible to types that don't allow them (e.g. `string indexed foo` not allowed outside of `type: 'event'`).\n * @param param ABI parameter string\n * @param type ABI parameter type\n * @returns Cache key for {@link parameterCache}\n */\nexport function getParameterCacheKey(\n param: string,\n type?: AbiItemType | 'struct',\n) {\n if (type) return `${type}:${param}`\n return param\n}\n\n/**\n * Basic cache seeded with common ABI parameter strings.\n *\n * **Note: When seeding more parameters, make sure you benchmark performance. The current number is the ideal balance between performance and having an already existing cache.**\n */\nexport const parameterCache = new Map<\n string,\n AbiParameter & { indexed?: boolean }\n>([\n // Unnamed\n ['address', { type: 'address' }],\n ['bool', { type: 'bool' }],\n ['bytes', { type: 'bytes' }],\n ['bytes32', { type: 'bytes32' }],\n ['int', { type: 'int256' }],\n ['int256', { type: 'int256' }],\n ['string', { type: 'string' }],\n ['uint', { type: 'uint256' }],\n ['uint8', { type: 'uint8' }],\n ['uint16', { type: 'uint16' }],\n ['uint24', { type: 'uint24' }],\n ['uint32', { type: 'uint32' }],\n ['uint64', { type: 'uint64' }],\n ['uint96', { type: 'uint96' }],\n ['uint112', { type: 'uint112' }],\n ['uint160', { type: 'uint160' }],\n ['uint192', { type: 'uint192' }],\n ['uint256', { type: 'uint256' }],\n\n // Named\n ['address owner', { type: 'address', name: 'owner' }],\n ['address to', { type: 'address', name: 'to' }],\n ['bool approved', { type: 'bool', name: 'approved' }],\n ['bytes _data', { type: 'bytes', name: '_data' }],\n ['bytes data', { type: 'bytes', name: 'data' }],\n ['bytes signature', { type: 'bytes', name: 'signature' }],\n ['bytes32 hash', { type: 'bytes32', name: 'hash' }],\n ['bytes32 r', { type: 'bytes32', name: 'r' }],\n ['bytes32 root', { type: 'bytes32', name: 'root' }],\n ['bytes32 s', { type: 'bytes32', name: 's' }],\n ['string name', { type: 'string', name: 'name' }],\n ['string symbol', { type: 'string', name: 'symbol' }],\n ['string tokenURI', { type: 'string', name: 'tokenURI' }],\n ['uint tokenId', { type: 'uint256', name: 'tokenId' }],\n ['uint8 v', { type: 'uint8', name: 'v' }],\n ['uint256 balance', { type: 'uint256', name: 'balance' }],\n ['uint256 tokenId', { type: 'uint256', name: 'tokenId' }],\n ['uint256 value', { type: 'uint256', name: 'value' }],\n\n // Indexed\n [\n 'event:address indexed from',\n { type: 'address', name: 'from', indexed: true },\n ],\n ['event:address indexed to', { type: 'address', name: 'to', indexed: true }],\n [\n 'event:uint indexed tokenId',\n { type: 'uint256', name: 'tokenId', indexed: true },\n ],\n [\n 'event:uint256 indexed tokenId',\n { type: 'uint256', name: 'tokenId', indexed: true },\n ],\n])\n","import type {\n AbiItemType,\n AbiType,\n SolidityArray,\n SolidityBytes,\n SolidityString,\n SolidityTuple,\n} from '../../abi.js'\nimport {\n bytesRegex,\n execTyped,\n integerRegex,\n isTupleRegex,\n} from '../../regex.js'\nimport { UnknownSolidityTypeError } from '../errors/abiItem.js'\nimport {\n InvalidFunctionModifierError,\n InvalidModifierError,\n InvalidParameterError,\n SolidityProtectedKeywordError,\n} from '../errors/abiParameter.js'\nimport {\n InvalidSignatureError,\n UnknownSignatureError,\n} from '../errors/signature.js'\nimport { InvalidParenthesisError } from '../errors/splitParameters.js'\nimport type { FunctionModifier, Modifier } from '../types/signatures.js'\nimport type { StructLookup } from '../types/structs.js'\nimport { getParameterCacheKey, parameterCache } from './cache.js'\nimport {\n eventModifiers,\n execConstructorSignature,\n execErrorSignature,\n execEventSignature,\n execFunctionSignature,\n functionModifiers,\n isConstructorSignature,\n isErrorSignature,\n isEventSignature,\n isFallbackSignature,\n isFunctionSignature,\n isReceiveSignature,\n} from './signatures.js'\n\nexport function parseSignature(signature: string, structs: StructLookup = {}) {\n if (isFunctionSignature(signature)) {\n const match = execFunctionSignature(signature)\n if (!match) throw new InvalidSignatureError({ signature, type: 'function' })\n\n const inputParams = splitParameters(match.parameters)\n const inputs = []\n const inputLength = inputParams.length\n for (let i = 0; i < inputLength; i++) {\n inputs.push(\n parseAbiParameter(inputParams[i]!, {\n modifiers: functionModifiers,\n structs,\n type: 'function',\n }),\n )\n }\n\n const outputs = []\n if (match.returns) {\n const outputParams = splitParameters(match.returns)\n const outputLength = outputParams.length\n for (let i = 0; i < outputLength; i++) {\n outputs.push(\n parseAbiParameter(outputParams[i]!, {\n modifiers: functionModifiers,\n structs,\n type: 'function',\n }),\n )\n }\n }\n\n return {\n name: match.name,\n type: 'function',\n stateMutability: match.stateMutability ?? 'nonpayable',\n inputs,\n outputs,\n }\n }\n\n if (isEventSignature(signature)) {\n const match = execEventSignature(signature)\n if (!match) throw new InvalidSignatureError({ signature, type: 'event' })\n\n const params = splitParameters(match.parameters)\n const abiParameters = []\n const length = params.length\n for (let i = 0; i < length; i++) {\n abiParameters.push(\n parseAbiParameter(params[i]!, {\n modifiers: eventModifiers,\n structs,\n type: 'event',\n }),\n )\n }\n return { name: match.name, type: 'event', inputs: abiParameters }\n }\n\n if (isErrorSignature(signature)) {\n const match = execErrorSignature(signature)\n if (!match) throw new InvalidSignatureError({ signature, type: 'error' })\n\n const params = splitParameters(match.parameters)\n const abiParameters = []\n const length = params.length\n for (let i = 0; i < length; i++) {\n abiParameters.push(\n parseAbiParameter(params[i]!, { structs, type: 'error' }),\n )\n }\n return { name: match.name, type: 'error', inputs: abiParameters }\n }\n\n if (isConstructorSignature(signature)) {\n const match = execConstructorSignature(signature)\n if (!match)\n throw new InvalidSignatureError({ signature, type: 'constructor' })\n\n const params = splitParameters(match.parameters)\n const abiParameters = []\n const length = params.length\n for (let i = 0; i < length; i++) {\n abiParameters.push(\n parseAbiParameter(params[i]!, { structs, type: 'constructor' }),\n )\n }\n return {\n type: 'constructor',\n stateMutability: match.stateMutability ?? 'nonpayable',\n inputs: abiParameters,\n }\n }\n\n if (isFallbackSignature(signature)) return { type: 'fallback' }\n if (isReceiveSignature(signature))\n return {\n type: 'receive',\n stateMutability: 'payable',\n }\n\n throw new UnknownSignatureError({ signature })\n}\n\nconst abiParameterWithoutTupleRegex =\n /^(?<type>[a-zA-Z$_][a-zA-Z0-9$_]*)(?<array>(?:\\[\\d*?\\])+?)?(?:\\s(?<modifier>calldata|indexed|memory|storage{1}))?(?:\\s(?<name>[a-zA-Z$_][a-zA-Z0-9$_]*))?$/\nconst abiParameterWithTupleRegex =\n /^\\((?<type>.+?)\\)(?<array>(?:\\[\\d*?\\])+?)?(?:\\s(?<modifier>calldata|indexed|memory|storage{1}))?(?:\\s(?<name>[a-zA-Z$_][a-zA-Z0-9$_]*))?$/\nconst dynamicIntegerRegex = /^u?int$/\n\ntype ParseOptions = {\n modifiers?: Set<Modifier>\n structs?: StructLookup\n type?: AbiItemType | 'struct'\n}\n\nexport function parseAbiParameter(param: string, options?: ParseOptions) {\n // optional namespace cache by `type`\n const parameterCacheKey = getParameterCacheKey(param, options?.type)\n if (parameterCache.has(parameterCacheKey))\n return parameterCache.get(parameterCacheKey)!\n\n const isTuple = isTupleRegex.test(param)\n const match = execTyped<{\n array?: string\n modifier?: Modifier\n name?: string\n type: string\n }>(\n isTuple ? abiParameterWithTupleRegex : abiParameterWithoutTupleRegex,\n param,\n )\n if (!match) throw new InvalidParameterError({ param })\n\n if (match.name && isSolidityKeyword(match.name))\n throw new SolidityProtectedKeywordError({ param, name: match.name })\n\n const name = match.name ? { name: match.name } : {}\n const indexed = match.modifier === 'indexed' ? { indexed: true } : {}\n const structs = options?.structs ?? {}\n let type: string\n let components = {}\n if (isTuple) {\n type = 'tuple'\n const params = splitParameters(match.type)\n const components_ = []\n const length = params.length\n for (let i = 0; i < length; i++) {\n // remove `modifiers` from `options` to prevent from being added to tuple components\n components_.push(parseAbiParameter(params[i]!, { structs }))\n }\n components = { components: components_ }\n } else if (match.type in structs) {\n type = 'tuple'\n components = { components: structs[match.type] }\n } else if (dynamicIntegerRegex.test(match.type)) {\n type = `${match.type}256`\n } else {\n type = match.type\n if (!(options?.type === 'struct') && !isSolidityType(type))\n throw new UnknownSolidityTypeError({ type })\n }\n\n if (match.modifier) {\n // Check if modifier exists, but is not allowed (e.g. `indexed` in `functionModifiers`)\n if (!options?.modifiers?.has?.(match.modifier))\n throw new InvalidModifierError({\n param,\n type: options?.type,\n modifier: match.modifier,\n })\n\n // Check if resolved `type` is valid if there is a function modifier\n if (\n functionModifiers.has(match.modifier as FunctionModifier) &&\n !isValidDataLocation(type, !!match.array)\n )\n throw new InvalidFunctionModifierError({\n param,\n type: options?.type,\n modifier: match.modifier,\n })\n }\n\n const abiParameter = {\n type: `${type}${match.array ?? ''}`,\n ...name,\n ...indexed,\n ...components,\n }\n parameterCache.set(parameterCacheKey, abiParameter)\n return abiParameter\n}\n\n// s/o latika for this\nexport function splitParameters(\n params: string,\n result: string[] = [],\n current = '',\n depth = 0,\n): readonly string[] {\n const length = params.trim().length\n // biome-ignore lint/correctness/noUnreachable: recursive\n for (let i = 0; i < length; i++) {\n const char = params[i]\n const tail = params.slice(i + 1)\n switch (char) {\n case ',':\n return depth === 0\n ? splitParameters(tail, [...result, current.trim()])\n : splitParameters(tail, result, `${current}${char}`, depth)\n case '(':\n return splitParameters(tail, result, `${current}${char}`, depth + 1)\n case ')':\n return splitParameters(tail, result, `${current}${char}`, depth - 1)\n default:\n return splitParameters(tail, result, `${current}${char}`, depth)\n }\n }\n\n if (current === '') return result\n if (depth !== 0) throw new InvalidParenthesisError({ current, depth })\n\n result.push(current.trim())\n return result\n}\n\nexport function isSolidityType(\n type: string,\n): type is Exclude<AbiType, SolidityTuple | SolidityArray> {\n return (\n type === 'address' ||\n type === 'bool' ||\n type === 'function' ||\n type === 'string' ||\n bytesRegex.test(type) ||\n integerRegex.test(type)\n )\n}\n\nconst protectedKeywordsRegex =\n /^(?:after|alias|anonymous|apply|auto|byte|calldata|case|catch|constant|copyof|default|defined|error|event|external|false|final|function|immutable|implements|in|indexed|inline|internal|let|mapping|match|memory|mutable|null|of|override|partial|private|promise|public|pure|reference|relocatable|return|returns|sizeof|static|storage|struct|super|supports|switch|this|true|try|typedef|typeof|var|view|virtual)$/\n\n/** @internal */\nexport function isSolidityKeyword(name: string) {\n return (\n name === 'address' ||\n name === 'bool' ||\n name === 'function' ||\n name === 'string' ||\n name === 'tuple' ||\n bytesRegex.test(name) ||\n integerRegex.test(name) ||\n protectedKeywordsRegex.test(name)\n )\n}\n\n/** @internal */\nexport function isValidDataLocation(\n type: string,\n isArray: boolean,\n): type is Exclude<\n AbiType,\n SolidityString | Extract<SolidityBytes, 'bytes'> | SolidityArray\n> {\n return isArray || type === 'bytes' || type === 'string' || type === 'tuple'\n}\n","import type { AbiParameter } from '../../abi.js'\nimport { execTyped, isTupleRegex } from '../../regex.js'\nimport { UnknownTypeError } from '../errors/abiItem.js'\nimport { InvalidAbiTypeParameterError } from '../errors/abiParameter.js'\nimport {\n InvalidSignatureError,\n InvalidStructSignatureError,\n} from '../errors/signature.js'\nimport { CircularReferenceError } from '../errors/struct.js'\nimport type { StructLookup } from '../types/structs.js'\nimport { execStructSignature, isStructSignature } from './signatures.js'\nimport { isSolidityType, parseAbiParameter } from './utils.js'\n\nexport function parseStructs(signatures: readonly string[]) {\n // Create \"shallow\" version of each struct (and filter out non-structs or invalid structs)\n const shallowStructs: StructLookup = {}\n const signaturesLength = signatures.length\n for (let i = 0; i < signaturesLength; i++) {\n const signature = signatures[i]!\n if (!isStructSignature(signature)) continue\n\n const match = execStructSignature(signature)\n if (!match) throw new InvalidSignatureError({ signature, type: 'struct' })\n\n const properties = match.properties.split(';')\n\n const components: AbiParameter[] = []\n const propertiesLength = properties.length\n for (let k = 0; k < propertiesLength; k++) {\n const property = properties[k]!\n const trimmed = property.trim()\n if (!trimmed) continue\n const abiParameter = parseAbiParameter(trimmed, {\n type: 'struct',\n })\n components.push(abiParameter)\n }\n\n if (!components.length) throw new InvalidStructSignatureError({ signature })\n shallowStructs[match.name] = components\n }\n\n // Resolve nested structs inside each parameter\n const resolvedStructs: StructLookup = {}\n const entries = Object.entries(shallowStructs)\n const entriesLength = entries.length\n for (let i = 0; i < entriesLength; i++) {\n const [name, parameters] = entries[i]!\n resolvedStructs[name] = resolveStructs(parameters, shallowStructs)\n }\n\n return resolvedStructs\n}\n\nconst typeWithoutTupleRegex =\n /^(?<type>[a-zA-Z$_][a-zA-Z0-9$_]*)(?<array>(?:\\[\\d*?\\])+?)?$/\n\nfunction resolveStructs(\n abiParameters: readonly (AbiParameter & { indexed?: true })[],\n structs: StructLookup,\n ancestors = new Set<string>(),\n) {\n const components: AbiParameter[] = []\n const length = abiParameters.length\n for (let i = 0; i < length; i++) {\n const abiParameter = abiParameters[i]!\n const isTuple = isTupleRegex.test(abiParameter.type)\n if (isTuple) components.push(abiParameter)\n else {\n const match = execTyped<{ array?: string; type: string }>(\n typeWithoutTupleRegex,\n abiParameter.type,\n )\n if (!match?.type) throw new InvalidAbiTypeParameterError({ abiParameter })\n\n const { array, type } = match\n if (type in structs) {\n if (ancestors.has(type)) throw new CircularReferenceError({ type })\n\n components.push({\n ...abiParameter,\n type: `tuple${array ?? ''}`,\n components: resolveStructs(\n structs[type] ?? [],\n structs,\n new Set([...ancestors, type]),\n ),\n })\n } else {\n if (isSolidityType(type)) components.push(abiParameter)\n else throw new UnknownTypeError({ type })\n }\n }\n }\n\n return components\n}\n","import type { Abi } from '../abi.js'\nimport type { Error, Filter } from '../types.js'\nimport { isStructSignature } from './runtime/signatures.js'\nimport { parseStructs } from './runtime/structs.js'\nimport { parseSignature } from './runtime/utils.js'\nimport type { Signatures } from './types/signatures.js'\nimport type { ParseStructs } from './types/structs.js'\nimport type { ParseSignature } from './types/utils.js'\n\n/**\n * Parses human-readable ABI into JSON {@link Abi}\n *\n * @param signatures - Human-readable ABI\n * @returns Parsed {@link Abi}\n *\n * @example\n * type Result = ParseAbi<\n * // ^? type Result = readonly [{ name: \"balanceOf\"; type: \"function\"; stateMutability:...\n * [\n * 'function balanceOf(address owner) view returns (uint256)',\n * 'event Transfer(address indexed from, address indexed to, uint256 amount)',\n * ]\n * >\n */\nexport type ParseAbi<signatures extends readonly string[]> =\n string[] extends signatures\n ? Abi // If `T` was not able to be inferred (e.g. just `string[]`), return `Abi`\n : signatures extends readonly string[]\n ? signatures extends Signatures<signatures> // Validate signatures\n ? ParseStructs<signatures> extends infer sructs\n ? {\n [key in keyof signatures]: signatures[key] extends string\n ? ParseSignature<signatures[key], sructs>\n : never\n } extends infer mapped extends readonly unknown[]\n ? Filter<mapped, never> extends infer result\n ? result extends readonly []\n ? never\n : result\n : never\n : never\n : never\n : never\n : never\n\n/**\n * Parses human-readable ABI into JSON {@link Abi}\n *\n * @param signatures - Human-Readable ABI\n * @returns Parsed {@link Abi}\n *\n * @example\n * const abi = parseAbi([\n * // ^? const abi: readonly [{ name: \"balanceOf\"; type: \"function\"; stateMutability:...\n * 'function balanceOf(address owner) view returns (uint256)',\n * 'event Transfer(address indexed from, address indexed to, uint256 amount)',\n * ])\n */\nexport function parseAbi<const signatures extends readonly string[]>(\n signatures: signatures['length'] extends 0\n ? Error<'At least one signature required'>\n : Signatures<signatures> extends signatures\n ? signatures\n : Signatures<signatures>,\n): ParseAbi<signatures> {\n const structs = parseStructs(signatures as readonly string[])\n const abi = []\n const length = signatures.length as number\n for (let i = 0; i < length; i++) {\n const signature = (signatures as readonly string[])[i]!\n if (isStructSignature(signature)) continue\n abi.push(parseSignature(signature, structs))\n }\n return abi as unknown as ParseAbi<signatures>\n}\n","export const aggregate3Signature = '0x82ad56cb'\n","import { type Address, parseAbi } from 'abitype'\n\nimport type { Account } from '../../accounts/types.js'\nimport {\n type ParseAccountErrorType,\n parseAccount,\n} from '../../accounts/utils/parseAccount.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport { multicall3Abi } from '../../constants/abis.js'\nimport { aggregate3Signature } from '../../constants/contract.js'\nimport {\n deploylessCallViaBytecodeBytecode,\n deploylessCallViaFactoryBytecode,\n} from '../../constants/contracts.js'\nimport { BaseError } from '../../errors/base.js'\nimport {\n ChainDoesNotSupportContract,\n ClientChainNotConfiguredError,\n} from '../../errors/chain.js'\nimport {\n CounterfactualDeploymentFailedError,\n RawContractError,\n type RawContractErrorType,\n} from '../../errors/contract.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { RpcTransactionRequest } from '../../types/rpc.js'\nimport type { StateOverride } from '../../types/stateOverride.js'\nimport type { TransactionRequest } from '../../types/transaction.js'\nimport type { ExactPartial, UnionOmit } from '../../types/utils.js'\nimport {\n type DecodeFunctionResultErrorType,\n decodeFunctionResult,\n} from '../../utils/abi/decodeFunctionResult.js'\nimport {\n type EncodeDeployDataErrorType,\n encodeDeployData,\n} from '../../utils/abi/encodeDeployData.js'\nimport {\n type EncodeFunctionDataErrorType,\n encodeFunctionData,\n} from '../../utils/abi/encodeFunctionData.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type GetChainContractAddressErrorType,\n getChainContractAddress,\n} from '../../utils/chain/getChainContractAddress.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\nimport {\n type GetCallErrorReturnType,\n getCallError,\n} from '../../utils/errors/getCallError.js'\nimport { extract } from '../../utils/formatters/extract.js'\nimport {\n type FormatTransactionRequestErrorType,\n type FormattedTransactionRequest,\n formatTransactionRequest,\n} from '../../utils/formatters/transactionRequest.js'\nimport {\n type CreateBatchSchedulerErrorType,\n createBatchScheduler,\n} from '../../utils/promise/createBatchScheduler.js'\nimport {\n type SerializeStateOverrideErrorType,\n serializeStateOverride,\n} from '../../utils/stateOverride.js'\nimport { assertRequest } from '../../utils/transaction/assertRequest.js'\nimport type {\n AssertRequestErrorType,\n AssertRequestParameters,\n} from '../../utils/transaction/assertRequest.js'\n\nexport type CallParameters<\n chain extends Chain | undefined = Chain | undefined,\n> = UnionOmit<FormattedCall<chain>, 'from'> & {\n /** Account attached to the call (msg.sender). */\n account?: Account | Address | undefined\n /** Whether or not to enable multicall batching on this call. */\n batch?: boolean | undefined\n /** Bytecode to perform the call on. */\n code?: Hex | undefined\n /** Contract deployment factory address (ie. Create2 factory, Smart Account factory, etc). */\n factory?: Address | undefined\n /** Calldata to execute on the factory to deploy the contract. */\n factoryData?: Hex | undefined\n /** State overrides for the call. */\n stateOverride?: StateOverride | undefined\n} & (\n | {\n /** The balance of the account at a block number. */\n blockNumber?: bigint | undefined\n blockTag?: undefined\n }\n | {\n blockNumber?: undefined\n /**\n * The balance of the account at a block tag.\n * @default 'latest'\n */\n blockTag?: BlockTag | undefined\n }\n )\ntype FormattedCall<chain extends Chain | undefined = Chain | undefined> =\n FormattedTransactionRequest<chain>\n\nexport type CallReturnType = { data: Hex | undefined }\n\nexport type CallErrorType = GetCallErrorReturnType<\n | ParseAccountErrorType\n | SerializeStateOverrideErrorType\n | AssertRequestErrorType\n | NumberToHexErrorType\n | FormatTransactionRequestErrorType\n | ScheduleMulticallErrorType\n | RequestErrorType\n | ToDeploylessCallViaBytecodeDataErrorType\n | ToDeploylessCallViaFactoryDataErrorType\n>\n\n/**\n * Executes a new message call immediately without submitting a transaction to the network.\n *\n * - Docs: https://viem.sh/docs/actions/public/call\n * - JSON-RPC Methods: [`eth_call`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call)\n *\n * @param client - Client to use\n * @param parameters - {@link CallParameters}\n * @returns The call data. {@link CallReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { call } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const data = await call(client, {\n * account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',\n * data: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * })\n */\nexport async function call<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n args: CallParameters<chain>,\n): Promise<CallReturnType> {\n const {\n account: account_ = client.account,\n batch = Boolean(client.batch?.multicall),\n blockNumber,\n blockTag = 'latest',\n accessList,\n blobs,\n code,\n data: data_,\n factory,\n factoryData,\n gas,\n gasPrice,\n maxFeePerBlobGas,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n stateOverride,\n ...rest\n } = args\n const account = account_ ? parseAccount(account_) : undefined\n\n if (code && (factory || factoryData))\n throw new BaseError(\n 'Cannot provide both `code` & `factory`/`factoryData` as parameters.',\n )\n if (code && to)\n throw new BaseError('Cannot provide both `code` & `to` as parameters.')\n\n // Check if the call is deployless via bytecode.\n const deploylessCallViaBytecode = code && data_\n // Check if the call is deployless via a factory.\n const deploylessCallViaFactory = factory && factoryData && to && data_\n const deploylessCall = deploylessCallViaBytecode || deploylessCallViaFactory\n\n const data = (() => {\n if (deploylessCallViaBytecode)\n return toDeploylessCallViaBytecodeData({\n code,\n data: data_,\n })\n if (deploylessCallViaFactory)\n return toDeploylessCallViaFactoryData({\n data: data_,\n factory,\n factoryData,\n to,\n })\n return data_\n })()\n\n try {\n assertRequest(args as AssertRequestParameters)\n\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n const block = blockNumberHex || blockTag\n\n const rpcStateOverride = serializeStateOverride(stateOverride)\n\n const chainFormat = client.chain?.formatters?.transactionRequest?.format\n const format = chainFormat || formatTransactionRequest\n\n const request = format({\n // Pick out extra data that might exist on the chain's transaction request type.\n ...extract(rest, { format: chainFormat }),\n from: account?.address,\n accessList,\n blobs,\n data,\n gas,\n gasPrice,\n maxFeePerBlobGas,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to: deploylessCall ? undefined : to,\n value,\n } as TransactionRequest) as TransactionRequest\n\n if (batch && shouldPerformMulticall({ request }) && !rpcStateOverride) {\n try {\n return await scheduleMulticall(client, {\n ...request,\n blockNumber,\n blockTag,\n } as unknown as ScheduleMulticallParameters<chain>)\n } catch (err) {\n if (\n !(err instanceof ClientChainNotConfiguredError) &&\n !(err instanceof ChainDoesNotSupportContract)\n )\n throw err\n }\n }\n\n const response = await client.request({\n method: 'eth_call',\n params: rpcStateOverride\n ? [\n request as ExactPartial<RpcTransactionRequest>,\n block,\n rpcStateOverride,\n ]\n : [request as ExactPartial<RpcTransactionRequest>, block],\n })\n if (response === '0x') return { data: undefined }\n return { data: response }\n } catch (err) {\n const data = getRevertErrorData(err)\n\n // Check for CCIP-Read offchain lookup signature.\n const { offchainLookup, offchainLookupSignature } = await import(\n '../../utils/ccip.js'\n )\n if (\n client.ccipRead !== false &&\n data?.slice(0, 10) === offchainLookupSignature &&\n to\n )\n return { data: await offchainLookup(client, { data, to }) }\n\n // Check for counterfactual deployment error.\n if (deploylessCall && data?.slice(0, 10) === '0x101bb98d')\n throw new CounterfactualDeploymentFailedError({ factory })\n\n throw getCallError(err as ErrorType, {\n ...args,\n account,\n chain: client.chain,\n })\n }\n}\n\n// We only want to perform a scheduled multicall if:\n// - The request has calldata,\n// - The request has a target address,\n// - The target address is not already the aggregate3 signature,\n// - The request has no other properties (`nonce`, `gas`, etc cannot be sent with a multicall).\nfunction shouldPerformMulticall({ request }: { request: TransactionRequest }) {\n const { data, to, ...request_ } = request\n if (!data) return false\n if (data.startsWith(aggregate3Signature)) return false\n if (!to) return false\n if (\n Object.values(request_).filter((x) => typeof x !== 'undefined').length > 0\n )\n return false\n return true\n}\n\ntype ScheduleMulticallParameters<chain extends Chain | undefined> = Pick<\n CallParameters<chain>,\n 'blockNumber' | 'blockTag'\n> & {\n data: Hex\n multicallAddress?: Address | undefined\n to: Address\n}\n\ntype ScheduleMulticallErrorType =\n | GetChainContractAddressErrorType\n | NumberToHexErrorType\n | CreateBatchSchedulerErrorType\n | EncodeFunctionDataErrorType\n | DecodeFunctionResultErrorType\n | RawContractErrorType\n | ErrorType\n\nasync function scheduleMulticall<chain extends Chain | undefined>(\n client: Client<Transport>,\n args: ScheduleMulticallParameters<chain>,\n) {\n const { batchSize = 1024, wait = 0 } =\n typeof client.batch?.multicall === 'object' ? client.batch.multicall : {}\n const {\n blockNumber,\n blockTag = 'latest',\n data,\n multicallAddress: multicallAddress_,\n to,\n } = args\n\n let multicallAddress = multicallAddress_\n if (!multicallAddress) {\n if (!client.chain) throw new ClientChainNotConfiguredError()\n\n multicallAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'multicall3',\n })\n }\n\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n const block = blockNumberHex || blockTag\n\n const { schedule } = createBatchScheduler({\n id: `${client.uid}.${block}`,\n wait,\n shouldSplitBatch(args) {\n const size = args.reduce((size, { data }) => size + (data.length - 2), 0)\n return size > batchSize * 2\n },\n fn: async (\n requests: {\n data: Hex\n to: Address\n }[],\n ) => {\n const calls = requests.map((request) => ({\n allowFailure: true,\n callData: request.data,\n target: request.to,\n }))\n\n const calldata = encodeFunctionData({\n abi: multicall3Abi,\n args: [calls],\n functionName: 'aggregate3',\n })\n\n const data = await client.request({\n method: 'eth_call',\n params: [\n {\n data: calldata,\n to: multicallAddress,\n },\n block,\n ],\n })\n\n return decodeFunctionResult({\n abi: multicall3Abi,\n args: [calls],\n functionName: 'aggregate3',\n data: data || '0x',\n })\n },\n })\n\n const [{ returnData, success }] = await schedule({ data, to })\n\n if (!success) throw new RawContractError({ data: returnData })\n if (returnData === '0x') return { data: undefined }\n return { data: returnData }\n}\n\ntype ToDeploylessCallViaBytecodeDataErrorType =\n | EncodeDeployDataErrorType\n | ErrorType\n\nfunction toDeploylessCallViaBytecodeData(parameters: {\n code: Hex\n data: Hex\n}) {\n const { code, data } = parameters\n return encodeDeployData({\n abi: parseAbi(['constructor(bytes, bytes)']),\n bytecode: deploylessCallViaBytecodeBytecode,\n args: [code, data],\n })\n}\n\ntype ToDeploylessCallViaFactoryDataErrorType =\n | EncodeDeployDataErrorType\n | ErrorType\n\nfunction toDeploylessCallViaFactoryData(parameters: {\n data: Hex\n factory: Address\n factoryData: Hex\n to: Address\n}) {\n const { data, factory, factoryData, to } = parameters\n return encodeDeployData({\n abi: parseAbi(['constructor(address, bytes, address, bytes)']),\n bytecode: deploylessCallViaFactoryBytecode,\n args: [to, data, factory, factoryData],\n })\n}\n\n/** @internal */\nexport type GetRevertErrorDataErrorType = ErrorType\n\n/** @internal */\nexport function getRevertErrorData(err: unknown) {\n if (!(err instanceof BaseError)) return undefined\n const error = err.walk() as RawContractError\n return typeof error?.data === 'object' ? error.data?.data : error.data\n}\n","import type { CallParameters } from '../../actions/public/call.js'\nimport type { BaseError } from '../../errors/base.js'\nimport {\n CallExecutionError,\n type CallExecutionErrorType,\n} from '../../errors/contract.js'\nimport { UnknownNodeError } from '../../errors/node.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\n\nimport {\n type GetNodeErrorParameters,\n type GetNodeErrorReturnType,\n getNodeError,\n} from './getNodeError.js'\n\nexport type GetCallErrorReturnType<cause = ErrorType> = Omit<\n CallExecutionErrorType,\n 'cause'\n> & {\n cause: cause | GetNodeErrorReturnType\n}\n\nexport function getCallError<err extends ErrorType<string>>(\n err: err,\n {\n docsPath,\n ...args\n }: CallParameters & {\n chain?: Chain | undefined\n docsPath?: string | undefined\n },\n): GetCallErrorReturnType<err> {\n const cause = (() => {\n const cause = getNodeError(\n err as {} as BaseError,\n args as GetNodeErrorParameters,\n )\n if (cause instanceof UnknownNodeError) return err as {} as BaseError\n return cause\n })()\n return new CallExecutionError(cause, {\n docsPath,\n ...args,\n }) as GetCallErrorReturnType<err>\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport {\n BaseFeeScalarError,\n type BaseFeeScalarErrorType,\n Eip1559FeesNotSupportedError,\n type Eip1559FeesNotSupportedErrorType,\n} from '../../errors/fee.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Account } from '../../types/account.js'\nimport type { Block } from '../../types/block.js'\nimport type {\n Chain,\n ChainEstimateFeesPerGasFnParameters,\n ChainFeesFnParameters,\n GetChainParameter,\n} from '../../types/chain.js'\nimport type {\n FeeValuesEIP1559,\n FeeValuesLegacy,\n FeeValuesType,\n} from '../../types/fee.js'\nimport { getAction } from '../../utils/getAction.js'\nimport type { PrepareTransactionRequestParameters } from '../wallet/prepareTransactionRequest.js'\nimport {\n type EstimateMaxPriorityFeePerGasErrorType,\n internal_estimateMaxPriorityFeePerGas,\n} from './estimateMaxPriorityFeePerGas.js'\nimport { getBlock } from './getBlock.js'\nimport { type GetGasPriceErrorType, getGasPrice } from './getGasPrice.js'\n\nexport type EstimateFeesPerGasParameters<\n chain extends Chain | undefined = Chain | undefined,\n chainOverride extends Chain | undefined = Chain | undefined,\n type extends FeeValuesType = FeeValuesType,\n> = {\n /**\n * The type of fee values to return.\n *\n * - `legacy`: Returns the legacy gas price.\n * - `eip1559`: Returns the max fee per gas and max priority fee per gas.\n *\n * @default 'eip1559'\n */\n type?: type | FeeValuesType | undefined\n} & GetChainParameter<chain, chainOverride>\n\nexport type EstimateFeesPerGasReturnType<\n type extends FeeValuesType = FeeValuesType,\n> =\n | (type extends 'legacy' ? FeeValuesLegacy : never)\n | (type extends 'eip1559' ? FeeValuesEIP1559 : never)\n\nexport type EstimateFeesPerGasErrorType =\n | BaseFeeScalarErrorType\n | EstimateMaxPriorityFeePerGasErrorType\n | GetGasPriceErrorType\n | Eip1559FeesNotSupportedErrorType\n | ErrorType\n\n/**\n * Returns an estimate for the fees per gas (in wei) for a\n * transaction to be likely included in the next block.\n * Defaults to [`chain.fees.estimateFeesPerGas`](/docs/clients/chains#fees-estimatefeespergas) if set.\n *\n * - Docs: https://viem.sh/docs/actions/public/estimateFeesPerGas\n *\n * @param client - Client to use\n * @param parameters - {@link EstimateFeesPerGasParameters}\n * @returns An estimate (in wei) for the fees per gas. {@link EstimateFeesPerGasReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { estimateFeesPerGas } from 'viem/actions'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const maxPriorityFeePerGas = await estimateFeesPerGas(client)\n * // { maxFeePerGas: ..., maxPriorityFeePerGas: ... }\n */\nexport async function estimateFeesPerGas<\n chain extends Chain | undefined,\n chainOverride extends Chain | undefined,\n type extends FeeValuesType = 'eip1559',\n>(\n client: Client<Transport, chain>,\n args?: EstimateFeesPerGasParameters<chain, chainOverride, type> | undefined,\n): Promise<EstimateFeesPerGasReturnType<type>> {\n return internal_estimateFeesPerGas(client, args as any)\n}\n\nexport async function internal_estimateFeesPerGas<\n chain extends Chain | undefined,\n chainOverride extends Chain | undefined,\n type extends FeeValuesType = 'eip1559',\n>(\n client: Client<Transport, chain>,\n args: EstimateFeesPerGasParameters<chain, chainOverride, type> & {\n block?: Block | undefined\n request?: PrepareTransactionRequestParameters<Chain, Account> | undefined\n },\n): Promise<EstimateFeesPerGasReturnType<type>> {\n const {\n block: block_,\n chain = client.chain,\n request,\n type = 'eip1559',\n } = args || {}\n\n const baseFeeMultiplier = await (async () => {\n if (typeof chain?.fees?.baseFeeMultiplier === 'function')\n return chain.fees.baseFeeMultiplier({\n block: block_ as Block,\n client,\n request,\n } as ChainFeesFnParameters)\n return chain?.fees?.baseFeeMultiplier ?? 1.2\n })()\n if (baseFeeMultiplier < 1) throw new BaseFeeScalarError()\n\n const decimals = baseFeeMultiplier.toString().split('.')[1]?.length ?? 0\n const denominator = 10 ** decimals\n const multiply = (base: bigint) =>\n (base * BigInt(Math.ceil(baseFeeMultiplier * denominator))) /\n BigInt(denominator)\n\n const block = block_\n ? block_\n : await getAction(client, getBlock, 'getBlock')({})\n\n if (typeof chain?.fees?.estimateFeesPerGas === 'function') {\n const fees = (await chain.fees.estimateFeesPerGas({\n block: block_ as Block,\n client,\n multiply,\n request,\n type,\n } as ChainEstimateFeesPerGasFnParameters)) as unknown as EstimateFeesPerGasReturnType<type>\n\n if (fees !== null) return fees\n }\n\n if (type === 'eip1559') {\n if (typeof block.baseFeePerGas !== 'bigint')\n throw new Eip1559FeesNotSupportedError()\n\n const maxPriorityFeePerGas =\n typeof request?.maxPriorityFeePerGas === 'bigint'\n ? request.maxPriorityFeePerGas\n : await internal_estimateMaxPriorityFeePerGas(\n client as Client<Transport, Chain>,\n {\n block: block as Block,\n chain,\n request,\n },\n )\n\n const baseFeePerGas = multiply(block.baseFeePerGas)\n const maxFeePerGas =\n request?.maxFeePerGas ?? baseFeePerGas + maxPriorityFeePerGas\n\n return {\n maxFeePerGas,\n maxPriorityFeePerGas,\n } as EstimateFeesPerGasReturnType<type>\n }\n\n const gasPrice =\n request?.gasPrice ??\n multiply(await getAction(client, getGasPrice, 'getGasPrice')({}))\n return {\n gasPrice,\n } as EstimateFeesPerGasReturnType<type>\n}\n","import type { Account } from '../accounts/types.js'\nimport type { EstimateGasParameters } from '../actions/public/estimateGas.js'\nimport type { Chain } from '../types/chain.js'\nimport { formatEther } from '../utils/unit/formatEther.js'\nimport { formatGwei } from '../utils/unit/formatGwei.js'\n\nimport { BaseError } from './base.js'\nimport { prettyPrint } from './transaction.js'\n\nexport type EstimateGasExecutionErrorType = EstimateGasExecutionError & {\n name: 'EstimateGasExecutionError'\n}\nexport class EstimateGasExecutionError extends BaseError {\n override cause: BaseError\n\n constructor(\n cause: BaseError,\n {\n account,\n docsPath,\n chain,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n }: Omit<EstimateGasParameters<any>, 'account'> & {\n account?: Account | undefined\n chain?: Chain | undefined\n docsPath?: string | undefined\n },\n ) {\n const prettyArgs = prettyPrint({\n from: account?.address,\n to,\n value:\n typeof value !== 'undefined' &&\n `${formatEther(value)} ${chain?.nativeCurrency?.symbol || 'ETH'}`,\n data,\n gas,\n gasPrice:\n typeof gasPrice !== 'undefined' && `${formatGwei(gasPrice)} gwei`,\n maxFeePerGas:\n typeof maxFeePerGas !== 'undefined' &&\n `${formatGwei(maxFeePerGas)} gwei`,\n maxPriorityFeePerGas:\n typeof maxPriorityFeePerGas !== 'undefined' &&\n `${formatGwei(maxPriorityFeePerGas)} gwei`,\n nonce,\n })\n\n super(cause.shortMessage, {\n cause,\n docsPath,\n metaMessages: [\n ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n 'Estimate Gas Arguments:',\n prettyArgs,\n ].filter(Boolean) as string[],\n name: 'EstimateGasExecutionError',\n })\n this.cause = cause\n }\n}\n","import type { Address } from 'abitype'\nimport type { Account } from '../../accounts/types.js'\nimport {\n type ParseAccountErrorType,\n parseAccount,\n} from '../../accounts/utils/parseAccount.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport { BaseError } from '../../errors/base.js'\nimport {\n type RecoverAuthorizationAddressErrorType,\n recoverAuthorizationAddress,\n} from '../../experimental/eip7702/utils/recoverAuthorizationAddress.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { StateOverride } from '../../types/stateOverride.js'\nimport type { TransactionRequest } from '../../types/transaction.js'\nimport type { UnionOmit } from '../../types/utils.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\nimport {\n type GetEstimateGasErrorReturnType,\n getEstimateGasError,\n} from '../../utils/errors/getEstimateGasError.js'\nimport { extract } from '../../utils/formatters/extract.js'\nimport {\n type FormattedTransactionRequest,\n formatTransactionRequest,\n} from '../../utils/formatters/transactionRequest.js'\nimport { serializeStateOverride } from '../../utils/stateOverride.js'\nimport {\n type AssertRequestErrorType,\n type AssertRequestParameters,\n assertRequest,\n} from '../../utils/transaction/assertRequest.js'\nimport {\n type PrepareTransactionRequestParameters,\n prepareTransactionRequest,\n} from '../wallet/prepareTransactionRequest.js'\nimport { getBalance } from './getBalance.js'\n\nexport type EstimateGasParameters<\n chain extends Chain | undefined = Chain | undefined,\n> = UnionOmit<FormattedEstimateGas<chain>, 'from'> & {\n account?: Account | Address | undefined\n stateOverride?: StateOverride | undefined\n} & (\n | {\n /** The balance of the account at a block number. */\n blockNumber?: bigint | undefined\n blockTag?: undefined\n }\n | {\n blockNumber?: undefined\n /**\n * The balance of the account at a block tag.\n * @default 'latest'\n */\n blockTag?: BlockTag | undefined\n }\n )\ntype FormattedEstimateGas<chain extends Chain | undefined = Chain | undefined> =\n FormattedTransactionRequest<chain>\n\nexport type EstimateGasReturnType = bigint\n\nexport type EstimateGasErrorType = GetEstimateGasErrorReturnType<\n | ParseAccountErrorType\n | NumberToHexErrorType\n | RequestErrorType\n | RecoverAuthorizationAddressErrorType\n | AssertRequestErrorType\n>\n\n/**\n * Estimates the gas necessary to complete a transaction without submitting it to the network.\n *\n * - Docs: https://viem.sh/docs/actions/public/estimateGas\n * - JSON-RPC Methods: [`eth_estimateGas`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_estimategas)\n *\n * @param client - Client to use\n * @param parameters - {@link EstimateGasParameters}\n * @returns The gas estimate (in wei). {@link EstimateGasReturnType}\n *\n * @example\n * import { createPublicClient, http, parseEther } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { estimateGas } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const gasEstimate = await estimateGas(client, {\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * value: parseEther('1'),\n * })\n */\nexport async function estimateGas<\n chain extends Chain | undefined,\n account extends Account | undefined = undefined,\n>(\n client: Client<Transport, chain, account>,\n args: EstimateGasParameters<chain>,\n): Promise<EstimateGasReturnType> {\n const { account: account_ = client.account } = args\n const account = account_ ? parseAccount(account_) : undefined\n\n try {\n const {\n accessList,\n authorizationList,\n blobs,\n blobVersionedHashes,\n blockNumber,\n blockTag,\n data,\n gas,\n gasPrice,\n maxFeePerBlobGas,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n value,\n stateOverride,\n ...rest\n } = (await prepareTransactionRequest(client, {\n ...args,\n parameters:\n // Some RPC Providers do not compute versioned hashes from blobs. We will need\n // to compute them.\n account?.type === 'local' ? undefined : ['blobVersionedHashes'],\n } as PrepareTransactionRequestParameters)) as EstimateGasParameters\n\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n const block = blockNumberHex || blockTag\n\n const rpcStateOverride = serializeStateOverride(stateOverride)\n\n const to = await (async () => {\n // If `to` exists on the parameters, use that.\n if (rest.to) return rest.to\n\n // If no `to` exists, and we are sending a EIP-7702 transaction, use the\n // address of the first authorization in the list.\n if (authorizationList && authorizationList.length > 0)\n return await recoverAuthorizationAddress({\n authorization: authorizationList[0],\n }).catch(() => {\n throw new BaseError(\n '`to` is required. Could not infer from `authorizationList`',\n )\n })\n\n // Otherwise, we are sending a deployment transaction.\n return undefined\n })()\n\n assertRequest(args as AssertRequestParameters)\n\n const chainFormat = client.chain?.formatters?.transactionRequest?.format\n const format = chainFormat || formatTransactionRequest\n\n const request = format({\n // Pick out extra data that might exist on the chain's transaction request type.\n ...extract(rest, { format: chainFormat }),\n from: account?.address,\n accessList,\n authorizationList,\n blobs,\n blobVersionedHashes,\n data,\n gas,\n gasPrice,\n maxFeePerBlobGas,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n } as TransactionRequest)\n\n function estimateGas_rpc(parameters: {\n block: any\n request: any\n rpcStateOverride: any\n }) {\n const { block, request, rpcStateOverride } = parameters\n return client.request({\n method: 'eth_estimateGas',\n params: rpcStateOverride\n ? [request, block ?? 'latest', rpcStateOverride]\n : block\n ? [request, block]\n : [request],\n })\n }\n\n let estimate = BigInt(\n await estimateGas_rpc({ block, request, rpcStateOverride }),\n )\n\n // TODO(7702): Remove this once https://github.com/ethereum/execution-apis/issues/561 is resolved.\n // Authorization list schema is not implemented on JSON-RPC spec yet, so we need to\n // manually estimate the gas.\n if (authorizationList) {\n const value = await getBalance(client, { address: request.from })\n const estimates = await Promise.all(\n authorizationList.map(async (authorization) => {\n const { contractAddress } = authorization\n const estimate = await estimateGas_rpc({\n block,\n request: {\n authorizationList: undefined,\n data,\n from: account?.address,\n to: contractAddress,\n value: numberToHex(value),\n },\n rpcStateOverride,\n }).catch(() => 100_000n)\n return 2n * BigInt(estimate)\n }),\n )\n estimate += estimates.reduce((acc, curr) => acc + curr, 0n)\n }\n\n return estimate\n } catch (err) {\n throw getEstimateGasError(err as BaseError, {\n ...args,\n account,\n chain: client.chain,\n })\n }\n}\n","import type { Account } from '../../accounts/types.js'\nimport type { EstimateGasParameters } from '../../actions/public/estimateGas.js'\nimport type { BaseError } from '../../errors/base.js'\nimport {\n EstimateGasExecutionError,\n type EstimateGasExecutionErrorType,\n} from '../../errors/estimateGas.js'\nimport { UnknownNodeError } from '../../errors/node.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\n\nimport {\n type GetNodeErrorParameters,\n type GetNodeErrorReturnType,\n getNodeError,\n} from './getNodeError.js'\n\nexport type GetEstimateGasErrorReturnType<cause = ErrorType> = Omit<\n EstimateGasExecutionErrorType,\n 'cause'\n> & { cause: cause | GetNodeErrorReturnType }\n\nexport function getEstimateGasError<err extends ErrorType<string>>(\n err: err,\n {\n docsPath,\n ...args\n }: Omit<EstimateGasParameters, 'account'> & {\n account?: Account | undefined\n chain?: Chain | undefined\n docsPath?: string | undefined\n },\n): GetEstimateGasErrorReturnType<err> {\n const cause = (() => {\n const cause = getNodeError(\n err as {} as BaseError,\n args as GetNodeErrorParameters,\n )\n if (cause instanceof UnknownNodeError) return err as {} as BaseError\n return cause\n })()\n return new EstimateGasExecutionError(cause, {\n docsPath,\n ...args,\n }) as GetEstimateGasErrorReturnType<err>\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport {\n Eip1559FeesNotSupportedError,\n type Eip1559FeesNotSupportedErrorType,\n} from '../../errors/fee.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Account } from '../../types/account.js'\nimport type { Block } from '../../types/block.js'\nimport type { Chain, ChainFeesFnParameters } from '../../types/chain.js'\nimport type { GetChainParameter } from '../../types/chain.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type HexToBigIntErrorType,\n hexToBigInt,\n} from '../../utils/encoding/fromHex.js'\nimport { getAction } from '../../utils/getAction.js'\nimport type { PrepareTransactionRequestParameters } from '../wallet/prepareTransactionRequest.js'\nimport { type GetBlockErrorType, getBlock } from './getBlock.js'\nimport { type GetGasPriceErrorType, getGasPrice } from './getGasPrice.js'\n\nexport type EstimateMaxPriorityFeePerGasParameters<\n chain extends Chain | undefined = Chain | undefined,\n chainOverride extends Chain | undefined = Chain | undefined,\n> = GetChainParameter<chain, chainOverride>\n\nexport type EstimateMaxPriorityFeePerGasReturnType = bigint\n\nexport type EstimateMaxPriorityFeePerGasErrorType =\n | GetBlockErrorType\n | HexToBigIntErrorType\n | RequestErrorType\n | GetBlockErrorType\n | GetGasPriceErrorType\n | Eip1559FeesNotSupportedErrorType\n | ErrorType\n\n/**\n * Returns an estimate for the max priority fee per gas (in wei) for a\n * transaction to be likely included in the next block.\n * Defaults to [`chain.fees.defaultPriorityFee`](/docs/clients/chains#fees-defaultpriorityfee) if set.\n *\n * - Docs: https://viem.sh/docs/actions/public/estimateMaxPriorityFeePerGas\n *\n * @param client - Client to use\n * @returns An estimate (in wei) for the max priority fee per gas. {@link EstimateMaxPriorityFeePerGasReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { estimateMaxPriorityFeePerGas } from 'viem/actions'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const maxPriorityFeePerGas = await estimateMaxPriorityFeePerGas(client)\n * // 10000000n\n */\nexport async function estimateMaxPriorityFeePerGas<\n chain extends Chain | undefined,\n chainOverride extends Chain | undefined,\n>(\n client: Client<Transport, chain>,\n args?:\n | EstimateMaxPriorityFeePerGasParameters<chain, chainOverride>\n | undefined,\n): Promise<EstimateMaxPriorityFeePerGasReturnType> {\n return internal_estimateMaxPriorityFeePerGas(client, args as any)\n}\n\nexport async function internal_estimateMaxPriorityFeePerGas<\n chain extends Chain | undefined,\n chainOverride extends Chain | undefined,\n>(\n client: Client<Transport, chain>,\n args: EstimateMaxPriorityFeePerGasParameters<chain, chainOverride> & {\n block?: Block | undefined\n request?:\n | PrepareTransactionRequestParameters<\n chain,\n Account | undefined,\n chainOverride\n >\n | undefined\n },\n): Promise<EstimateMaxPriorityFeePerGasReturnType> {\n const { block: block_, chain = client.chain, request } = args || {}\n\n try {\n const maxPriorityFeePerGas =\n chain?.fees?.maxPriorityFeePerGas ?? chain?.fees?.defaultPriorityFee\n\n if (typeof maxPriorityFeePerGas === 'function') {\n const block =\n block_ || (await getAction(client, getBlock, 'getBlock')({}))\n const maxPriorityFeePerGas_ = await maxPriorityFeePerGas({\n block,\n client,\n request,\n } as ChainFeesFnParameters)\n if (maxPriorityFeePerGas_ === null) throw new Error()\n return maxPriorityFeePerGas_\n }\n\n if (typeof maxPriorityFeePerGas !== 'undefined') return maxPriorityFeePerGas\n\n const maxPriorityFeePerGasHex = await client.request({\n method: 'eth_maxPriorityFeePerGas',\n })\n return hexToBigInt(maxPriorityFeePerGasHex)\n } catch {\n // If the RPC Provider does not support `eth_maxPriorityFeePerGas`\n // fall back to calculating it manually via `gasPrice - baseFeePerGas`.\n // See: https://github.com/ethereum/pm/issues/328#:~:text=eth_maxPriorityFeePerGas%20after%20London%20will%20effectively%20return%20eth_gasPrice%20%2D%20baseFee\n const [block, gasPrice] = await Promise.all([\n block_\n ? Promise.resolve(block_)\n : getAction(client, getBlock, 'getBlock')({}),\n getAction(client, getGasPrice, 'getGasPrice')({}),\n ])\n\n if (typeof block.baseFeePerGas !== 'bigint')\n throw new Eip1559FeesNotSupportedError()\n\n const maxPriorityFeePerGas = gasPrice - block.baseFeePerGas\n\n if (maxPriorityFeePerGas < 0n) return 0n\n return maxPriorityFeePerGas\n }\n}\n","import type { Address } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\n\nexport type GetBalanceParameters = {\n /** The address of the account. */\n address: Address\n} & (\n | {\n /** The balance of the account at a block number. */\n blockNumber?: bigint | undefined\n blockTag?: undefined\n }\n | {\n blockNumber?: undefined\n /** The balance of the account at a block tag. */\n blockTag?: BlockTag | undefined\n }\n)\n\nexport type GetBalanceReturnType = bigint\n\nexport type GetBalanceErrorType =\n | NumberToHexErrorType\n | RequestErrorType\n | ErrorType\n\n/**\n * Returns the balance of an address in wei.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBalance\n * - JSON-RPC Methods: [`eth_getBalance`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getbalance)\n *\n * You can convert the balance to ether units with [`formatEther`](https://viem.sh/docs/utilities/formatEther).\n *\n * ```ts\n * const balance = await getBalance(client, {\n * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * blockTag: 'safe'\n * })\n * const balanceAsEther = formatEther(balance)\n * // \"6.942\"\n * ```\n *\n * @param client - Client to use\n * @param parameters - {@link GetBalanceParameters}\n * @returns The balance of the address in wei. {@link GetBalanceReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBalance } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const balance = await getBalance(client, {\n * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n * // 10000000000000000000000n (wei)\n */\nexport async function getBalance<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n { address, blockNumber, blockTag = 'latest' }: GetBalanceParameters,\n): Promise<GetBalanceReturnType> {\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n\n const balance = await client.request({\n method: 'eth_getBalance',\n params: [address, blockNumberHex || blockTag],\n })\n return BigInt(balance)\n}\n","import type { Account } from '../../accounts/types.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport {\n BlockNotFoundError,\n type BlockNotFoundErrorType,\n} from '../../errors/block.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Hash } from '../../types/misc.js'\nimport type { RpcBlock } from '../../types/rpc.js'\nimport type { Prettify } from '../../types/utils.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\nimport {\n type FormattedBlock,\n formatBlock,\n} from '../../utils/formatters/block.js'\n\nexport type GetBlockParameters<\n includeTransactions extends boolean = false,\n blockTag extends BlockTag = 'latest',\n> = {\n /** Whether or not to include transaction data in the response. */\n includeTransactions?: includeTransactions | undefined\n} & (\n | {\n /** Hash of the block. */\n blockHash?: Hash | undefined\n blockNumber?: undefined\n blockTag?: undefined\n }\n | {\n blockHash?: undefined\n /** The block number. */\n blockNumber?: bigint | undefined\n blockTag?: undefined\n }\n | {\n blockHash?: undefined\n blockNumber?: undefined\n /**\n * The block tag.\n * @default 'latest'\n */\n blockTag?: blockTag | BlockTag | undefined\n }\n)\n\nexport type GetBlockReturnType<\n chain extends Chain | undefined = undefined,\n includeTransactions extends boolean = false,\n blockTag extends BlockTag = 'latest',\n> = Prettify<FormattedBlock<chain, includeTransactions, blockTag>>\n\nexport type GetBlockErrorType =\n | BlockNotFoundErrorType\n | NumberToHexErrorType\n | RequestErrorType\n | ErrorType\n\n/**\n * Returns information about a block at a block number, hash, or tag.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBlock\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks_fetching-blocks\n * - JSON-RPC Methods:\n * - Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) for `blockNumber` & `blockTag`.\n * - Calls [`eth_getBlockByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbyhash) for `blockHash`.\n *\n * @param client - Client to use\n * @param parameters - {@link GetBlockParameters}\n * @returns Information about the block. {@link GetBlockReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBlock } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const block = await getBlock(client)\n */\nexport async function getBlock<\n chain extends Chain | undefined,\n account extends Account | undefined,\n includeTransactions extends boolean = false,\n blockTag extends BlockTag = 'latest',\n>(\n client: Client<Transport, chain, account>,\n {\n blockHash,\n blockNumber,\n blockTag: blockTag_,\n includeTransactions: includeTransactions_,\n }: GetBlockParameters<includeTransactions, blockTag> = {},\n): Promise<GetBlockReturnType<chain, includeTransactions, blockTag>> {\n const blockTag = blockTag_ ?? 'latest'\n const includeTransactions = includeTransactions_ ?? false\n\n const blockNumberHex =\n blockNumber !== undefined ? numberToHex(blockNumber) : undefined\n\n let block: RpcBlock | null = null\n if (blockHash) {\n block = await client.request(\n {\n method: 'eth_getBlockByHash',\n params: [blockHash, includeTransactions],\n },\n { dedupe: true },\n )\n } else {\n block = await client.request(\n {\n method: 'eth_getBlockByNumber',\n params: [blockNumberHex || blockTag, includeTransactions],\n },\n { dedupe: Boolean(blockNumberHex) },\n )\n }\n\n if (!block) throw new BlockNotFoundError({ blockHash, blockNumber })\n\n const format = client.chain?.formatters?.block?.format || formatBlock\n return format(block)\n}\n","import type { Account } from '../../accounts/types.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type HexToNumberErrorType,\n hexToNumber,\n} from '../../utils/encoding/fromHex.js'\n\nexport type GetChainIdReturnType = number\n\nexport type GetChainIdErrorType =\n | HexToNumberErrorType\n | RequestErrorType\n | ErrorType\n\n/**\n * Returns the chain ID associated with the current network.\n *\n * - Docs: https://viem.sh/docs/actions/public/getChainId\n * - JSON-RPC Methods: [`eth_chainId`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_chainid)\n *\n * @param client - Client to use\n * @returns The current chain ID. {@link GetChainIdReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getChainId } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const chainId = await getChainId(client)\n * // 1\n */\nexport async function getChainId<\n chain extends Chain | undefined,\n account extends Account | undefined,\n>(client: Client<Transport, chain, account>): Promise<GetChainIdReturnType> {\n const chainIdHex = await client.request(\n {\n method: 'eth_chainId',\n },\n { dedupe: true },\n )\n return hexToNumber(chainIdHex)\n}\n","import type { Account } from '../../accounts/types.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\n\nexport type GetGasPriceReturnType = bigint\n\nexport type GetGasPriceErrorType = RequestErrorType | ErrorType\n\n/**\n * Returns the current price of gas (in wei).\n *\n * - Docs: https://viem.sh/docs/actions/public/getGasPrice\n * - JSON-RPC Methods: [`eth_gasPrice`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gasprice)\n *\n * @param client - Client to use\n * @returns The gas price (in wei). {@link GetGasPriceReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getGasPrice } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const gasPrice = await getGasPrice(client)\n */\nexport async function getGasPrice<\n chain extends Chain | undefined,\n account extends Account | undefined,\n>(client: Client<Transport, chain, account>): Promise<GetGasPriceReturnType> {\n const gasPrice = await client.request({\n method: 'eth_gasPrice',\n })\n return BigInt(gasPrice)\n}\n","import type { Address } from 'abitype'\n\nimport type { Account } from '../../accounts/types.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type HexToNumberErrorType,\n hexToNumber,\n} from '../../utils/encoding/fromHex.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\n\nexport type GetTransactionCountParameters = {\n /** The account address. */\n address: Address\n} & (\n | {\n /** The block number. */\n blockNumber?: bigint | undefined\n blockTag?: undefined\n }\n | {\n blockNumber?: undefined\n /** The block tag. Defaults to 'latest'. */\n blockTag?: BlockTag | undefined\n }\n)\nexport type GetTransactionCountReturnType = number\n\nexport type GetTransactionCountErrorType =\n | RequestErrorType\n | NumberToHexErrorType\n | HexToNumberErrorType\n | ErrorType\n\n/**\n * Returns the number of [Transactions](https://viem.sh/docs/glossary/terms#transaction) an Account has sent.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransactionCount\n * - JSON-RPC Methods: [`eth_getTransactionCount`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactioncount)\n *\n * @param client - Client to use\n * @param parameters - {@link GetTransactionCountParameters}\n * @returns The number of transactions an account has sent. {@link GetTransactionCountReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getTransactionCount } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const transactionCount = await getTransactionCount(client, {\n * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n */\nexport async function getTransactionCount<\n chain extends Chain | undefined,\n account extends Account | undefined,\n>(\n client: Client<Transport, chain, account>,\n { address, blockTag = 'latest', blockNumber }: GetTransactionCountParameters,\n): Promise<GetTransactionCountReturnType> {\n const count = await client.request(\n {\n method: 'eth_getTransactionCount',\n params: [address, blockNumber ? numberToHex(blockNumber) : blockTag],\n },\n { dedupe: Boolean(blockNumber) },\n )\n return hexToNumber(count)\n}\n","import type { Address } from 'abitype'\nimport type { Account } from '../../accounts/types.js'\nimport {\n type ParseAccountErrorType,\n parseAccount,\n} from '../../accounts/utils/parseAccount.js'\nimport {\n type EstimateFeesPerGasErrorType,\n internal_estimateFeesPerGas,\n} from '../../actions/public/estimateFeesPerGas.js'\nimport {\n type EstimateGasErrorType,\n type EstimateGasParameters,\n estimateGas,\n} from '../../actions/public/estimateGas.js'\nimport {\n type GetBlockErrorType,\n getBlock as getBlock_,\n} from '../../actions/public/getBlock.js'\nimport {\n type GetTransactionCountErrorType,\n getTransactionCount,\n} from '../../actions/public/getTransactionCount.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { AccountNotFoundErrorType } from '../../errors/account.js'\nimport {\n Eip1559FeesNotSupportedError,\n MaxFeePerGasTooLowError,\n} from '../../errors/fee.js'\nimport type { DeriveAccount, GetAccountParameter } from '../../types/account.js'\nimport type { Block } from '../../types/block.js'\nimport type { Chain, DeriveChain } from '../../types/chain.js'\nimport type { GetChainParameter } from '../../types/chain.js'\nimport type { GetTransactionRequestKzgParameter } from '../../types/kzg.js'\nimport type {\n TransactionRequest,\n TransactionRequestEIP1559,\n TransactionRequestEIP2930,\n TransactionRequestEIP4844,\n TransactionRequestEIP7702,\n TransactionRequestLegacy,\n TransactionSerializable,\n} from '../../types/transaction.js'\nimport type {\n ExactPartial,\n IsNever,\n Prettify,\n UnionOmit,\n UnionRequiredBy,\n} from '../../types/utils.js'\nimport { blobsToCommitments } from '../../utils/blob/blobsToCommitments.js'\nimport { blobsToProofs } from '../../utils/blob/blobsToProofs.js'\nimport { commitmentsToVersionedHashes } from '../../utils/blob/commitmentsToVersionedHashes.js'\nimport { toBlobSidecars } from '../../utils/blob/toBlobSidecars.js'\nimport type { FormattedTransactionRequest } from '../../utils/formatters/transactionRequest.js'\nimport { getAction } from '../../utils/getAction.js'\nimport type { NonceManager } from '../../utils/nonceManager.js'\nimport {\n type AssertRequestErrorType,\n type AssertRequestParameters,\n assertRequest,\n} from '../../utils/transaction/assertRequest.js'\nimport {\n type GetTransactionType,\n getTransactionType,\n} from '../../utils/transaction/getTransactionType.js'\nimport { getChainId as getChainId_ } from '../public/getChainId.js'\n\nexport const defaultParameters = [\n 'blobVersionedHashes',\n 'chainId',\n 'fees',\n 'gas',\n 'nonce',\n 'type',\n] as const\n\nexport type PrepareTransactionRequestParameterType =\n | 'blobVersionedHashes'\n | 'chainId'\n | 'fees'\n | 'gas'\n | 'nonce'\n | 'sidecars'\n | 'type'\ntype ParameterTypeToParameters<\n parameterType extends PrepareTransactionRequestParameterType,\n> = parameterType extends 'fees'\n ? 'maxFeePerGas' | 'maxPriorityFeePerGas' | 'gasPrice'\n : parameterType\n\nexport type PrepareTransactionRequestRequest<\n chain extends Chain | undefined = Chain | undefined,\n chainOverride extends Chain | undefined = Chain | undefined,\n ///\n _derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>,\n> = UnionOmit<FormattedTransactionRequest<_derivedChain>, 'from'> &\n GetTransactionRequestKzgParameter & {\n /**\n * Nonce manager to use for the transaction request.\n */\n nonceManager?: NonceManager | undefined\n /**\n * Parameters to prepare for the transaction request.\n *\n * @default ['blobVersionedHashes', 'chainId', 'fees', 'gas', 'nonce', 'type']\n */\n parameters?: readonly PrepareTransactionRequestParameterType[] | undefined\n }\n\nexport type PrepareTransactionRequestParameters<\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n chainOverride extends Chain | undefined = Chain | undefined,\n accountOverride extends Account | Address | undefined =\n | Account\n | Address\n | undefined,\n request extends PrepareTransactionRequestRequest<\n chain,\n chainOverride\n > = PrepareTransactionRequestRequest<chain, chainOverride>,\n> = request &\n GetAccountParameter<account, accountOverride, false, true> &\n GetChainParameter<chain, chainOverride> &\n GetTransactionRequestKzgParameter<request> & { chainId?: number | undefined }\n\nexport type PrepareTransactionRequestReturnType<\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n chainOverride extends Chain | undefined = Chain | undefined,\n accountOverride extends Account | Address | undefined =\n | Account\n | Address\n | undefined,\n request extends PrepareTransactionRequestRequest<\n chain,\n chainOverride\n > = PrepareTransactionRequestRequest<chain, chainOverride>,\n ///\n _derivedAccount extends Account | Address | undefined = DeriveAccount<\n account,\n accountOverride\n >,\n _derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>,\n _transactionType = request['type'] extends string | undefined\n ? request['type']\n : GetTransactionType<request> extends 'legacy'\n ? unknown\n : GetTransactionType<request>,\n _transactionRequest extends TransactionRequest =\n | (_transactionType extends 'legacy' ? TransactionRequestLegacy : never)\n | (_transactionType extends 'eip1559' ? TransactionRequestEIP1559 : never)\n | (_transactionType extends 'eip2930' ? TransactionRequestEIP2930 : never)\n | (_transactionType extends 'eip4844' ? TransactionRequestEIP4844 : never)\n | (_transactionType extends 'eip7702' ? TransactionRequestEIP7702 : never),\n> = Prettify<\n UnionRequiredBy<\n Extract<\n UnionOmit<FormattedTransactionRequest<_derivedChain>, 'from'> &\n (_derivedChain extends Chain\n ? { chain: _derivedChain }\n : { chain?: undefined }) &\n (_derivedAccount extends Account\n ? { account: _derivedAccount; from: Address }\n : { account?: undefined; from?: undefined }),\n IsNever<_transactionRequest> extends true\n ? unknown\n : ExactPartial<_transactionRequest>\n > & { chainId?: number | undefined },\n ParameterTypeToParameters<\n request['parameters'] extends readonly PrepareTransactionRequestParameterType[]\n ? request['parameters'][number]\n : (typeof defaultParameters)[number]\n >\n > &\n (unknown extends request['kzg'] ? {} : Pick<request, 'kzg'>)\n>\n\nexport type PrepareTransactionRequestErrorType =\n | AccountNotFoundErrorType\n | AssertRequestErrorType\n | ParseAccountErrorType\n | GetBlockErrorType\n | GetTransactionCountErrorType\n | EstimateGasErrorType\n | EstimateFeesPerGasErrorType\n\n/**\n * Prepares a transaction request for signing.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/prepareTransactionRequest\n *\n * @param args - {@link PrepareTransactionRequestParameters}\n * @returns The transaction request. {@link PrepareTransactionRequestReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { prepareTransactionRequest } from 'viem/actions'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const request = await prepareTransactionRequest(client, {\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * to: '0x0000000000000000000000000000000000000000',\n * value: 1n,\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { prepareTransactionRequest } from 'viem/actions'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const request = await prepareTransactionRequest(client, {\n * to: '0x0000000000000000000000000000000000000000',\n * value: 1n,\n * })\n */\nexport async function prepareTransactionRequest<\n chain extends Chain | undefined,\n account extends Account | undefined,\n const request extends PrepareTransactionRequestRequest<chain, chainOverride>,\n accountOverride extends Account | Address | undefined = undefined,\n chainOverride extends Chain | undefined = undefined,\n>(\n client: Client<Transport, chain, account>,\n args: PrepareTransactionRequestParameters<\n chain,\n account,\n chainOverride,\n accountOverride,\n request\n >,\n): Promise<\n PrepareTransactionRequestReturnType<\n chain,\n account,\n chainOverride,\n accountOverride,\n request\n >\n> {\n const {\n account: account_ = client.account,\n blobs,\n chain,\n gas,\n kzg,\n nonce,\n nonceManager,\n parameters = defaultParameters,\n type,\n } = args\n const account = account_ ? parseAccount(account_) : account_\n\n const request = { ...args, ...(account ? { from: account?.address } : {}) }\n\n let block: Block | undefined\n async function getBlock(): Promise<Block> {\n if (block) return block\n block = await getAction(\n client,\n getBlock_,\n 'getBlock',\n )({ blockTag: 'latest' })\n return block\n }\n\n let chainId: number | undefined\n async function getChainId(): Promise<number> {\n if (chainId) return chainId\n if (chain) return chain.id\n if (typeof args.chainId !== 'undefined') return args.chainId\n const chainId_ = await getAction(client, getChainId_, 'getChainId')({})\n chainId = chainId_\n return chainId\n }\n\n if (\n (parameters.includes('blobVersionedHashes') ||\n parameters.includes('sidecars')) &&\n blobs &&\n kzg\n ) {\n const commitments = blobsToCommitments({ blobs, kzg })\n\n if (parameters.includes('blobVersionedHashes')) {\n const versionedHashes = commitmentsToVersionedHashes({\n commitments,\n to: 'hex',\n })\n request.blobVersionedHashes = versionedHashes\n }\n if (parameters.includes('sidecars')) {\n const proofs = blobsToProofs({ blobs, commitments, kzg })\n const sidecars = toBlobSidecars({\n blobs,\n commitments,\n proofs,\n to: 'hex',\n })\n request.sidecars = sidecars\n }\n }\n\n if (parameters.includes('chainId')) request.chainId = await getChainId()\n\n if (parameters.includes('nonce') && typeof nonce === 'undefined' && account) {\n if (nonceManager) {\n const chainId = await getChainId()\n request.nonce = await nonceManager.consume({\n address: account.address,\n chainId,\n client,\n })\n } else {\n request.nonce = await getAction(\n client,\n getTransactionCount,\n 'getTransactionCount',\n )({\n address: account.address,\n blockTag: 'pending',\n })\n }\n }\n\n if (\n (parameters.includes('fees') || parameters.includes('type')) &&\n typeof type === 'undefined'\n ) {\n try {\n request.type = getTransactionType(\n request as TransactionSerializable,\n ) as any\n } catch {\n // infer type from block\n const block = await getBlock()\n request.type =\n typeof block?.baseFeePerGas === 'bigint' ? 'eip1559' : 'legacy'\n }\n }\n\n if (parameters.includes('fees')) {\n // TODO(4844): derive blob base fees once https://github.com/ethereum/execution-apis/pull/486 is merged.\n\n if (request.type !== 'legacy' && request.type !== 'eip2930') {\n // EIP-1559 fees\n if (\n typeof request.maxFeePerGas === 'undefined' ||\n typeof request.maxPriorityFeePerGas === 'undefined'\n ) {\n const block = await getBlock()\n const { maxFeePerGas, maxPriorityFeePerGas } =\n await internal_estimateFeesPerGas(client, {\n block: block as Block,\n chain,\n request: request as PrepareTransactionRequestParameters,\n })\n\n if (\n typeof args.maxPriorityFeePerGas === 'undefined' &&\n args.maxFeePerGas &&\n args.maxFeePerGas < maxPriorityFeePerGas\n )\n throw new MaxFeePerGasTooLowError({\n maxPriorityFeePerGas,\n })\n\n request.maxPriorityFeePerGas = maxPriorityFeePerGas\n request.maxFeePerGas = maxFeePerGas\n }\n } else {\n // Legacy fees\n if (\n typeof args.maxFeePerGas !== 'undefined' ||\n typeof args.maxPriorityFeePerGas !== 'undefined'\n )\n throw new Eip1559FeesNotSupportedError()\n\n const block = await getBlock()\n const { gasPrice: gasPrice_ } = await internal_estimateFeesPerGas(\n client,\n {\n block: block as Block,\n chain,\n request: request as PrepareTransactionRequestParameters,\n type: 'legacy',\n },\n )\n request.gasPrice = gasPrice_\n }\n }\n\n if (parameters.includes('gas') && typeof gas === 'undefined')\n request.gas = await getAction(\n client,\n estimateGas,\n 'estimateGas',\n )({\n ...request,\n account: account\n ? { address: account.address, type: 'json-rpc' }\n : account,\n } as EstimateGasParameters)\n\n assertRequest(request as AssertRequestParameters)\n\n delete request.parameters\n\n return request as any\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Hash } from '../../types/misc.js'\nimport type { TransactionSerializedGeneric } from '../../types/transaction.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\n\nexport type SendRawTransactionParameters = {\n /** The signed serialized transaction. */\n serializedTransaction: TransactionSerializedGeneric\n}\n\nexport type SendRawTransactionReturnType = Hash\n\nexport type SendRawTransactionErrorType = RequestErrorType | ErrorType\n\n/**\n * Sends a **signed** transaction to the network\n *\n * - Docs: https://viem.sh/docs/actions/wallet/sendRawTransaction\n * - JSON-RPC Method: [`eth_sendRawTransaction`](https://ethereum.github.io/execution-apis/api-documentation/)\n *\n * @param client - Client to use\n * @param parameters - {@link SendRawTransactionParameters}\n * @returns The transaction hash. {@link SendRawTransactionReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { sendRawTransaction } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n *\n * const hash = await sendRawTransaction(client, {\n * serializedTransaction: '0x02f850018203118080825208808080c080a04012522854168b27e5dc3d5839bab5e6b39e1a0ffd343901ce1622e3d64b48f1a04e00902ae0502c4728cbf12156290df99c3ed7de85b1dbfe20b5c36931733a33'\n * })\n */\nexport async function sendRawTransaction<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n { serializedTransaction }: SendRawTransactionParameters,\n): Promise<SendRawTransactionReturnType> {\n return client.request(\n {\n method: 'eth_sendRawTransaction',\n params: [serializedTransaction],\n },\n { retryCount: 0 },\n )\n}\n","import { defineChain } from '../../utils/chain/defineChain.js'\n\nexport const mainnet = /*#__PURE__*/ defineChain({\n id: 1,\n name: 'Ethereum',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: {\n default: {\n http: ['https://cloudflare-eth.com'],\n },\n },\n blockExplorers: {\n default: {\n name: 'Etherscan',\n url: 'https://etherscan.io',\n apiUrl: 'https://api.etherscan.io/api',\n },\n },\n contracts: {\n ensRegistry: {\n address: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',\n },\n ensUniversalResolver: {\n address: '0xce01f8eee7E479C928F8919abD53E553a36CeF67',\n blockCreated: 19_258_213,\n },\n multicall3: {\n address: '0xca11bde05977b3631167028862be2a173976ca11',\n blockCreated: 14_353_601,\n },\n },\n})\n","import { chainConfig } from '../../op-stack/chainConfig.js'\nimport { defineChain } from '../../utils/chain/defineChain.js'\n\nconst sourceId = 11_155_111 // sepolia\n\nexport const optimismSepolia = /*#__PURE__*/ defineChain({\n ...chainConfig,\n id: 11155420,\n name: 'OP Sepolia',\n nativeCurrency: { name: 'Sepolia Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: {\n default: {\n http: ['https://sepolia.optimism.io'],\n },\n },\n blockExplorers: {\n default: {\n name: 'Blockscout',\n url: 'https://optimism-sepolia.blockscout.com',\n apiUrl: 'https://optimism-sepolia.blockscout.com/api',\n },\n },\n contracts: {\n ...chainConfig.contracts,\n disputeGameFactory: {\n [sourceId]: {\n address: '0x05F9613aDB30026FFd634f38e5C4dFd30a197Fa1',\n },\n },\n l2OutputOracle: {\n [sourceId]: {\n address: '0x90E9c4f8a994a250F6aEfd61CAFb4F2e895D458F',\n },\n },\n multicall3: {\n address: '0xca11bde05977b3631167028862be2a173976ca11',\n blockCreated: 1620204,\n },\n portal: {\n [sourceId]: {\n address: '0x16Fc5058F25648194471939df75CF27A2fdC48BC',\n },\n },\n l1StandardBridge: {\n [sourceId]: {\n address: '0xFBb0621E0B23b5478B630BD55a5f21f67730B0F1',\n },\n },\n },\n testnet: true,\n sourceId,\n})\n","import type { Address } from 'abitype'\n\nimport type { JsonRpcAccount } from '../accounts/types.js'\nimport {\n type ParseAccountErrorType,\n parseAccount,\n} from '../accounts/utils/parseAccount.js'\nimport type { ErrorType } from '../errors/utils.js'\nimport type { Account } from '../types/account.js'\nimport type { Chain } from '../types/chain.js'\nimport type {\n EIP1193RequestFn,\n EIP1474Methods,\n RpcSchema,\n} from '../types/eip1193.js'\nimport type { ExactPartial, Prettify } from '../types/utils.js'\nimport type {\n CcipRequestParameters,\n CcipRequestReturnType,\n} from '../utils/ccip.js'\nimport { uid } from '../utils/uid.js'\nimport type { PublicActions } from './decorators/public.js'\nimport type { WalletActions } from './decorators/wallet.js'\nimport type { Transport } from './transports/createTransport.js'\n\nexport type ClientConfig<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n accountOrAddress extends Account | Address | undefined =\n | Account\n | Address\n | undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n> = {\n /** The Account to use for the Client. This will be used for Actions that require an account as an argument. */\n account?: accountOrAddress | Account | Address | undefined\n /** Flags for batch settings. */\n batch?:\n | {\n /** Toggle to enable `eth_call` multicall aggregation. */\n multicall?: boolean | Prettify<MulticallBatchOptions> | undefined\n }\n | undefined\n /**\n * Time (in ms) that cached data will remain in memory.\n * @default 4_000\n */\n cacheTime?: number | undefined\n /**\n * [CCIP Read](https://eips.ethereum.org/EIPS/eip-3668) configuration.\n * If `false`, the client will not support offchain CCIP lookups.\n */\n ccipRead?:\n | {\n /**\n * A function that will be called to make the offchain CCIP lookup request.\n * @see https://eips.ethereum.org/EIPS/eip-3668#client-lookup-protocol\n */\n request?: (\n parameters: CcipRequestParameters,\n ) => Promise<CcipRequestReturnType>\n }\n | false\n | undefined\n /** Chain for the client. */\n chain?: Chain | undefined | chain\n /** A key for the client. */\n key?: string | undefined\n /** A name for the client. */\n name?: string | undefined\n /**\n * Frequency (in ms) for polling enabled actions & events.\n * @default 4_000\n */\n pollingInterval?: number | undefined\n /**\n * Typed JSON-RPC schema for the client.\n */\n rpcSchema?: rpcSchema | undefined\n /** The RPC transport */\n transport: transport\n /** The type of client. */\n type?: string | undefined\n}\n\n// Actions that are used internally by other Actions (ie. `call` is used by `readContract`).\n// They are allowed to be extended, but must conform to their parameter & return type interfaces.\n// Example: an extended `call` action must accept `CallParameters` as parameters,\n// and conform to the `CallReturnType` return type.\ntype ExtendableProtectedActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n> = Pick<\n PublicActions<transport, chain, account>,\n | 'call'\n | 'createContractEventFilter'\n | 'createEventFilter'\n | 'estimateContractGas'\n | 'estimateGas'\n | 'getBlock'\n | 'getBlockNumber'\n | 'getChainId'\n | 'getContractEvents'\n | 'getEnsText'\n | 'getFilterChanges'\n | 'getGasPrice'\n | 'getLogs'\n | 'getTransaction'\n | 'getTransactionCount'\n | 'getTransactionReceipt'\n | 'prepareTransactionRequest'\n | 'readContract'\n | 'sendRawTransaction'\n | 'simulateContract'\n | 'uninstallFilter'\n | 'watchBlockNumber'\n | 'watchContractEvent'\n> &\n Pick<WalletActions<chain, account>, 'sendTransaction' | 'writeContract'>\n\n// TODO: Move `transport` to slot index 2 since `chain` and `account` used more frequently.\n// Otherwise, we end up with a lot of `Client<Transport, chain, account>` in actions.\nexport type Client<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n extended extends Extended | undefined = Extended | undefined,\n> = Client_Base<transport, chain, account, rpcSchema> &\n (extended extends Extended ? extended : unknown) & {\n extend: <\n const client extends Extended &\n ExactPartial<ExtendableProtectedActions<transport, chain, account>>,\n >(\n fn: (\n client: Client<transport, chain, account, rpcSchema, extended>,\n ) => client,\n ) => Client<\n transport,\n chain,\n account,\n rpcSchema,\n Prettify<client> & (extended extends Extended ? extended : unknown)\n >\n }\n\ntype Client_Base<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n> = {\n /** The Account of the Client. */\n account: account\n /** Flags for batch settings. */\n batch?: ClientConfig['batch'] | undefined\n /** Time (in ms) that cached data will remain in memory. */\n cacheTime: number\n /** [CCIP Read](https://eips.ethereum.org/EIPS/eip-3668) configuration. */\n ccipRead?: ClientConfig['ccipRead'] | undefined\n /** Chain for the client. */\n chain: chain\n /** A key for the client. */\n key: string\n /** A name for the client. */\n name: string\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval: number\n /** Request function wrapped with friendly error handling */\n request: EIP1193RequestFn<\n rpcSchema extends undefined ? EIP1474Methods : rpcSchema\n >\n /** The RPC transport */\n transport: ReturnType<transport>['config'] & ReturnType<transport>['value']\n /** The type of client. */\n type: string\n /** A unique ID for the client. */\n uid: string\n}\n\ntype Extended = Prettify<\n // disallow redefining base properties\n { [_ in keyof Client_Base]?: undefined } & {\n [key: string]: unknown\n }\n>\n\nexport type MulticallBatchOptions = {\n /** The maximum size (in bytes) for each calldata chunk. @default 1_024 */\n batchSize?: number | undefined\n /** The maximum number of milliseconds to wait before sending a batch. @default 0 */\n wait?: number | undefined\n}\n\nexport type CreateClientErrorType = ParseAccountErrorType | ErrorType\n\nexport function createClient<\n transport extends Transport,\n chain extends Chain | undefined = undefined,\n accountOrAddress extends Account | Address | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n>(\n parameters: ClientConfig<transport, chain, accountOrAddress, rpcSchema>,\n): Prettify<\n Client<\n transport,\n chain,\n accountOrAddress extends Address\n ? Prettify<JsonRpcAccount<accountOrAddress>>\n : accountOrAddress,\n rpcSchema\n >\n>\n\nexport function createClient(parameters: ClientConfig): Client {\n const {\n batch,\n cacheTime = parameters.pollingInterval ?? 4_000,\n ccipRead,\n key = 'base',\n name = 'Base Client',\n pollingInterval = 4_000,\n type = 'base',\n } = parameters\n\n const chain = parameters.chain\n const account = parameters.account\n ? parseAccount(parameters.account)\n : undefined\n const { config, request, value } = parameters.transport({\n chain,\n pollingInterval,\n })\n const transport = { ...config, ...value }\n\n const client = {\n account,\n batch,\n cacheTime,\n ccipRead,\n chain,\n key,\n name,\n pollingInterval,\n request,\n transport,\n type,\n uid: uid(),\n }\n\n function extend(base: typeof client) {\n type ExtendFn = (base: typeof client) => unknown\n return (extendFn: ExtendFn) => {\n const extended = extendFn(base) as Extended\n for (const key in client) delete extended[key]\n const combined = { ...base, ...extended }\n return Object.assign(combined, { extend: extend(combined as any) })\n }\n }\n\n return Object.assign(client, { extend: extend(client) as any })\n}\n\n/**\n * Defines a typed JSON-RPC schema for the client.\n * Note: This is a runtime noop function.\n */\nexport function rpcSchema<rpcSchema extends RpcSchema>(): rpcSchema {\n return null as any\n}\n","import type { Address } from 'abitype'\nimport type { ErrorType } from '../errors/utils.js'\nimport type { Account, ParseAccount } from '../types/account.js'\nimport type { Chain } from '../types/chain.js'\nimport type { PublicRpcSchema, RpcSchema } from '../types/eip1193.js'\nimport type { Prettify } from '../types/utils.js'\nimport {\n type Client,\n type ClientConfig,\n type CreateClientErrorType,\n createClient,\n} from './createClient.js'\nimport { type PublicActions, publicActions } from './decorators/public.js'\nimport type { Transport } from './transports/createTransport.js'\n\nexport type PublicClientConfig<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n accountOrAddress extends Account | Address | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n> = Prettify<\n Pick<\n ClientConfig<transport, chain, accountOrAddress, rpcSchema>,\n | 'batch'\n | 'cacheTime'\n | 'ccipRead'\n | 'chain'\n | 'key'\n | 'name'\n | 'pollingInterval'\n | 'rpcSchema'\n | 'transport'\n >\n>\n\nexport type PublicClient<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n accountOrAddress extends Account | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n> = Prettify<\n Client<\n transport,\n chain,\n accountOrAddress,\n rpcSchema extends RpcSchema\n ? [...PublicRpcSchema, ...rpcSchema]\n : PublicRpcSchema,\n PublicActions<transport, chain>\n >\n>\n\nexport type CreatePublicClientErrorType = CreateClientErrorType | ErrorType\n\n/**\n * Creates a Public Client with a given [Transport](https://viem.sh/docs/clients/intro) configured for a [Chain](https://viem.sh/docs/clients/chains).\n *\n * - Docs: https://viem.sh/docs/clients/public\n *\n * A Public Client is an interface to \"public\" [JSON-RPC API](https://ethereum.org/en/developers/docs/apis/json-rpc/) methods such as retrieving block numbers, transactions, reading from smart contracts, etc through [Public Actions](/docs/actions/public/introduction).\n *\n * @param config - {@link PublicClientConfig}\n * @returns A Public Client. {@link PublicClient}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n */\nexport function createPublicClient<\n transport extends Transport,\n chain extends Chain | undefined = undefined,\n accountOrAddress extends Account | Address | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n>(\n parameters: PublicClientConfig<transport, chain, accountOrAddress, rpcSchema>,\n): PublicClient<transport, chain, ParseAccount<accountOrAddress>, rpcSchema> {\n const { key = 'public', name = 'Public Client' } = parameters\n const client = createClient({\n ...parameters,\n key,\n name,\n type: 'publicClient',\n })\n return client.extend(publicActions) as any\n}\n","import { BaseError } from './base.js'\n\nexport type AccountNotFoundErrorType = AccountNotFoundError & {\n name: 'AccountNotFoundError'\n}\nexport class AccountNotFoundError extends BaseError {\n constructor({ docsPath }: { docsPath?: string | undefined } = {}) {\n super(\n [\n 'Could not find an Account to execute with this Action.',\n 'Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the Client.',\n ].join('\\n'),\n {\n docsPath,\n docsSlug: 'account',\n name: 'AccountNotFoundError',\n },\n )\n }\n}\n\nexport type AccountTypeNotSupportedErrorType = AccountTypeNotSupportedError & {\n name: 'AccountTypeNotSupportedError'\n}\nexport class AccountTypeNotSupportedError extends BaseError {\n constructor({\n docsPath,\n metaMessages,\n type,\n }: {\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n type: string\n }) {\n super(`Account type \"${type}\" is not supported.`, {\n docsPath,\n metaMessages,\n name: 'AccountTypeNotSupportedError',\n })\n }\n}\n","import {\n ChainMismatchError,\n type ChainMismatchErrorType,\n ChainNotFoundError,\n type ChainNotFoundErrorType,\n} from '../../errors/chain.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\n\nexport type AssertCurrentChainParameters = {\n chain?: Chain | undefined\n currentChainId: number\n}\n\nexport type AssertCurrentChainErrorType =\n | ChainNotFoundErrorType\n | ChainMismatchErrorType\n | ErrorType\n\nexport function assertCurrentChain({\n chain,\n currentChainId,\n}: AssertCurrentChainParameters): void {\n if (!chain) throw new ChainNotFoundError()\n if (currentChainId !== chain.id)\n throw new ChainMismatchError({ chain, currentChainId })\n}\n","import type { Address } from 'abitype'\n\nimport type { Account } from '../../accounts/types.js'\nimport {\n type ParseAccountErrorType,\n parseAccount,\n} from '../../accounts/utils/parseAccount.js'\nimport type { SignTransactionErrorType } from '../../accounts/utils/signTransaction.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport {\n AccountNotFoundError,\n type AccountNotFoundErrorType,\n AccountTypeNotSupportedError,\n type AccountTypeNotSupportedErrorType,\n} from '../../errors/account.js'\nimport { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport {\n type RecoverAuthorizationAddressErrorType,\n recoverAuthorizationAddress,\n} from '../../experimental/eip7702/utils/recoverAuthorizationAddress.js'\nimport type { GetAccountParameter } from '../../types/account.js'\nimport type { Chain, DeriveChain } from '../../types/chain.js'\nimport type { GetChainParameter } from '../../types/chain.js'\nimport type { GetTransactionRequestKzgParameter } from '../../types/kzg.js'\nimport type { Hash } from '../../types/misc.js'\nimport type { TransactionRequest } from '../../types/transaction.js'\nimport type { UnionOmit } from '../../types/utils.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type AssertCurrentChainErrorType,\n assertCurrentChain,\n} from '../../utils/chain/assertCurrentChain.js'\nimport {\n type GetTransactionErrorReturnType,\n getTransactionError,\n} from '../../utils/errors/getTransactionError.js'\nimport { extract } from '../../utils/formatters/extract.js'\nimport {\n type FormattedTransactionRequest,\n formatTransactionRequest,\n} from '../../utils/formatters/transactionRequest.js'\nimport { getAction } from '../../utils/getAction.js'\nimport { LruMap } from '../../utils/lru.js'\nimport {\n type AssertRequestErrorType,\n type AssertRequestParameters,\n assertRequest,\n} from '../../utils/transaction/assertRequest.js'\nimport { type GetChainIdErrorType, getChainId } from '../public/getChainId.js'\nimport {\n type PrepareTransactionRequestErrorType,\n defaultParameters,\n prepareTransactionRequest,\n} from './prepareTransactionRequest.js'\nimport {\n type SendRawTransactionErrorType,\n sendRawTransaction,\n} from './sendRawTransaction.js'\n\nconst supportsWalletNamespace = new LruMap<boolean>(128)\n\nexport type SendTransactionRequest<\n chain extends Chain | undefined = Chain | undefined,\n chainOverride extends Chain | undefined = Chain | undefined,\n ///\n _derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>,\n> = UnionOmit<FormattedTransactionRequest<_derivedChain>, 'from'> &\n GetTransactionRequestKzgParameter\n\nexport type SendTransactionParameters<\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n chainOverride extends Chain | undefined = Chain | undefined,\n request extends SendTransactionRequest<\n chain,\n chainOverride\n > = SendTransactionRequest<chain, chainOverride>,\n> = request &\n GetAccountParameter<account, Account | Address, true, true> &\n GetChainParameter<chain, chainOverride> &\n GetTransactionRequestKzgParameter<request>\n\nexport type SendTransactionReturnType = Hash\n\nexport type SendTransactionErrorType =\n | ParseAccountErrorType\n | GetTransactionErrorReturnType<\n | AccountNotFoundErrorType\n | AccountTypeNotSupportedErrorType\n | AssertCurrentChainErrorType\n | AssertRequestErrorType\n | GetChainIdErrorType\n | PrepareTransactionRequestErrorType\n | SendRawTransactionErrorType\n | RecoverAuthorizationAddressErrorType\n | SignTransactionErrorType\n | RequestErrorType\n >\n | ErrorType\n\n/**\n * Creates, signs, and sends a new transaction to the network.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/sendTransaction\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_sending-transactions\n * - JSON-RPC Methods:\n * - JSON-RPC Accounts: [`eth_sendTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendtransaction)\n * - Local Accounts: [`eth_sendRawTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction)\n *\n * @param client - Client to use\n * @param parameters - {@link SendTransactionParameters}\n * @returns The [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash. {@link SendTransactionReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { sendTransaction } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const hash = await sendTransaction(client, {\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * value: 1000000000000000000n,\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { sendTransaction } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: http(),\n * })\n * const hash = await sendTransaction(client, {\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * value: 1000000000000000000n,\n * })\n */\nexport async function sendTransaction<\n chain extends Chain | undefined,\n account extends Account | undefined,\n const request extends SendTransactionRequest<chain, chainOverride>,\n chainOverride extends Chain | undefined = undefined,\n>(\n client: Client<Transport, chain, account>,\n parameters: SendTransactionParameters<chain, account, chainOverride, request>,\n): Promise<SendTransactionReturnType> {\n const {\n account: account_ = client.account,\n chain = client.chain,\n accessList,\n authorizationList,\n blobs,\n data,\n gas,\n gasPrice,\n maxFeePerBlobGas,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n value,\n ...rest\n } = parameters\n\n if (typeof account_ === 'undefined')\n throw new AccountNotFoundError({\n docsPath: '/docs/actions/wallet/sendTransaction',\n })\n const account = account_ ? parseAccount(account_) : null\n\n try {\n assertRequest(parameters as AssertRequestParameters)\n\n const to = await (async () => {\n // If `to` exists on the parameters, use that.\n if (parameters.to) return parameters.to\n\n // If no `to` exists, and we are sending a EIP-7702 transaction, use the\n // address of the first authorization in the list.\n if (authorizationList && authorizationList.length > 0)\n return await recoverAuthorizationAddress({\n authorization: authorizationList[0],\n }).catch(() => {\n throw new BaseError(\n '`to` is required. Could not infer from `authorizationList`.',\n )\n })\n\n // Otherwise, we are sending a deployment transaction.\n return undefined\n })()\n\n if (account?.type === 'json-rpc' || account === null) {\n let chainId: number | undefined\n if (chain !== null) {\n chainId = await getAction(client, getChainId, 'getChainId')({})\n assertCurrentChain({\n currentChainId: chainId,\n chain,\n })\n }\n\n const chainFormat = client.chain?.formatters?.transactionRequest?.format\n const format = chainFormat || formatTransactionRequest\n\n const request = format({\n // Pick out extra data that might exist on the chain's transaction request type.\n ...extract(rest, { format: chainFormat }),\n accessList,\n authorizationList,\n blobs,\n chainId,\n data,\n from: account?.address,\n gas,\n gasPrice,\n maxFeePerBlobGas,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n } as TransactionRequest)\n\n const isWalletNamespaceSupported = supportsWalletNamespace.get(client.uid)\n const method = isWalletNamespaceSupported\n ? 'wallet_sendTransaction'\n : 'eth_sendTransaction'\n\n try {\n return await client.request(\n {\n method,\n params: [request],\n },\n { retryCount: 0 },\n )\n } catch (e) {\n if (isWalletNamespaceSupported === false) throw e\n\n const error = e as BaseError\n // If the transport does not support the method or input, attempt to use the\n // `wallet_sendTransaction` method.\n if (\n error.name === 'InvalidInputRpcError' ||\n error.name === 'InvalidParamsRpcError' ||\n error.name === 'MethodNotFoundRpcError' ||\n error.name === 'MethodNotSupportedRpcError'\n ) {\n return await client\n .request(\n {\n method: 'wallet_sendTransaction',\n params: [request],\n },\n { retryCount: 0 },\n )\n .then((hash) => {\n supportsWalletNamespace.set(client.uid, true)\n return hash\n })\n .catch((e) => {\n const walletNamespaceError = e as BaseError\n if (\n walletNamespaceError.name === 'MethodNotFoundRpcError' ||\n walletNamespaceError.name === 'MethodNotSupportedRpcError'\n ) {\n supportsWalletNamespace.set(client.uid, false)\n throw error\n }\n\n throw walletNamespaceError\n })\n }\n\n throw error\n }\n }\n\n if (account?.type === 'local') {\n // Prepare the request for signing (assign appropriate fees, etc.)\n const request = await getAction(\n client,\n prepareTransactionRequest,\n 'prepareTransactionRequest',\n )({\n account,\n accessList,\n authorizationList,\n blobs,\n chain,\n data,\n gas,\n gasPrice,\n maxFeePerBlobGas,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n nonceManager: account.nonceManager,\n parameters: [...defaultParameters, 'sidecars'],\n value,\n ...rest,\n to,\n } as any)\n\n const serializer = chain?.serializers?.transaction\n const serializedTransaction = (await account.signTransaction(request, {\n serializer,\n })) as Hash\n return await getAction(\n client,\n sendRawTransaction,\n 'sendRawTransaction',\n )({\n serializedTransaction,\n })\n }\n\n if (account?.type === 'smart')\n throw new AccountTypeNotSupportedError({\n metaMessages: [\n 'Consider using the `sendUserOperation` Action instead.',\n ],\n docsPath: '/docs/actions/bundler/sendUserOperation',\n type: 'smart',\n })\n\n throw new AccountTypeNotSupportedError({\n docsPath: '/docs/actions/wallet/sendTransaction',\n type: (account as any)?.type,\n })\n } catch (err) {\n if (err instanceof AccountTypeNotSupportedError) throw err\n throw getTransactionError(err as BaseError, {\n ...parameters,\n account,\n chain: parameters.chain || undefined,\n })\n }\n}\n","import type { Account } from '../../accounts/types.js'\nimport type { SendTransactionParameters } from '../../actions/wallet/sendTransaction.js'\nimport type { BaseError } from '../../errors/base.js'\nimport { UnknownNodeError } from '../../errors/node.js'\nimport {\n TransactionExecutionError,\n type TransactionExecutionErrorType,\n} from '../../errors/transaction.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\n\nimport {\n type GetNodeErrorParameters,\n type GetNodeErrorReturnType,\n getNodeError,\n} from './getNodeError.js'\n\nexport type GetTransactionErrorParameters = Omit<\n SendTransactionParameters,\n 'account' | 'chain'\n> & {\n account: Account | null\n chain?: Chain | undefined\n docsPath?: string | undefined\n}\n\nexport type GetTransactionErrorReturnType<cause = ErrorType> = Omit<\n TransactionExecutionErrorType,\n 'cause'\n> & { cause: cause | GetNodeErrorReturnType }\n\nexport function getTransactionError<err extends ErrorType<string>>(\n err: err,\n { docsPath, ...args }: GetTransactionErrorParameters,\n): GetTransactionErrorReturnType<err> {\n const cause = (() => {\n const cause = getNodeError(\n err as {} as BaseError,\n args as GetNodeErrorParameters,\n )\n if (cause instanceof UnknownNodeError) return err as {} as BaseError\n return cause\n })()\n return new TransactionExecutionError(cause, {\n docsPath,\n ...args,\n }) as GetTransactionErrorReturnType<err>\n}\n","import type { Abi, Address, TypedData } from 'abitype'\n\nimport type { Account } from '../../accounts/types.js'\nimport {\n type GetChainIdReturnType,\n getChainId,\n} from '../../actions/public/getChainId.js'\nimport {\n type AddChainParameters,\n addChain,\n} from '../../actions/wallet/addChain.js'\nimport {\n type DeployContractParameters,\n type DeployContractReturnType,\n deployContract,\n} from '../../actions/wallet/deployContract.js'\nimport {\n type GetAddressesReturnType,\n getAddresses,\n} from '../../actions/wallet/getAddresses.js'\nimport {\n type GetPermissionsReturnType,\n getPermissions,\n} from '../../actions/wallet/getPermissions.js'\nimport {\n type PrepareTransactionRequestParameters,\n type PrepareTransactionRequestRequest,\n type PrepareTransactionRequestReturnType,\n prepareTransactionRequest,\n} from '../../actions/wallet/prepareTransactionRequest.js'\nimport {\n type RequestAddressesReturnType,\n requestAddresses,\n} from '../../actions/wallet/requestAddresses.js'\nimport {\n type RequestPermissionsParameters,\n type RequestPermissionsReturnType,\n requestPermissions,\n} from '../../actions/wallet/requestPermissions.js'\nimport {\n type SendRawTransactionParameters,\n type SendRawTransactionReturnType,\n sendRawTransaction,\n} from '../../actions/wallet/sendRawTransaction.js'\nimport {\n type SendTransactionParameters,\n type SendTransactionRequest,\n type SendTransactionReturnType,\n sendTransaction,\n} from '../../actions/wallet/sendTransaction.js'\nimport {\n type SignMessageParameters,\n type SignMessageReturnType,\n signMessage,\n} from '../../actions/wallet/signMessage.js'\nimport {\n type SignTransactionParameters,\n type SignTransactionRequest,\n type SignTransactionReturnType,\n signTransaction,\n} from '../../actions/wallet/signTransaction.js'\nimport {\n type SignTypedDataParameters,\n type SignTypedDataReturnType,\n signTypedData,\n} from '../../actions/wallet/signTypedData.js'\nimport {\n type SwitchChainParameters,\n switchChain,\n} from '../../actions/wallet/switchChain.js'\nimport {\n type WatchAssetParameters,\n type WatchAssetReturnType,\n watchAsset,\n} from '../../actions/wallet/watchAsset.js'\nimport {\n type WriteContractParameters,\n type WriteContractReturnType,\n writeContract,\n} from '../../actions/wallet/writeContract.js'\nimport type { Chain } from '../../types/chain.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n} from '../../types/contract.js'\nimport type { Client } from '../createClient.js'\nimport type { Transport } from '../transports/createTransport.js'\n\nexport type WalletActions<\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n> = {\n /**\n * Adds an EVM chain to the wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/addChain\n * - JSON-RPC Methods: [`eth_addEthereumChain`](https://eips.ethereum.org/EIPS/eip-3085)\n *\n * @param args - {@link AddChainParameters}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { optimism } from 'viem/chains'\n *\n * const client = createWalletClient({\n * transport: custom(window.ethereum),\n * })\n * await client.addChain({ chain: optimism })\n */\n addChain: (args: AddChainParameters) => Promise<void>\n /**\n * Deploys a contract to the network, given bytecode and constructor arguments.\n *\n * - Docs: https://viem.sh/docs/contract/deployContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts_deploying-contracts\n *\n * @param args - {@link DeployContractParameters}\n * @returns The [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash. {@link DeployContractReturnType}\n *\n * @example\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: http(),\n * })\n * const hash = await client.deployContract({\n * abi: [],\n * account: '0x…,\n * bytecode: '0x608060405260405161083e38038061083e833981016040819052610...',\n * })\n */\n deployContract: <\n const abi extends Abi | readonly unknown[],\n chainOverride extends Chain | undefined,\n >(\n args: DeployContractParameters<abi, chain, account, chainOverride>,\n ) => Promise<DeployContractReturnType>\n /**\n * Returns a list of account addresses owned by the wallet or client.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/getAddresses\n * - JSON-RPC Methods: [`eth_accounts`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_accounts)\n *\n * @returns List of account addresses owned by the wallet or client. {@link GetAddressesReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const accounts = await client.getAddresses()\n */\n getAddresses: () => Promise<GetAddressesReturnType>\n /**\n * Returns the chain ID associated with the current network.\n *\n * - Docs: https://viem.sh/docs/actions/public/getChainId\n * - JSON-RPC Methods: [`eth_chainId`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_chainid)\n *\n * @returns The current chain ID. {@link GetChainIdReturnType}\n *\n * @example\n * import { createWalletClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const chainId = await client.getChainId()\n * // 1\n */\n getChainId: () => Promise<GetChainIdReturnType>\n /**\n * Gets the wallets current permissions.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/getPermissions\n * - JSON-RPC Methods: [`wallet_getPermissions`](https://eips.ethereum.org/EIPS/eip-2255)\n *\n * @returns The wallet permissions. {@link GetPermissionsReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const permissions = await client.getPermissions()\n */\n getPermissions: () => Promise<GetPermissionsReturnType>\n /**\n * Prepares a transaction request for signing.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/prepareTransactionRequest\n *\n * @param args - {@link PrepareTransactionRequestParameters}\n * @returns The transaction request. {@link PrepareTransactionRequestReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const request = await client.prepareTransactionRequest({\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * to: '0x0000000000000000000000000000000000000000',\n * value: 1n,\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const request = await client.prepareTransactionRequest({\n * to: '0x0000000000000000000000000000000000000000',\n * value: 1n,\n * })\n */\n prepareTransactionRequest: <\n const request extends PrepareTransactionRequestRequest<\n chain,\n chainOverride\n >,\n chainOverride extends Chain | undefined = undefined,\n accountOverride extends Account | Address | undefined = undefined,\n >(\n args: PrepareTransactionRequestParameters<\n chain,\n account,\n chainOverride,\n accountOverride,\n request\n >,\n ) => Promise<\n PrepareTransactionRequestReturnType<\n chain,\n account,\n chainOverride,\n accountOverride,\n request\n >\n >\n /**\n * Requests a list of accounts managed by a wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/requestAddresses\n * - JSON-RPC Methods: [`eth_requestAccounts`](https://eips.ethereum.org/EIPS/eip-1102)\n *\n * Sends a request to the wallet, asking for permission to access the user's accounts. After the user accepts the request, it will return a list of accounts (addresses).\n *\n * This API can be useful for dapps that need to access the user's accounts in order to execute transactions or interact with smart contracts.\n *\n * @returns List of accounts managed by a wallet {@link RequestAddressesReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const accounts = await client.requestAddresses()\n */\n requestAddresses: () => Promise<RequestAddressesReturnType>\n /**\n * Requests permissions for a wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/requestPermissions\n * - JSON-RPC Methods: [`wallet_requestPermissions`](https://eips.ethereum.org/EIPS/eip-2255)\n *\n * @param args - {@link RequestPermissionsParameters}\n * @returns The wallet permissions. {@link RequestPermissionsReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const permissions = await client.requestPermissions({\n * eth_accounts: {}\n * })\n */\n requestPermissions: (\n args: RequestPermissionsParameters,\n ) => Promise<RequestPermissionsReturnType>\n /**\n * Sends a **signed** transaction to the network\n *\n * - Docs: https://viem.sh/docs/actions/wallet/sendRawTransaction\n * - JSON-RPC Method: [`eth_sendRawTransaction`](https://ethereum.github.io/execution-apis/api-documentation/)\n *\n * @param client - Client to use\n * @param parameters - {@link SendRawTransactionParameters}\n * @returns The transaction hash. {@link SendRawTransactionReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { sendRawTransaction } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n *\n * const hash = await client.sendRawTransaction({\n * serializedTransaction: '0x02f850018203118080825208808080c080a04012522854168b27e5dc3d5839bab5e6b39e1a0ffd343901ce1622e3d64b48f1a04e00902ae0502c4728cbf12156290df99c3ed7de85b1dbfe20b5c36931733a33'\n * })\n */\n sendRawTransaction: (\n args: SendRawTransactionParameters,\n ) => Promise<SendRawTransactionReturnType>\n /**\n * Creates, signs, and sends a new transaction to the network.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/sendTransaction\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_sending-transactions\n * - JSON-RPC Methods:\n * - JSON-RPC Accounts: [`eth_sendTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendtransaction)\n * - Local Accounts: [`eth_sendRawTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction)\n *\n * @param args - {@link SendTransactionParameters}\n * @returns The [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash. {@link SendTransactionReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const hash = await client.sendTransaction({\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * value: 1000000000000000000n,\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: http(),\n * })\n * const hash = await client.sendTransaction({\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * value: 1000000000000000000n,\n * })\n */\n sendTransaction: <\n const request extends SendTransactionRequest<chain, chainOverride>,\n chainOverride extends Chain | undefined = undefined,\n >(\n args: SendTransactionParameters<chain, account, chainOverride, request>,\n ) => Promise<SendTransactionReturnType>\n /**\n * Calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191): `keccak256(\"\\x19Ethereum Signed Message:\\n\" + len(message) + message))`.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/signMessage\n * - JSON-RPC Methods:\n * - JSON-RPC Accounts: [`personal_sign`](https://docs.metamask.io/guide/signing-data#personal-sign)\n * - Local Accounts: Signs locally. No JSON-RPC request.\n *\n * With the calculated signature, you can:\n * - use [`verifyMessage`](https://viem.sh/docs/utilities/verifyMessage) to verify the signature,\n * - use [`recoverMessageAddress`](https://viem.sh/docs/utilities/recoverMessageAddress) to recover the signing address from a signature.\n *\n * @param args - {@link SignMessageParameters}\n * @returns The signed message. {@link SignMessageReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await client.signMessage({\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * message: 'hello world',\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: http(),\n * })\n * const signature = await client.signMessage({\n * message: 'hello world',\n * })\n */\n signMessage: (\n args: SignMessageParameters<account>,\n ) => Promise<SignMessageReturnType>\n /**\n * Signs a transaction.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/signTransaction\n * - JSON-RPC Methods:\n * - JSON-RPC Accounts: [`eth_signTransaction`](https://ethereum.github.io/execution-apis/api-documentation/)\n * - Local Accounts: Signs locally. No JSON-RPC request.\n *\n * @param args - {@link SignTransactionParameters}\n * @returns The signed message. {@link SignTransactionReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const request = await client.prepareTransactionRequest({\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * to: '0x0000000000000000000000000000000000000000',\n * value: 1n,\n * })\n * const signature = await client.signTransaction(request)\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const request = await client.prepareTransactionRequest({\n * to: '0x0000000000000000000000000000000000000000',\n * value: 1n,\n * })\n * const signature = await client.signTransaction(request)\n */\n signTransaction: <\n chainOverride extends Chain | undefined,\n const request extends SignTransactionRequest<\n chain,\n chainOverride\n > = SignTransactionRequest<chain, chainOverride>,\n >(\n args: SignTransactionParameters<chain, account, chainOverride, request>,\n ) => Promise<SignTransactionReturnType<request>>\n /**\n * Signs typed data and calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191): `keccak256(\"\\x19Ethereum Signed Message:\\n\" + len(message) + message))`.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/signTypedData\n * - JSON-RPC Methods:\n * - JSON-RPC Accounts: [`eth_signTypedData_v4`](https://docs.metamask.io/guide/signing-data#signtypeddata-v4)\n * - Local Accounts: Signs locally. No JSON-RPC request.\n *\n * @param client - Client to use\n * @param args - {@link SignTypedDataParameters}\n * @returns The signed data. {@link SignTypedDataReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await client.signTypedData({\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * domain: {\n * name: 'Ether Mail',\n * version: '1',\n * chainId: 1,\n * verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',\n * },\n * types: {\n * Person: [\n * { name: 'name', type: 'string' },\n * { name: 'wallet', type: 'address' },\n * ],\n * Mail: [\n * { name: 'from', type: 'Person' },\n * { name: 'to', type: 'Person' },\n * { name: 'contents', type: 'string' },\n * ],\n * },\n * primaryType: 'Mail',\n * message: {\n * from: {\n * name: 'Cow',\n * wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',\n * },\n * to: {\n * name: 'Bob',\n * wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n * },\n * contents: 'Hello, Bob!',\n * },\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: http(),\n * })\n * const signature = await client.signTypedData({\n * domain: {\n * name: 'Ether Mail',\n * version: '1',\n * chainId: 1,\n * verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',\n * },\n * types: {\n * Person: [\n * { name: 'name', type: 'string' },\n * { name: 'wallet', type: 'address' },\n * ],\n * Mail: [\n * { name: 'from', type: 'Person' },\n * { name: 'to', type: 'Person' },\n * { name: 'contents', type: 'string' },\n * ],\n * },\n * primaryType: 'Mail',\n * message: {\n * from: {\n * name: 'Cow',\n * wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',\n * },\n * to: {\n * name: 'Bob',\n * wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n * },\n * contents: 'Hello, Bob!',\n * },\n * })\n */\n signTypedData: <\n const typedData extends TypedData | { [key: string]: unknown },\n primaryType extends string,\n >(\n args: SignTypedDataParameters<typedData, primaryType, account>,\n ) => Promise<SignTypedDataReturnType>\n /**\n * Switch the target chain in a wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/switchChain\n * - JSON-RPC Methods: [`eth_switchEthereumChain`](https://eips.ethereum.org/EIPS/eip-3326)\n *\n * @param args - {@link SwitchChainParameters}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet, optimism } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * await client.switchChain({ id: optimism.id })\n */\n switchChain: (args: SwitchChainParameters) => Promise<void>\n /**\n * Adds an EVM chain to the wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/watchAsset\n * - JSON-RPC Methods: [`eth_switchEthereumChain`](https://eips.ethereum.org/EIPS/eip-747)\n *\n * @param args - {@link WatchAssetParameters}\n * @returns Boolean indicating if the token was successfully added. {@link WatchAssetReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const success = await client.watchAsset({\n * type: 'ERC20',\n * options: {\n * address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n * decimals: 18,\n * symbol: 'WETH',\n * },\n * })\n */\n watchAsset: (args: WatchAssetParameters) => Promise<WatchAssetReturnType>\n /**\n * Executes a write function on a contract.\n *\n * - Docs: https://viem.sh/docs/contract/writeContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts_writing-to-contracts\n *\n * A \"write\" function on a Solidity contract modifies the state of the blockchain. These types of functions require gas to be executed, and hence a [Transaction](https://viem.sh/docs/glossary/terms) is needed to be broadcast in order to change the state.\n *\n * Internally, uses a [Wallet Client](https://viem.sh/docs/clients/wallet) to call the [`sendTransaction` action](https://viem.sh/docs/actions/wallet/sendTransaction) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * __Warning: The `write` internally sends a transaction – it does not validate if the contract write will succeed (the contract may throw an error). It is highly recommended to [simulate the contract write with `contract.simulate`](https://viem.sh/docs/contract/writeContract#usage) before you execute it.__\n *\n * @param args - {@link WriteContractParameters}\n * @returns A [Transaction Hash](https://viem.sh/docs/glossary/terms#hash). {@link WriteContractReturnType}\n *\n * @example\n * import { createWalletClient, custom, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const hash = await client.writeContract({\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function mint(uint32 tokenId) nonpayable']),\n * functionName: 'mint',\n * args: [69420],\n * })\n *\n * @example\n * // With Validation\n * import { createWalletClient, custom, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const { request } = await client.simulateContract({\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function mint(uint32 tokenId) nonpayable']),\n * functionName: 'mint',\n * args: [69420],\n * }\n * const hash = await client.writeContract(request)\n */\n writeContract: <\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName<abi, 'payable' | 'nonpayable'>,\n args extends ContractFunctionArgs<\n abi,\n 'payable' | 'nonpayable',\n functionName\n >,\n chainOverride extends Chain | undefined = undefined,\n >(\n args: WriteContractParameters<\n abi,\n functionName,\n args,\n chain,\n account,\n chainOverride\n >,\n ) => Promise<WriteContractReturnType>\n}\n\nexport function walletActions<\n transport extends Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n>(client: Client<transport, chain, account>): WalletActions<chain, account> {\n return {\n addChain: (args) => addChain(client, args),\n deployContract: (args) => deployContract(client, args),\n getAddresses: () => getAddresses(client),\n getChainId: () => getChainId(client),\n getPermissions: () => getPermissions(client),\n prepareTransactionRequest: (args) =>\n prepareTransactionRequest(client as any, args as any) as any,\n requestAddresses: () => requestAddresses(client),\n requestPermissions: (args) => requestPermissions(client, args),\n sendRawTransaction: (args) => sendRawTransaction(client, args),\n sendTransaction: (args) => sendTransaction(client, args),\n signMessage: (args) => signMessage(client, args),\n signTransaction: (args) => signTransaction(client, args),\n signTypedData: (args) => signTypedData(client, args),\n switchChain: (args) => switchChain(client, args),\n watchAsset: (args) => watchAsset(client, args),\n writeContract: (args) => writeContract(client, args as any),\n }\n}\n","import type { Account } from '../../accounts/types.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\n\nexport type AddChainParameters = {\n /** The chain to add to the wallet. */\n chain: Chain\n}\n\nexport type AddChainErrorType =\n | RequestErrorType\n | NumberToHexErrorType\n | ErrorType\n\n/**\n * Adds an EVM chain to the wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/addChain\n * - JSON-RPC Methods: [`eth_addEthereumChain`](https://eips.ethereum.org/EIPS/eip-3085)\n *\n * @param client - Client to use\n * @param parameters - {@link AddChainParameters}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { optimism } from 'viem/chains'\n * import { addChain } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * transport: custom(window.ethereum),\n * })\n * await addChain(client, { chain: optimism })\n */\nexport async function addChain<\n chain extends Chain | undefined,\n account extends Account | undefined,\n>(client: Client<Transport, chain, account>, { chain }: AddChainParameters) {\n const { id, name, nativeCurrency, rpcUrls, blockExplorers } = chain\n await client.request(\n {\n method: 'wallet_addEthereumChain',\n params: [\n {\n chainId: numberToHex(id),\n chainName: name,\n nativeCurrency,\n rpcUrls: rpcUrls.default.http,\n blockExplorerUrls: blockExplorers\n ? Object.values(blockExplorers).map(({ url }) => url)\n : undefined,\n },\n ],\n },\n { dedupe: true, retryCount: 0 },\n )\n}\n","import type { Abi } from 'abitype'\n\nimport type { Account } from '../../accounts/types.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { GetChainParameter } from '../../types/chain.js'\nimport type { ContractConstructorArgs } from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { UnionEvaluate, UnionOmit } from '../../types/utils.js'\nimport { encodeDeployData } from '../../utils/abi/encodeDeployData.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport {\n type SendTransactionErrorType,\n type SendTransactionParameters,\n type SendTransactionReturnType,\n sendTransaction,\n} from './sendTransaction.js'\n\nexport type DeployContractParameters<\n abi extends Abi | readonly unknown[] = Abi,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n chainOverride extends Chain | undefined = Chain | undefined,\n ///\n allArgs = ContractConstructorArgs<abi>,\n> = UnionOmit<\n SendTransactionParameters<chain, account, chainOverride>,\n 'accessList' | 'chain' | 'to' | 'data'\n> &\n GetChainParameter<chain, chainOverride> &\n UnionEvaluate<\n readonly [] extends allArgs\n ? { args?: allArgs | undefined }\n : { args: allArgs }\n > & {\n abi: abi\n bytecode: Hex\n }\n\nexport type DeployContractReturnType = SendTransactionReturnType\n\nexport type DeployContractErrorType = SendTransactionErrorType | ErrorType\n\n/**\n * Deploys a contract to the network, given bytecode and constructor arguments.\n *\n * - Docs: https://viem.sh/docs/contract/deployContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts_deploying-contracts\n *\n * @param client - Client to use\n * @param parameters - {@link DeployContractParameters}\n * @returns The [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash. {@link DeployContractReturnType}\n *\n * @example\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { deployContract } from 'viem/contract'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: http(),\n * })\n * const hash = await deployContract(client, {\n * abi: [],\n * account: '0x…,\n * bytecode: '0x608060405260405161083e38038061083e833981016040819052610...',\n * })\n */\nexport function deployContract<\n const abi extends Abi | readonly unknown[],\n chain extends Chain | undefined,\n account extends Account | undefined,\n chainOverride extends Chain | undefined,\n>(\n walletClient: Client<Transport, chain, account>,\n parameters: DeployContractParameters<abi, chain, account, chainOverride>,\n): Promise<DeployContractReturnType> {\n const { abi, args, bytecode, ...request } =\n parameters as DeployContractParameters\n const calldata = encodeDeployData({ abi, args, bytecode })\n return sendTransaction(walletClient, {\n ...request,\n data: calldata,\n } as unknown as SendTransactionParameters<chain, account, chainOverride>)\n}\n","import type { Address } from 'abitype'\n\nimport type { Account } from '../../accounts/types.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport {\n type ChecksumAddressErrorType,\n checksumAddress,\n} from '../../utils/address/getAddress.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\n\nexport type GetAddressesReturnType = Address[]\n\nexport type GetAddressesErrorType =\n | RequestErrorType\n | ChecksumAddressErrorType\n | ErrorType\n\n/**\n * Returns a list of account addresses owned by the wallet or client.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/getAddresses\n * - JSON-RPC Methods: [`eth_accounts`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_accounts)\n *\n * @param client - Client to use\n * @returns List of account addresses owned by the wallet or client. {@link GetAddressesReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getAddresses } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const accounts = await getAddresses(client)\n */\nexport async function getAddresses<\n chain extends Chain | undefined,\n account extends Account | undefined = undefined,\n>(client: Client<Transport, chain, account>): Promise<GetAddressesReturnType> {\n if (client.account?.type === 'local') return [client.account.address]\n const addresses = await client.request(\n { method: 'eth_accounts' },\n { dedupe: true },\n )\n return addresses.map((address) => checksumAddress(address))\n}\n","import type { Account } from '../../accounts/types.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { WalletPermission } from '../../types/eip1193.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\n\nexport type GetPermissionsReturnType = WalletPermission[]\n\nexport type GetPermissionsErrorType = RequestErrorType | ErrorType\n\n/**\n * Gets the wallets current permissions.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/getPermissions\n * - JSON-RPC Methods: [`wallet_getPermissions`](https://eips.ethereum.org/EIPS/eip-2255)\n *\n * @param client - Client to use\n * @returns The wallet permissions. {@link GetPermissionsReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getPermissions } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const permissions = await getPermissions(client)\n */\nexport async function getPermissions<\n chain extends Chain | undefined,\n account extends Account | undefined = undefined,\n>(client: Client<Transport, chain, account>) {\n const permissions = await client.request(\n { method: 'wallet_getPermissions' },\n { dedupe: true },\n )\n return permissions\n}\n","import type { Address } from 'abitype'\n\nimport type { Account } from '../../accounts/types.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport { getAddress } from '../../utils/address/getAddress.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\n\nexport type RequestAddressesReturnType = Address[]\n\nexport type RequestAddressesErrorType = RequestErrorType | ErrorType\n\n/**\n * Requests a list of accounts managed by a wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/requestAddresses\n * - JSON-RPC Methods: [`eth_requestAccounts`](https://eips.ethereum.org/EIPS/eip-1102)\n *\n * Sends a request to the wallet, asking for permission to access the user's accounts. After the user accepts the request, it will return a list of accounts (addresses).\n *\n * This API can be useful for dapps that need to access the user's accounts in order to execute transactions or interact with smart contracts.\n *\n * @param client - Client to use\n * @returns List of accounts managed by a wallet {@link RequestAddressesReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { requestAddresses } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const accounts = await requestAddresses(client)\n */\nexport async function requestAddresses<\n chain extends Chain | undefined,\n account extends Account | undefined = undefined,\n>(\n client: Client<Transport, chain, account>,\n): Promise<RequestAddressesReturnType> {\n const addresses = await client.request(\n { method: 'eth_requestAccounts' },\n { dedupe: true, retryCount: 0 },\n )\n return addresses.map((address) => getAddress(address))\n}\n","import type { Account } from '../../accounts/types.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { WalletPermission } from '../../types/eip1193.js'\nimport type { Prettify } from '../../types/utils.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\n\nexport type RequestPermissionsParameters = Prettify<\n {\n eth_accounts: Record<string, any>\n } & {\n [key: string]: Record<string, any>\n }\n>\nexport type RequestPermissionsReturnType = WalletPermission[]\n\nexport type RequestPermissionsErrorType = RequestErrorType | ErrorType\n\n/**\n * Requests permissions for a wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/requestPermissions\n * - JSON-RPC Methods: [`wallet_requestPermissions`](https://eips.ethereum.org/EIPS/eip-2255)\n *\n * @param client - Client to use\n * @param parameters - {@link RequestPermissionsParameters}\n * @returns The wallet permissions. {@link RequestPermissionsReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { requestPermissions } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const permissions = await requestPermissions(client, {\n * eth_accounts: {}\n * })\n */\nexport async function requestPermissions<\n chain extends Chain | undefined,\n account extends Account | undefined = undefined,\n>(\n client: Client<Transport, chain, account>,\n permissions: RequestPermissionsParameters,\n) {\n return client.request(\n {\n method: 'wallet_requestPermissions',\n params: [permissions],\n },\n { retryCount: 0 },\n )\n}\n","import type { Account } from '../../accounts/types.js'\nimport {\n type ParseAccountErrorType,\n parseAccount,\n} from '../../accounts/utils/parseAccount.js'\nimport type { SignMessageErrorType as SignMessageErrorType_account } from '../../accounts/utils/signMessage.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport { AccountNotFoundError } from '../../errors/account.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { GetAccountParameter } from '../../types/account.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Hex, SignableMessage } from '../../types/misc.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type ToHexErrorType,\n stringToHex,\n toHex,\n} from '../../utils/encoding/toHex.js'\n\nexport type SignMessageParameters<\n account extends Account | undefined = Account | undefined,\n> = GetAccountParameter<account> & {\n message: SignableMessage\n}\n\nexport type SignMessageReturnType = Hex\n\nexport type SignMessageErrorType =\n | ParseAccountErrorType\n | RequestErrorType\n | SignMessageErrorType_account\n | ToHexErrorType\n | ErrorType\n\n/**\n * Calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191): `keccak256(\"\\x19Ethereum Signed Message:\\n\" + len(message) + message))`.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/signMessage\n * - JSON-RPC Methods:\n * - JSON-RPC Accounts: [`personal_sign`](https://docs.metamask.io/guide/signing-data#personal-sign)\n * - Local Accounts: Signs locally. No JSON-RPC request.\n *\n * With the calculated signature, you can:\n * - use [`verifyMessage`](https://viem.sh/docs/utilities/verifyMessage) to verify the signature,\n * - use [`recoverMessageAddress`](https://viem.sh/docs/utilities/recoverMessageAddress) to recover the signing address from a signature.\n *\n * @param client - Client to use\n * @param parameters - {@link SignMessageParameters}\n * @returns The signed message. {@link SignMessageReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { signMessage } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await signMessage(client, {\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * message: 'hello world',\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, custom } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { signMessage } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await signMessage(client, {\n * message: 'hello world',\n * })\n */\nexport async function signMessage<\n chain extends Chain | undefined,\n account extends Account | undefined,\n>(\n client: Client<Transport, chain, account>,\n {\n account: account_ = client.account,\n message,\n }: SignMessageParameters<account>,\n): Promise<SignMessageReturnType> {\n if (!account_)\n throw new AccountNotFoundError({\n docsPath: '/docs/actions/wallet/signMessage',\n })\n const account = parseAccount(account_)\n\n if (account.signMessage) return account.signMessage({ message })\n\n const message_ = (() => {\n if (typeof message === 'string') return stringToHex(message)\n if (message.raw instanceof Uint8Array) return toHex(message.raw)\n return message.raw\n })()\n\n return client.request(\n {\n method: 'personal_sign',\n params: [message_, account.address],\n },\n { retryCount: 0 },\n )\n}\n","import type { Account } from '../../accounts/types.js'\nimport {\n type ParseAccountErrorType,\n parseAccount,\n} from '../../accounts/utils/parseAccount.js'\nimport type { SignTransactionErrorType as SignTransactionErrorType_account } from '../../accounts/utils/signTransaction.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport { AccountNotFoundError } from '../../errors/account.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { GetAccountParameter } from '../../types/account.js'\nimport type {\n Chain,\n DeriveChain,\n GetChainParameter,\n} from '../../types/chain.js'\nimport type { GetTransactionRequestKzgParameter } from '../../types/kzg.js'\nimport type { RpcTransactionRequest } from '../../types/rpc.js'\nimport type {\n TransactionRequest,\n TransactionSerializable,\n TransactionSerialized,\n} from '../../types/transaction.js'\nimport type { UnionOmit } from '../../types/utils.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type AssertCurrentChainErrorType,\n assertCurrentChain,\n} from '../../utils/chain/assertCurrentChain.js'\nimport { numberToHex } from '../../utils/encoding/toHex.js'\nimport type { NumberToHexErrorType } from '../../utils/encoding/toHex.js'\nimport {\n type FormattedTransactionRequest,\n formatTransactionRequest,\n} from '../../utils/formatters/transactionRequest.js'\nimport { getAction } from '../../utils/getAction.js'\nimport {\n type AssertRequestErrorType,\n assertRequest,\n} from '../../utils/transaction/assertRequest.js'\nimport type { GetTransactionType } from '../../utils/transaction/getTransactionType.js'\nimport { type GetChainIdErrorType, getChainId } from '../public/getChainId.js'\n\nexport type SignTransactionRequest<\n chain extends Chain | undefined = Chain | undefined,\n chainOverride extends Chain | undefined = Chain | undefined,\n ///\n _derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>,\n> = UnionOmit<FormattedTransactionRequest<_derivedChain>, 'from'>\n\nexport type SignTransactionParameters<\n chain extends Chain | undefined,\n account extends Account | undefined,\n chainOverride extends Chain | undefined = Chain | undefined,\n request extends SignTransactionRequest<\n chain,\n chainOverride\n > = SignTransactionRequest<chain, chainOverride>,\n> = request &\n GetAccountParameter<account> &\n GetChainParameter<chain, chainOverride> &\n GetTransactionRequestKzgParameter<request>\n\nexport type SignTransactionReturnType<\n request extends SignTransactionRequest = SignTransactionRequest,\n> = TransactionSerialized<GetTransactionType<request>>\n\nexport type SignTransactionErrorType =\n | ParseAccountErrorType\n | AssertRequestErrorType\n | GetChainIdErrorType\n | AssertCurrentChainErrorType\n | SignTransactionErrorType_account\n | NumberToHexErrorType\n | RequestErrorType\n | ErrorType\n\n/**\n * Signs a transaction.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/signTransaction\n * - JSON-RPC Methods:\n * - JSON-RPC Accounts: [`eth_signTransaction`](https://ethereum.github.io/execution-apis/api-documentation/)\n * - Local Accounts: Signs locally. No JSON-RPC request.\n *\n * @param args - {@link SignTransactionParameters}\n * @returns The signed serialized transaction. {@link SignTransactionReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { signTransaction } from 'viem/actions'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await signTransaction(client, {\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * to: '0x0000000000000000000000000000000000000000',\n * value: 1n,\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { signTransaction } from 'viem/actions'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await signTransaction(client, {\n * to: '0x0000000000000000000000000000000000000000',\n * value: 1n,\n * })\n */\nexport async function signTransaction<\n chain extends Chain | undefined,\n account extends Account | undefined,\n chainOverride extends Chain | undefined = undefined,\n const request extends SignTransactionRequest<\n chain,\n chainOverride\n > = SignTransactionRequest<chain, chainOverride>,\n>(\n client: Client<Transport, chain, account>,\n parameters: SignTransactionParameters<chain, account, chainOverride, request>,\n): Promise<SignTransactionReturnType<request>> {\n const {\n account: account_ = client.account,\n chain = client.chain,\n ...transaction\n } = parameters\n\n if (!account_)\n throw new AccountNotFoundError({\n docsPath: '/docs/actions/wallet/signTransaction',\n })\n const account = parseAccount(account_)\n\n assertRequest({\n account,\n ...parameters,\n })\n\n const chainId = await getAction(client, getChainId, 'getChainId')({})\n if (chain !== null)\n assertCurrentChain({\n currentChainId: chainId,\n chain,\n })\n\n const formatters = chain?.formatters || client.chain?.formatters\n const format =\n formatters?.transactionRequest?.format || formatTransactionRequest\n\n if (account.signTransaction)\n return account.signTransaction(\n {\n ...transaction,\n chainId,\n } as TransactionSerializable,\n { serializer: client.chain?.serializers?.transaction },\n ) as Promise<SignTransactionReturnType<request>>\n\n return await client.request(\n {\n method: 'eth_signTransaction',\n params: [\n {\n ...format(transaction as unknown as TransactionRequest),\n chainId: numberToHex(chainId),\n from: account.address,\n } as unknown as RpcTransactionRequest,\n ],\n },\n { retryCount: 0 },\n )\n}\n","import type { TypedData } from 'abitype'\n\nimport type { Account } from '../../accounts/types.js'\nimport {\n type ParseAccountErrorType,\n parseAccount,\n} from '../../accounts/utils/parseAccount.js'\nimport type { SignTypedDataErrorType as SignTypedDataErrorType_account } from '../../accounts/utils/signTypedData.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport {\n AccountNotFoundError,\n type AccountNotFoundErrorType,\n} from '../../errors/account.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { GetAccountParameter } from '../../types/account.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { TypedDataDefinition } from '../../types/typedData.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport type { IsHexErrorType } from '../../utils/data/isHex.js'\nimport type { StringifyErrorType } from '../../utils/stringify.js'\nimport {\n type GetTypesForEIP712DomainErrorType,\n type SerializeTypedDataErrorType,\n type ValidateTypedDataErrorType,\n getTypesForEIP712Domain,\n serializeTypedData,\n validateTypedData,\n} from '../../utils/typedData.js'\n\nexport type SignTypedDataParameters<\n typedData extends TypedData | Record<string, unknown> = TypedData,\n primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData,\n account extends Account | undefined = undefined,\n ///\n primaryTypes = typedData extends TypedData ? keyof typedData : string,\n> = TypedDataDefinition<typedData, primaryType, primaryTypes> &\n GetAccountParameter<account>\n\nexport type SignTypedDataReturnType = Hex\n\nexport type SignTypedDataErrorType =\n | AccountNotFoundErrorType\n | ParseAccountErrorType\n | GetTypesForEIP712DomainErrorType\n | ValidateTypedDataErrorType\n | StringifyErrorType\n | SignTypedDataErrorType_account\n | IsHexErrorType\n | RequestErrorType\n | SerializeTypedDataErrorType\n | ErrorType\n\n/**\n * Signs typed data and calculates an Ethereum-specific signature in [https://eips.ethereum.org/EIPS/eip-712](https://eips.ethereum.org/EIPS/eip-712): `sign(keccak256(\"\\x19\\x01\" ‖ domainSeparator ‖ hashStruct(message)))`\n *\n * - Docs: https://viem.sh/docs/actions/wallet/signTypedData\n * - JSON-RPC Methods:\n * - JSON-RPC Accounts: [`eth_signTypedData_v4`](https://docs.metamask.io/guide/signing-data#signtypeddata-v4)\n * - Local Accounts: Signs locally. No JSON-RPC request.\n *\n * @param client - Client to use\n * @param parameters - {@link SignTypedDataParameters}\n * @returns The signed data. {@link SignTypedDataReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { signTypedData } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const signature = await signTypedData(client, {\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * domain: {\n * name: 'Ether Mail',\n * version: '1',\n * chainId: 1,\n * verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',\n * },\n * types: {\n * Person: [\n * { name: 'name', type: 'string' },\n * { name: 'wallet', type: 'address' },\n * ],\n * Mail: [\n * { name: 'from', type: 'Person' },\n * { name: 'to', type: 'Person' },\n * { name: 'contents', type: 'string' },\n * ],\n * },\n * primaryType: 'Mail',\n * message: {\n * from: {\n * name: 'Cow',\n * wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',\n * },\n * to: {\n * name: 'Bob',\n * wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n * },\n * contents: 'Hello, Bob!',\n * },\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { signTypedData } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: http(),\n * })\n * const signature = await signTypedData(client, {\n * domain: {\n * name: 'Ether Mail',\n * version: '1',\n * chainId: 1,\n * verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',\n * },\n * types: {\n * Person: [\n * { name: 'name', type: 'string' },\n * { name: 'wallet', type: 'address' },\n * ],\n * Mail: [\n * { name: 'from', type: 'Person' },\n * { name: 'to', type: 'Person' },\n * { name: 'contents', type: 'string' },\n * ],\n * },\n * primaryType: 'Mail',\n * message: {\n * from: {\n * name: 'Cow',\n * wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',\n * },\n * to: {\n * name: 'Bob',\n * wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n * },\n * contents: 'Hello, Bob!',\n * },\n * })\n */\nexport async function signTypedData<\n const typedData extends TypedData | Record<string, unknown>,\n primaryType extends keyof typedData | 'EIP712Domain',\n chain extends Chain | undefined,\n account extends Account | undefined,\n>(\n client: Client<Transport, chain, account>,\n parameters: SignTypedDataParameters<typedData, primaryType, account>,\n): Promise<SignTypedDataReturnType> {\n const {\n account: account_ = client.account,\n domain,\n message,\n primaryType,\n } = parameters as unknown as SignTypedDataParameters\n\n if (!account_)\n throw new AccountNotFoundError({\n docsPath: '/docs/actions/wallet/signTypedData',\n })\n const account = parseAccount(account_)\n\n const types = {\n EIP712Domain: getTypesForEIP712Domain({ domain }),\n ...parameters.types,\n }\n\n // Need to do a runtime validation check on addresses, byte ranges, integer ranges, etc\n // as we can't statically check this with TypeScript.\n validateTypedData({ domain, message, primaryType, types })\n\n if (account.signTypedData)\n return account.signTypedData({ domain, message, primaryType, types })\n\n const typedData = serializeTypedData({ domain, message, primaryType, types })\n return client.request(\n {\n method: 'eth_signTypedData_v4',\n params: [account.address, typedData],\n },\n { retryCount: 0 },\n )\n}\n","import type { Account } from '../../accounts/types.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\n\nexport type SwitchChainParameters = {\n /** ID of Chain to switch to */\n id: Chain['id']\n}\n\nexport type SwitchChainErrorType =\n | NumberToHexErrorType\n | RequestErrorType\n | ErrorType\n\n/**\n * Switch the target chain in a wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/switchChain\n * - JSON-RPC Methods: [`eth_switchEthereumChain`](https://eips.ethereum.org/EIPS/eip-3326)\n *\n * @param client - Client to use\n * @param parameters - {@link SwitchChainParameters}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet, optimism } from 'viem/chains'\n * import { switchChain } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * await switchChain(client, { id: optimism.id })\n */\nexport async function switchChain<\n chain extends Chain | undefined,\n account extends Account | undefined = undefined,\n>(client: Client<Transport, chain, account>, { id }: SwitchChainParameters) {\n await client.request(\n {\n method: 'wallet_switchEthereumChain',\n params: [\n {\n chainId: numberToHex(id),\n },\n ],\n },\n { retryCount: 0 },\n )\n}\n","import type { Account } from '../../accounts/types.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { WatchAssetParams } from '../../types/eip1193.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\n\nexport type WatchAssetParameters = WatchAssetParams\nexport type WatchAssetReturnType = boolean\nexport type WatchAssetErrorType = RequestErrorType | ErrorType\n\n/**\n * Adds an EVM chain to the wallet.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/watchAsset\n * - JSON-RPC Methods: [`eth_switchEthereumChain`](https://eips.ethereum.org/EIPS/eip-747)\n *\n * @param client - Client to use\n * @param parameters - {@link WatchAssetParameters}\n * @returns Boolean indicating if the token was successfully added. {@link WatchAssetReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { watchAsset } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const success = await watchAsset(client, {\n * type: 'ERC20',\n * options: {\n * address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n * decimals: 18,\n * symbol: 'WETH',\n * },\n * })\n */\nexport async function watchAsset<\n chain extends Chain | undefined,\n account extends Account | undefined = undefined,\n>(\n client: Client<Transport, chain, account>,\n params: WatchAssetParameters,\n): Promise<WatchAssetReturnType> {\n const added = await client.request(\n {\n method: 'wallet_watchAsset',\n params,\n },\n { retryCount: 0 },\n )\n return added\n}\n","import type { Abi, Address } from 'abitype'\n\nimport type { Account } from '../../accounts/types.js'\nimport {\n type ParseAccountErrorType,\n parseAccount,\n} from '../../accounts/utils/parseAccount.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport {\n AccountNotFoundError,\n type AccountNotFoundErrorType,\n} from '../../errors/account.js'\nimport type { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { GetAccountParameter } from '../../types/account.js'\nimport type {\n Chain,\n DeriveChain,\n GetChainParameter,\n} from '../../types/chain.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n ContractFunctionParameters,\n} from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { Prettify, UnionEvaluate, UnionOmit } from '../../types/utils.js'\nimport {\n type EncodeFunctionDataErrorType,\n type EncodeFunctionDataParameters,\n encodeFunctionData,\n} from '../../utils/abi/encodeFunctionData.js'\nimport {\n type GetContractErrorReturnType,\n getContractError,\n} from '../../utils/errors/getContractError.js'\nimport type { FormattedTransactionRequest } from '../../utils/formatters/transactionRequest.js'\nimport { getAction } from '../../utils/getAction.js'\nimport type { GetMutabilityAwareValue } from '../public/simulateContract.js'\nimport {\n type SendTransactionErrorType,\n type SendTransactionReturnType,\n sendTransaction,\n} from './sendTransaction.js'\n\nexport type WriteContractParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends ContractFunctionName<\n abi,\n 'nonpayable' | 'payable'\n > = ContractFunctionName<abi, 'nonpayable' | 'payable'>,\n args extends ContractFunctionArgs<\n abi,\n 'nonpayable' | 'payable',\n functionName\n > = ContractFunctionArgs<abi, 'nonpayable' | 'payable', functionName>,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n chainOverride extends Chain | undefined = Chain | undefined,\n ///\n allFunctionNames = ContractFunctionName<abi, 'nonpayable' | 'payable'>,\n derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>,\n> = ContractFunctionParameters<\n abi,\n 'nonpayable' | 'payable',\n functionName,\n args,\n false,\n allFunctionNames\n> &\n GetChainParameter<chain, chainOverride> &\n Prettify<\n GetAccountParameter<account, Account | Address, true, true> &\n GetMutabilityAwareValue<\n abi,\n 'nonpayable' | 'payable',\n functionName,\n FormattedTransactionRequest<derivedChain>['value'],\n args\n > & {\n /** Data to append to the end of the calldata. Useful for adding a [\"domain\" tag](https://opensea.notion.site/opensea/Seaport-Order-Attributions-ec2d69bf455041a5baa490941aad307f). */\n dataSuffix?: Hex | undefined\n }\n > &\n UnionEvaluate<\n UnionOmit<\n FormattedTransactionRequest<derivedChain>,\n 'data' | 'from' | 'to' | 'value'\n >\n >\n\nexport type WriteContractReturnType = SendTransactionReturnType\n\nexport type WriteContractErrorType =\n | EncodeFunctionDataErrorType\n | AccountNotFoundErrorType\n | ParseAccountErrorType\n | GetContractErrorReturnType<SendTransactionErrorType>\n | ErrorType\n\n/**\n * Executes a write function on a contract.\n *\n * - Docs: https://viem.sh/docs/contract/writeContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts_writing-to-contracts\n *\n * A \"write\" function on a Solidity contract modifies the state of the blockchain. These types of functions require gas to be executed, and hence a [Transaction](https://viem.sh/docs/glossary/terms) is needed to be broadcast in order to change the state.\n *\n * Internally, uses a [Wallet Client](https://viem.sh/docs/clients/wallet) to call the [`sendTransaction` action](https://viem.sh/docs/actions/wallet/sendTransaction) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * __Warning: The `write` internally sends a transaction – it does not validate if the contract write will succeed (the contract may throw an error). It is highly recommended to [simulate the contract write with `contract.simulate`](https://viem.sh/docs/contract/writeContract#usage) before you execute it.__\n *\n * @param client - Client to use\n * @param parameters - {@link WriteContractParameters}\n * @returns A [Transaction Hash](https://viem.sh/docs/glossary/terms#hash). {@link WriteContractReturnType}\n *\n * @example\n * import { createWalletClient, custom, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { writeContract } from 'viem/contract'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const hash = await writeContract(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function mint(uint32 tokenId) nonpayable']),\n * functionName: 'mint',\n * args: [69420],\n * })\n *\n * @example\n * // With Validation\n * import { createWalletClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { simulateContract, writeContract } from 'viem/contract'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const { request } = await simulateContract(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function mint(uint32 tokenId) nonpayable']),\n * functionName: 'mint',\n * args: [69420],\n * }\n * const hash = await writeContract(client, request)\n */\nexport async function writeContract<\n chain extends Chain | undefined,\n account extends Account | undefined,\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName<abi, 'nonpayable' | 'payable'>,\n args extends ContractFunctionArgs<\n abi,\n 'nonpayable' | 'payable',\n functionName\n >,\n chainOverride extends Chain | undefined,\n>(\n client: Client<Transport, chain, account>,\n parameters: WriteContractParameters<\n abi,\n functionName,\n args,\n chain,\n account,\n chainOverride\n >,\n): Promise<WriteContractReturnType> {\n const {\n abi,\n account: account_ = client.account,\n address,\n args,\n dataSuffix,\n functionName,\n ...request\n } = parameters as WriteContractParameters\n\n if (typeof account_ === 'undefined')\n throw new AccountNotFoundError({\n docsPath: '/docs/contract/writeContract',\n })\n const account = account_ ? parseAccount(account_) : null\n\n const data = encodeFunctionData({\n abi,\n args,\n functionName,\n } as EncodeFunctionDataParameters)\n\n try {\n return await getAction(\n client,\n sendTransaction,\n 'sendTransaction',\n )({\n data: `${data}${dataSuffix ? dataSuffix.replace('0x', '') : ''}`,\n to: address,\n account,\n ...request,\n })\n } catch (error) {\n throw getContractError(error as BaseError, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/writeContract',\n functionName,\n sender: account?.address,\n })\n }\n}\n","import type { Address } from 'abitype'\n\nimport type { Account } from '../accounts/types.js'\nimport type { ErrorType } from '../errors/utils.js'\nimport type { ParseAccount } from '../types/account.js'\nimport type { Chain } from '../types/chain.js'\nimport type { RpcSchema, WalletRpcSchema } from '../types/eip1193.js'\nimport type { Prettify } from '../types/utils.js'\nimport {\n type Client,\n type ClientConfig,\n type CreateClientErrorType,\n createClient,\n} from './createClient.js'\nimport { type WalletActions, walletActions } from './decorators/wallet.js'\nimport type { Transport } from './transports/createTransport.js'\n\nexport type WalletClientConfig<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n accountOrAddress extends Account | Address | undefined =\n | Account\n | Address\n | undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n> = Prettify<\n Pick<\n ClientConfig<transport, chain, accountOrAddress, rpcSchema>,\n | 'account'\n | 'cacheTime'\n | 'ccipRead'\n | 'chain'\n | 'key'\n | 'name'\n | 'pollingInterval'\n | 'rpcSchema'\n | 'transport'\n >\n>\n\nexport type WalletClient<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n> = Prettify<\n Client<\n transport,\n chain,\n account,\n rpcSchema extends RpcSchema\n ? [...WalletRpcSchema, ...rpcSchema]\n : WalletRpcSchema,\n WalletActions<chain, account>\n >\n>\n\nexport type CreateWalletClientErrorType = CreateClientErrorType | ErrorType\n\n/**\n * Creates a Wallet Client with a given [Transport](https://viem.sh/docs/clients/intro) configured for a [Chain](https://viem.sh/docs/clients/chains).\n *\n * - Docs: https://viem.sh/docs/clients/wallet\n *\n * A Wallet Client is an interface to interact with [Ethereum Account(s)](https://ethereum.org/en/glossary/#account) and provides the ability to retrieve accounts, execute transactions, sign messages, etc. through [Wallet Actions](https://viem.sh/docs/actions/wallet/introduction).\n *\n * The Wallet Client supports signing over:\n * - [JSON-RPC Accounts](https://viem.sh/docs/clients/wallet#json-rpc-accounts) (e.g. Browser Extension Wallets, WalletConnect, etc).\n * - [Local Accounts](https://viem.sh/docs/clients/wallet#local-accounts-private-key-mnemonic-etc) (e.g. private key/mnemonic wallets).\n *\n * @param config - {@link WalletClientConfig}\n * @returns A Wallet Client. {@link WalletClient}\n *\n * @example\n * // JSON-RPC Account\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n *\n * @example\n * // Local Account\n * import { createWalletClient, custom } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…')\n * chain: mainnet,\n * transport: http(),\n * })\n */\nexport function createWalletClient<\n transport extends Transport,\n chain extends Chain | undefined = undefined,\n accountOrAddress extends Account | Address | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = undefined,\n>(\n parameters: WalletClientConfig<transport, chain, accountOrAddress, rpcSchema>,\n): WalletClient<transport, chain, ParseAccount<accountOrAddress>, rpcSchema>\n\nexport function createWalletClient(\n parameters: WalletClientConfig,\n): WalletClient {\n const { key = 'wallet', name = 'Wallet Client', transport } = parameters\n const client = createClient({\n ...parameters,\n key,\n name,\n transport,\n type: 'walletClient',\n })\n return client.extend(walletActions)\n}\n","import { panicReasons } from '../../constants/solidity.js'\nimport { BaseError } from '../../errors/base.js'\nimport { ContractFunctionRevertedError } from '../../errors/contract.js'\nimport type { ErrorType } from '../../errors/utils.js'\n\n/** @internal */\nexport type IsNullUniversalResolverErrorErrorType = ErrorType\n\n/*\n * @description Checks if error is a valid null result UniversalResolver error\n */\nexport function isNullUniversalResolverError(\n err: unknown,\n callType: 'resolve' | 'reverse',\n): boolean {\n if (!(err instanceof BaseError)) return false\n const cause = err.walk((e) => e instanceof ContractFunctionRevertedError)\n if (!(cause instanceof ContractFunctionRevertedError)) return false\n if (cause.data?.errorName === 'ResolverNotFound') return true\n if (cause.data?.errorName === 'ResolverWildcardNotSupported') return true\n if (cause.data?.errorName === 'ResolverNotContract') return true\n if (cause.data?.errorName === 'ResolverError') return true\n if (cause.data?.errorName === 'HttpError') return true\n // Backwards compatibility for older UniversalResolver contracts\n if (\n cause.reason?.includes(\n 'Wildcard on non-extended resolvers is not supported',\n )\n )\n return true\n // No primary name set for address.\n if (callType === 'reverse' && cause.reason === panicReasons[50]) return true\n return false\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\n\nexport type EncodedLabelToLabelhashErrorType = IsHexErrorType | ErrorType\n\nexport function encodedLabelToLabelhash(label: string): Hex | null {\n if (label.length !== 66) return null\n if (label.indexOf('[') !== 0) return null\n if (label.indexOf(']') !== 65) return null\n const hash = `0x${label.slice(1, 65)}`\n if (!isHex(hash)) return null\n return hash\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport { type ConcatErrorType, concat } from '../data/concat.js'\nimport {\n type StringToBytesErrorType,\n type ToBytesErrorType,\n stringToBytes,\n toBytes,\n} from '../encoding/toBytes.js'\nimport { type BytesToHexErrorType, bytesToHex } from '../encoding/toHex.js'\nimport { type Keccak256ErrorType, keccak256 } from '../hash/keccak256.js'\nimport {\n type EncodedLabelToLabelhashErrorType,\n encodedLabelToLabelhash,\n} from './encodedLabelToLabelhash.js'\n\nexport type NamehashErrorType =\n | BytesToHexErrorType\n | EncodedLabelToLabelhashErrorType\n | ToBytesErrorType\n | Keccak256ErrorType\n | StringToBytesErrorType\n | ConcatErrorType\n | ErrorType\n\n/**\n * @description Hashes ENS name\n *\n * - Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `namehash`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @example\n * namehash('wevm.eth')\n * '0xf246651c1b9a6b141d19c2604e9a58f567973833990f830d882534a747801359'\n *\n * @link https://eips.ethereum.org/EIPS/eip-137\n */\nexport function namehash(name: string) {\n let result = new Uint8Array(32).fill(0)\n if (!name) return bytesToHex(result)\n\n const labels = name.split('.')\n // Iterate in reverse order building up hash\n for (let i = labels.length - 1; i >= 0; i -= 1) {\n const hashFromEncodedLabel = encodedLabelToLabelhash(labels[i])\n const hashed = hashFromEncodedLabel\n ? toBytes(hashFromEncodedLabel)\n : keccak256(stringToBytes(labels[i]), 'bytes')\n result = keccak256(concat([result, hashed]), 'bytes')\n }\n\n return bytesToHex(result)\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport {\n type StringToBytesErrorType,\n stringToBytes,\n} from '../encoding/toBytes.js'\nimport { type BytesToHexErrorType, bytesToHex } from '../encoding/toHex.js'\nimport { type Keccak256ErrorType, keccak256 } from '../hash/keccak256.js'\nimport {\n type EncodedLabelToLabelhashErrorType,\n encodedLabelToLabelhash,\n} from './encodedLabelToLabelhash.js'\n\nexport type LabelhashErrorType =\n | BytesToHexErrorType\n | EncodedLabelToLabelhashErrorType\n | Keccak256ErrorType\n | StringToBytesErrorType\n | ErrorType\n\n/**\n * @description Hashes ENS label\n *\n * - Since ENS labels prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS labels](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `labelhash`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @example\n * labelhash('eth')\n * '0x4f5b812789fc606be1b3b16908db13fc7a9adf7ca72641f84d75b47069d3d7f0'\n */\nexport function labelhash(label: string) {\n const result = new Uint8Array(32).fill(0)\n if (!label) return bytesToHex(result)\n return encodedLabelToLabelhash(label) || keccak256(stringToBytes(label))\n}\n","// Adapted from https://github.com/mafintosh/dns-packet\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray } from '../../types/misc.js'\nimport {\n type StringToBytesErrorType,\n stringToBytes,\n} from '../encoding/toBytes.js'\nimport {\n type EncodeLabelhashErrorType,\n encodeLabelhash,\n} from './encodeLabelhash.js'\nimport { type LabelhashErrorType, labelhash } from './labelhash.js'\n\nexport type PacketToBytesErrorType =\n | EncodeLabelhashErrorType\n | LabelhashErrorType\n | StringToBytesErrorType\n | ErrorType\n\n/*\n * @description Encodes a DNS packet into a ByteArray containing a UDP payload.\n *\n * @example\n * packetToBytes('awkweb.eth')\n * '0x0661776b7765620365746800'\n *\n * @see https://docs.ens.domains/resolution/names#dns\n *\n */\nexport function packetToBytes(packet: string): ByteArray {\n // strip leading and trailing `.`\n const value = packet.replace(/^\\.|\\.$/gm, '')\n if (value.length === 0) return new Uint8Array(1)\n\n const bytes = new Uint8Array(stringToBytes(value).byteLength + 2)\n\n let offset = 0\n const list = value.split('.')\n for (let i = 0; i < list.length; i++) {\n let encoded = stringToBytes(list[i])\n // if the length is > 255, make the encoded label value a labelhash\n // this is compatible with the universal resolver\n if (encoded.byteLength > 255)\n encoded = stringToBytes(encodeLabelhash(labelhash(list[i])))\n bytes[offset] = encoded.length\n bytes.set(encoded, offset + 1)\n offset += encoded.length + 1\n }\n\n if (bytes.byteLength !== offset + 1) return bytes.slice(0, offset + 1)\n\n return bytes\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\n\nexport type EncodeLabelhashErrorType = ErrorType\n\nexport function encodeLabelhash(hash: Hex): `[${string}]` {\n return `[${hash.slice(2)}]`\n}\n","import type { Abi } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { BaseError } from '../../errors/base.js'\nimport type { Chain } from '../../types/chain.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n ContractFunctionParameters,\n ContractFunctionReturnType,\n} from '../../types/contract.js'\nimport type { UnionEvaluate } from '../../types/utils.js'\nimport {\n type DecodeFunctionResultErrorType,\n decodeFunctionResult,\n} from '../../utils/abi/decodeFunctionResult.js'\nimport {\n type EncodeFunctionDataErrorType,\n type EncodeFunctionDataParameters,\n encodeFunctionData,\n} from '../../utils/abi/encodeFunctionData.js'\nimport {\n type GetContractErrorReturnType,\n getContractError,\n} from '../../utils/errors/getContractError.js'\nimport { getAction } from '../../utils/getAction.js'\n\nimport { type CallErrorType, type CallParameters, call } from './call.js'\n\nexport type ReadContractParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends ContractFunctionName<\n abi,\n 'pure' | 'view'\n > = ContractFunctionName<abi, 'pure' | 'view'>,\n args extends ContractFunctionArgs<\n abi,\n 'pure' | 'view',\n functionName\n > = ContractFunctionArgs<abi, 'pure' | 'view', functionName>,\n> = UnionEvaluate<\n Pick<\n CallParameters,\n | 'account'\n | 'blockNumber'\n | 'blockTag'\n | 'factory'\n | 'factoryData'\n | 'stateOverride'\n >\n> &\n ContractFunctionParameters<abi, 'pure' | 'view', functionName, args, boolean>\n\nexport type ReadContractReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends ContractFunctionName<\n abi,\n 'pure' | 'view'\n > = ContractFunctionName<abi, 'pure' | 'view'>,\n args extends ContractFunctionArgs<\n abi,\n 'pure' | 'view',\n functionName\n > = ContractFunctionArgs<abi, 'pure' | 'view', functionName>,\n> = ContractFunctionReturnType<abi, 'pure' | 'view', functionName, args>\n\nexport type ReadContractErrorType = GetContractErrorReturnType<\n CallErrorType | EncodeFunctionDataErrorType | DecodeFunctionResultErrorType\n>\n\n/**\n * Calls a read-only function on a contract, and returns the response.\n *\n * - Docs: https://viem.sh/docs/contract/readContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts_reading-contracts\n *\n * A \"read-only\" function (constant function) on a Solidity contract is denoted by a `view` or `pure` keyword. They can only read the state of the contract, and cannot make any changes to it. Since read-only methods do not change the state of the contract, they do not require any gas to be executed, and can be called by any user without the need to pay for gas.\n *\n * Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * @param client - Client to use\n * @param parameters - {@link ReadContractParameters}\n * @returns The response from the contract. Type is inferred. {@link ReadContractReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { readContract } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const result = await readContract(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function balanceOf(address) view returns (uint256)']),\n * functionName: 'balanceOf',\n * args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],\n * })\n * // 424122n\n */\nexport async function readContract<\n chain extends Chain | undefined,\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName<abi, 'pure' | 'view'>,\n const args extends ContractFunctionArgs<abi, 'pure' | 'view', functionName>,\n>(\n client: Client<Transport, chain>,\n parameters: ReadContractParameters<abi, functionName, args>,\n): Promise<ReadContractReturnType<abi, functionName, args>> {\n const { abi, address, args, functionName, ...rest } =\n parameters as ReadContractParameters\n const calldata = encodeFunctionData({\n abi,\n args,\n functionName,\n } as EncodeFunctionDataParameters)\n try {\n const { data } = await getAction(\n client,\n call,\n 'call',\n )({\n ...(rest as CallParameters),\n data: calldata,\n to: address!,\n })\n return decodeFunctionResult({\n abi,\n args,\n functionName,\n data: data || '0x',\n }) as ReadContractReturnType<abi, functionName>\n } catch (error) {\n throw getContractError(error as BaseError, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/readContract',\n functionName,\n })\n }\n}\n","import { BaseError } from './base.js'\n\nexport type EnsAvatarInvalidMetadataErrorType =\n EnsAvatarInvalidMetadataError & {\n name: 'EnsAvatarInvalidMetadataError'\n }\nexport class EnsAvatarInvalidMetadataError extends BaseError {\n constructor({ data }: { data: any }) {\n super(\n 'Unable to extract image from metadata. The metadata may be malformed or invalid.',\n {\n metaMessages: [\n '- Metadata must be a JSON object with at least an `image`, `image_url` or `image_data` property.',\n '',\n `Provided data: ${JSON.stringify(data)}`,\n ],\n name: 'EnsAvatarInvalidMetadataError',\n },\n )\n }\n}\n\nexport type EnsAvatarInvalidNftUriErrorType = EnsAvatarInvalidNftUriError & {\n name: 'EnsAvatarInvalidNftUriError'\n}\nexport class EnsAvatarInvalidNftUriError extends BaseError {\n constructor({ reason }: { reason: string }) {\n super(`ENS NFT avatar URI is invalid. ${reason}`, {\n name: 'EnsAvatarInvalidNftUriError',\n })\n }\n}\n\nexport type EnsAvatarUriResolutionErrorType = EnsAvatarUriResolutionError & {\n name: 'EnsAvatarUriResolutionError'\n}\nexport class EnsAvatarUriResolutionError extends BaseError {\n constructor({ uri }: { uri: string }) {\n super(\n `Unable to resolve ENS avatar URI \"${uri}\". The URI may be malformed, invalid, or does not respond with a valid image.`,\n { name: 'EnsAvatarUriResolutionError' },\n )\n }\n}\n\nexport type EnsAvatarUnsupportedNamespaceErrorType =\n EnsAvatarUnsupportedNamespaceError & {\n name: 'EnsAvatarUnsupportedNamespaceError'\n }\nexport class EnsAvatarUnsupportedNamespaceError extends BaseError {\n constructor({ namespace }: { namespace: string }) {\n super(\n `ENS NFT avatar namespace \"${namespace}\" is not supported. Must be \"erc721\" or \"erc1155\".`,\n { name: 'EnsAvatarUnsupportedNamespaceError' },\n )\n }\n}\n","import type { Address } from 'abitype'\n\nimport {\n type ReadContractErrorType,\n readContract,\n} from '../../../actions/public/readContract.js'\nimport type { Client } from '../../../clients/createClient.js'\nimport type { Transport } from '../../../clients/transports/createTransport.js'\nimport {\n EnsAvatarInvalidMetadataError,\n type EnsAvatarInvalidMetadataErrorType,\n EnsAvatarInvalidNftUriError,\n type EnsAvatarInvalidNftUriErrorType,\n EnsAvatarUnsupportedNamespaceError,\n type EnsAvatarUnsupportedNamespaceErrorType,\n EnsAvatarUriResolutionError,\n type EnsAvatarUriResolutionErrorType,\n} from '../../../errors/ens.js'\nimport type { ErrorType } from '../../../errors/utils.js'\nimport type { Chain } from '../../../types/chain.js'\nimport type { AssetGatewayUrls } from '../../../types/ens.js'\n\ntype UriItem = {\n uri: string\n isOnChain: boolean\n isEncoded: boolean\n}\n\nconst networkRegex =\n /(?<protocol>https?:\\/\\/[^\\/]*|ipfs:\\/|ipns:\\/|ar:\\/)?(?<root>\\/)?(?<subpath>ipfs\\/|ipns\\/)?(?<target>[\\w\\-.]+)(?<subtarget>\\/.*)?/\nconst ipfsHashRegex =\n /^(Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,})(\\/(?<target>[\\w\\-.]+))?(?<subtarget>\\/.*)?$/\nconst base64Regex = /^data:([a-zA-Z\\-/+]*);base64,([^\"].*)/\nconst dataURIRegex = /^data:([a-zA-Z\\-/+]*)?(;[a-zA-Z0-9].*?)?(,)/\n\ntype IsImageUriErrorType = ErrorType\n\n/** @internal */\nexport async function isImageUri(uri: string) {\n try {\n const res = await fetch(uri, { method: 'HEAD' })\n // retrieve content type header to check if content is image\n if (res.status === 200) {\n const contentType = res.headers.get('content-type')\n return contentType?.startsWith('image/')\n }\n return false\n } catch (error: any) {\n // if error is not cors related then fail\n if (typeof error === 'object' && typeof error.response !== 'undefined') {\n return false\n }\n // fail in NodeJS, since the error is not cors but any other network issue\n // biome-ignore lint/suspicious/noPrototypeBuiltins:\n if (!globalThis.hasOwnProperty('Image')) return false\n // in case of cors, use image api to validate if given url is an actual image\n return new Promise((resolve) => {\n const img = new Image()\n img.onload = () => {\n resolve(true)\n }\n img.onerror = () => {\n resolve(false)\n }\n img.src = uri\n })\n }\n}\n\ntype GetGatewayErrorType = ErrorType\n\n/** @internal */\nexport function getGateway(custom: string | undefined, defaultGateway: string) {\n if (!custom) return defaultGateway\n if (custom.endsWith('/')) return custom.slice(0, -1)\n return custom\n}\n\nexport type ResolveAvatarUriErrorType =\n | GetGatewayErrorType\n | EnsAvatarUriResolutionErrorType\n | ErrorType\n\nexport function resolveAvatarUri({\n uri,\n gatewayUrls,\n}: {\n uri: string\n gatewayUrls?: AssetGatewayUrls | undefined\n}): UriItem {\n const isEncoded = base64Regex.test(uri)\n if (isEncoded) return { uri, isOnChain: true, isEncoded }\n\n const ipfsGateway = getGateway(gatewayUrls?.ipfs, 'https://ipfs.io')\n const arweaveGateway = getGateway(gatewayUrls?.arweave, 'https://arweave.net')\n\n const networkRegexMatch = uri.match(networkRegex)\n const {\n protocol,\n subpath,\n target,\n subtarget = '',\n } = networkRegexMatch?.groups || {}\n\n const isIPNS = protocol === 'ipns:/' || subpath === 'ipns/'\n const isIPFS =\n protocol === 'ipfs:/' || subpath === 'ipfs/' || ipfsHashRegex.test(uri)\n\n if (uri.startsWith('http') && !isIPNS && !isIPFS) {\n let replacedUri = uri\n if (gatewayUrls?.arweave)\n replacedUri = uri.replace(/https:\\/\\/arweave.net/g, gatewayUrls?.arweave)\n return { uri: replacedUri, isOnChain: false, isEncoded: false }\n }\n\n if ((isIPNS || isIPFS) && target) {\n return {\n uri: `${ipfsGateway}/${isIPNS ? 'ipns' : 'ipfs'}/${target}${subtarget}`,\n isOnChain: false,\n isEncoded: false,\n }\n }\n\n if (protocol === 'ar:/' && target) {\n return {\n uri: `${arweaveGateway}/${target}${subtarget || ''}`,\n isOnChain: false,\n isEncoded: false,\n }\n }\n\n let parsedUri = uri.replace(dataURIRegex, '')\n if (parsedUri.startsWith('<svg')) {\n // if svg, base64 encode\n parsedUri = `data:image/svg+xml;base64,${btoa(parsedUri)}`\n }\n\n if (parsedUri.startsWith('data:') || parsedUri.startsWith('{')) {\n return {\n uri: parsedUri,\n isOnChain: true,\n isEncoded: false,\n }\n }\n\n throw new EnsAvatarUriResolutionError({ uri })\n}\n\nexport type GetJsonImageErrorType =\n | EnsAvatarInvalidMetadataErrorType\n | ErrorType\n\nexport function getJsonImage(data: any) {\n // validation check for json data, must include one of theses properties\n if (\n typeof data !== 'object' ||\n (!('image' in data) && !('image_url' in data) && !('image_data' in data))\n ) {\n throw new EnsAvatarInvalidMetadataError({ data })\n }\n\n return data.image || data.image_url || data.image_data\n}\n\nexport type GetMetadataAvatarUriErrorType =\n | EnsAvatarUriResolutionErrorType\n | ParseAvatarUriErrorType\n | GetJsonImageErrorType\n | ErrorType\n\nexport async function getMetadataAvatarUri({\n gatewayUrls,\n uri,\n}: {\n gatewayUrls?: AssetGatewayUrls | undefined\n uri: string\n}): Promise<string> {\n try {\n const res = await fetch(uri).then((res) => res.json())\n const image = await parseAvatarUri({\n gatewayUrls,\n uri: getJsonImage(res),\n })\n return image\n } catch {\n throw new EnsAvatarUriResolutionError({ uri })\n }\n}\n\nexport type ParseAvatarUriErrorType =\n | ResolveAvatarUriErrorType\n | IsImageUriErrorType\n | EnsAvatarUriResolutionErrorType\n | ErrorType\n\nexport async function parseAvatarUri({\n gatewayUrls,\n uri,\n}: {\n gatewayUrls?: AssetGatewayUrls | undefined\n uri: string\n}): Promise<string> {\n const { uri: resolvedURI, isOnChain } = resolveAvatarUri({ uri, gatewayUrls })\n if (isOnChain) return resolvedURI\n\n // check if resolvedURI is an image, if it is return the url\n const isImage = await isImageUri(resolvedURI)\n if (isImage) return resolvedURI\n\n throw new EnsAvatarUriResolutionError({ uri })\n}\n\ntype ParsedNft = {\n chainID: number\n namespace: string\n contractAddress: Address\n tokenID: string\n}\n\nexport type ParseNftUriErrorType = EnsAvatarInvalidNftUriErrorType | ErrorType\n\nexport function parseNftUri(uri_: string): ParsedNft {\n let uri = uri_\n // parse valid nft spec (CAIP-22/CAIP-29)\n // @see: https://github.com/ChainAgnostic/CAIPs/tree/master/CAIPs\n if (uri.startsWith('did:nft:')) {\n // convert DID to CAIP\n uri = uri.replace('did:nft:', '').replace(/_/g, '/')\n }\n\n const [reference, asset_namespace, tokenID] = uri.split('/')\n const [eip_namespace, chainID] = reference.split(':')\n const [erc_namespace, contractAddress] = asset_namespace.split(':')\n\n if (!eip_namespace || eip_namespace.toLowerCase() !== 'eip155')\n throw new EnsAvatarInvalidNftUriError({ reason: 'Only EIP-155 supported' })\n if (!chainID)\n throw new EnsAvatarInvalidNftUriError({ reason: 'Chain ID not found' })\n if (!contractAddress)\n throw new EnsAvatarInvalidNftUriError({\n reason: 'Contract address not found',\n })\n if (!tokenID)\n throw new EnsAvatarInvalidNftUriError({ reason: 'Token ID not found' })\n if (!erc_namespace)\n throw new EnsAvatarInvalidNftUriError({ reason: 'ERC namespace not found' })\n\n return {\n chainID: Number.parseInt(chainID),\n namespace: erc_namespace.toLowerCase(),\n contractAddress: contractAddress as Address,\n tokenID,\n }\n}\n\nexport type GetNftTokenUriErrorType =\n | ReadContractErrorType\n | EnsAvatarUnsupportedNamespaceErrorType\n | ErrorType\n\nexport async function getNftTokenUri<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n { nft }: { nft: ParsedNft },\n) {\n if (nft.namespace === 'erc721') {\n return readContract(client, {\n address: nft.contractAddress,\n abi: [\n {\n name: 'tokenURI',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'tokenId', type: 'uint256' }],\n outputs: [{ name: '', type: 'string' }],\n },\n ],\n functionName: 'tokenURI',\n args: [BigInt(nft.tokenID)],\n })\n }\n if (nft.namespace === 'erc1155') {\n return readContract(client, {\n address: nft.contractAddress,\n abi: [\n {\n name: 'uri',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: '_id', type: 'uint256' }],\n outputs: [{ name: '', type: 'string' }],\n },\n ],\n functionName: 'uri',\n args: [BigInt(nft.tokenID)],\n })\n }\n throw new EnsAvatarUnsupportedNamespaceError({ namespace: nft.namespace })\n}\n","import type { Client } from '../../../clients/createClient.js'\nimport type { Transport } from '../../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../../errors/utils.js'\nimport type { Chain } from '../../../types/chain.js'\nimport type { AssetGatewayUrls } from '../../../types/ens.js'\n\nimport {\n type GetJsonImageErrorType,\n type GetMetadataAvatarUriErrorType,\n type GetNftTokenUriErrorType,\n type ParseAvatarUriErrorType,\n type ParseNftUriErrorType,\n type ResolveAvatarUriErrorType,\n getJsonImage,\n getMetadataAvatarUri,\n getNftTokenUri,\n parseAvatarUri,\n parseNftUri,\n resolveAvatarUri,\n} from './utils.js'\n\nexport type ParseAvatarRecordErrorType =\n | ParseNftAvatarUriErrorType\n | ParseAvatarUriErrorType\n | ErrorType\n\n/*\n * @description Parses an ENS avatar record.\n *\n * @example\n * parseAvatarRecord('eip155:1/erc1155:0xb32979486938aa9694bfc898f35dbed459f44424/10063')\n * 'https://ipfs.io/ipfs/QmSP4nq9fnN9dAiCj42ug9Wa79rqmQerZXZch82VqpiH7U/image.gif'\n *\n * @see https://docs.ens.domains/web/avatars\n *\n */\nexport async function parseAvatarRecord<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n {\n gatewayUrls,\n record,\n }: {\n gatewayUrls?: AssetGatewayUrls | undefined\n record: string\n },\n): Promise<string> {\n if (/eip155:/i.test(record))\n return parseNftAvatarUri(client, { gatewayUrls, record })\n return parseAvatarUri({ uri: record, gatewayUrls })\n}\n\ntype ParseNftAvatarUriErrorType =\n | ParseNftUriErrorType\n | GetNftTokenUriErrorType\n | ResolveAvatarUriErrorType\n | ParseAvatarUriErrorType\n | GetJsonImageErrorType\n | GetMetadataAvatarUriErrorType\n | ErrorType\n\nasync function parseNftAvatarUri<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n {\n gatewayUrls,\n record,\n }: {\n gatewayUrls?: AssetGatewayUrls | undefined\n record: string\n },\n): Promise<string> {\n // parse NFT URI into properties\n const nft = parseNftUri(record)\n // fetch tokenURI from the NFT contract\n const nftUri = await getNftTokenUri(client, { nft })\n // resolve the URI from the fetched tokenURI\n const {\n uri: resolvedNftUri,\n isOnChain,\n isEncoded,\n } = resolveAvatarUri({ uri: nftUri, gatewayUrls })\n\n // if the resolved URI is on chain, return the data\n if (\n isOnChain &&\n (resolvedNftUri.includes('data:application/json;base64,') ||\n resolvedNftUri.startsWith('{'))\n ) {\n const encodedJson = isEncoded\n ? // if it is encoded, decode it\n atob(resolvedNftUri.replace('data:application/json;base64,', ''))\n : // if it isn't encoded assume it is a JSON string, but it could be anything (it will error if it is)\n resolvedNftUri\n\n const decoded = JSON.parse(encodedJson)\n return parseAvatarUri({ uri: getJsonImage(decoded), gatewayUrls })\n }\n\n let uriTokenId = nft.tokenID\n if (nft.namespace === 'erc1155')\n uriTokenId = uriTokenId.replace('0x', '').padStart(64, '0')\n\n return getMetadataAvatarUri({\n gatewayUrls,\n uri: resolvedNftUri.replace(/(?:0x)?{id}/, uriTokenId),\n })\n}\n","import type { Address } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport {\n textResolverAbi,\n universalResolverResolveAbi,\n} from '../../constants/abis.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Prettify } from '../../types/utils.js'\nimport {\n type DecodeFunctionResultErrorType,\n decodeFunctionResult,\n} from '../../utils/abi/decodeFunctionResult.js'\nimport {\n type EncodeFunctionDataErrorType,\n encodeFunctionData,\n} from '../../utils/abi/encodeFunctionData.js'\nimport {\n type GetChainContractAddressErrorType,\n getChainContractAddress,\n} from '../../utils/chain/getChainContractAddress.js'\nimport { type ToHexErrorType, toHex } from '../../utils/encoding/toHex.js'\nimport { isNullUniversalResolverError } from '../../utils/ens/errors.js'\nimport { type NamehashErrorType, namehash } from '../../utils/ens/namehash.js'\nimport {\n type PacketToBytesErrorType,\n packetToBytes,\n} from '../../utils/ens/packetToBytes.js'\nimport { getAction } from '../../utils/getAction.js'\nimport {\n type ReadContractErrorType,\n type ReadContractParameters,\n readContract,\n} from '../public/readContract.js'\n\nexport type GetEnsTextParameters = Prettify<\n Pick<ReadContractParameters, 'blockNumber' | 'blockTag'> & {\n /** ENS name to get Text for. */\n name: string\n /** Universal Resolver gateway URLs to use for resolving CCIP-read requests. */\n gatewayUrls?: string[] | undefined\n /** Text record to retrieve. */\n key: string\n /** Whether or not to throw errors propagated from the ENS Universal Resolver Contract. */\n strict?: boolean | undefined\n /** Address of ENS Universal Resolver Contract. */\n universalResolverAddress?: Address | undefined\n }\n>\n\nexport type GetEnsTextReturnType = string | null\n\nexport type GetEnsTextErrorType =\n | GetChainContractAddressErrorType\n | ReadContractErrorType\n | ToHexErrorType\n | PacketToBytesErrorType\n | EncodeFunctionDataErrorType\n | NamehashErrorType\n | DecodeFunctionResultErrorType\n\n/**\n * Gets a text record for specified ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsResolver\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsTextParameters}\n * @returns Address for ENS resolver. {@link GetEnsTextReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsText, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const twitterRecord = await getEnsText(client, {\n * name: normalize('wevm.eth'),\n * key: 'com.twitter',\n * })\n * // 'wevm_dev'\n */\nexport async function getEnsText<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n {\n blockNumber,\n blockTag,\n name,\n key,\n gatewayUrls,\n strict,\n universalResolverAddress: universalResolverAddress_,\n }: GetEnsTextParameters,\n): Promise<GetEnsTextReturnType> {\n let universalResolverAddress = universalResolverAddress_\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error(\n 'client chain not configured. universalResolverAddress is required.',\n )\n\n universalResolverAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'ensUniversalResolver',\n })\n }\n\n try {\n const readContractParameters = {\n address: universalResolverAddress,\n abi: universalResolverResolveAbi,\n functionName: 'resolve',\n args: [\n toHex(packetToBytes(name)),\n encodeFunctionData({\n abi: textResolverAbi,\n functionName: 'text',\n args: [namehash(name), key],\n }),\n ],\n blockNumber,\n blockTag,\n } as const\n\n const readContractAction = getAction(client, readContract, 'readContract')\n\n const res = gatewayUrls\n ? await readContractAction({\n ...readContractParameters,\n args: [...readContractParameters.args, gatewayUrls],\n })\n : await readContractAction(readContractParameters)\n\n if (res[0] === '0x') return null\n\n const record = decodeFunctionResult({\n abi: textResolverAbi,\n functionName: 'text',\n data: res[0],\n })\n\n return record === '' ? null : record\n } catch (err) {\n if (strict) throw err\n if (isNullUniversalResolverError(err, 'resolve')) return null\n throw err\n }\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { OnResponseFn } from '../../clients/transports/fallback.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { PublicRpcSchema } from '../../types/eip1193.js'\nimport type { EIP1193RequestFn } from '../../types/eip1193.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { Filter } from '../../types/utils.js'\n\ntype CreateFilterRequestScopeParameters = {\n method:\n | 'eth_newFilter'\n | 'eth_newPendingTransactionFilter'\n | 'eth_newBlockFilter'\n}\n\ntype FilterRpcSchema = Filter<\n PublicRpcSchema,\n { Method: 'eth_getFilterLogs' | 'eth_getFilterChanges' }\n>\n\ntype CreateFilterRequestScopeReturnType = (\n id: Hex,\n) => EIP1193RequestFn<FilterRpcSchema>\n\n/**\n * Scopes `request` to the filter ID. If the client is a fallback, it will\n * listen for responses and scope the child transport `request` function\n * to the successful filter ID.\n */\nexport function createFilterRequestScope<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n { method }: CreateFilterRequestScopeParameters,\n): CreateFilterRequestScopeReturnType {\n const requestMap: Record<Hex, EIP1193RequestFn> = {}\n\n if (client.transport.type === 'fallback')\n client.transport.onResponse?.(\n ({\n method: method_,\n response: id,\n status,\n transport,\n }: Parameters<OnResponseFn>[0]) => {\n if (status === 'success' && method === method_)\n requestMap[id as Hex] = transport.request\n },\n )\n\n return ((id) =>\n requestMap[id] || client.request) as CreateFilterRequestScopeReturnType\n}\n","import { BaseError } from './base.js'\n\nexport type FilterTypeNotSupportedErrorType = FilterTypeNotSupportedError & {\n name: 'FilterTypeNotSupportedError'\n}\nexport class FilterTypeNotSupportedError extends BaseError {\n constructor(type: string) {\n super(`Filter type \"${type}\" is not supported.`, {\n name: 'FilterTypeNotSupportedError',\n })\n }\n}\n","import type {\n Abi,\n AbiParameter,\n AbiParameterToPrimitiveType,\n ExtractAbiEvents,\n} from 'abitype'\n\nimport {\n AbiEventNotFoundError,\n type AbiEventNotFoundErrorType,\n} from '../../errors/abi.js'\nimport {\n FilterTypeNotSupportedError,\n type FilterTypeNotSupportedErrorType,\n} from '../../errors/log.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type {\n ContractEventArgs,\n ContractEventName,\n EventDefinition,\n} from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'\nimport { type ToBytesErrorType, toBytes } from '../encoding/toBytes.js'\nimport { type Keccak256ErrorType, keccak256 } from '../hash/keccak256.js'\nimport {\n type ToEventSelectorErrorType,\n toEventSelector,\n} from '../hash/toEventSelector.js'\nimport {\n type EncodeAbiParametersErrorType,\n encodeAbiParameters,\n} from './encodeAbiParameters.js'\nimport { type FormatAbiItemErrorType, formatAbiItem } from './formatAbiItem.js'\nimport { type GetAbiItemErrorType, getAbiItem } from './getAbiItem.js'\n\nconst docsPath = '/docs/contract/encodeEventTopics'\n\nexport type EncodeEventTopicsParameters<\n abi extends Abi | readonly unknown[] = Abi,\n eventName extends ContractEventName<abi> | undefined = ContractEventName<abi>,\n ///\n hasEvents = abi extends Abi\n ? Abi extends abi\n ? true\n : [ExtractAbiEvents<abi>] extends [never]\n ? false\n : true\n : true,\n allArgs = ContractEventArgs<\n abi,\n eventName extends ContractEventName<abi>\n ? eventName\n : ContractEventName<abi>\n >,\n allErrorNames = ContractEventName<abi>,\n> = {\n abi: abi\n args?: allArgs | undefined\n} & UnionEvaluate<\n IsNarrowable<abi, Abi> extends true\n ? abi['length'] extends 1\n ? { eventName?: eventName | allErrorNames | undefined }\n : { eventName: eventName | allErrorNames }\n : { eventName?: eventName | allErrorNames | undefined }\n> &\n (hasEvents extends true ? unknown : never)\n\nexport type EncodeEventTopicsReturnType = [Hex, ...(Hex | Hex[] | null)[]]\n\nexport type EncodeEventTopicsErrorType =\n | AbiEventNotFoundErrorType\n | EncodeArgErrorType\n | FormatAbiItemErrorType\n | GetAbiItemErrorType\n | ToEventSelectorErrorType\n | ErrorType\n\nexport function encodeEventTopics<\n const abi extends Abi | readonly unknown[],\n eventName extends ContractEventName<abi> | undefined = undefined,\n>(\n parameters: EncodeEventTopicsParameters<abi, eventName>,\n): EncodeEventTopicsReturnType {\n const { abi, eventName, args } = parameters as EncodeEventTopicsParameters\n\n let abiItem = abi[0]\n if (eventName) {\n const item = getAbiItem({ abi, name: eventName })\n if (!item) throw new AbiEventNotFoundError(eventName, { docsPath })\n abiItem = item\n }\n\n if (abiItem.type !== 'event')\n throw new AbiEventNotFoundError(undefined, { docsPath })\n\n const definition = formatAbiItem(abiItem)\n const signature = toEventSelector(definition as EventDefinition)\n\n let topics: (Hex | Hex[] | null)[] = []\n if (args && 'inputs' in abiItem) {\n const indexedInputs = abiItem.inputs?.filter(\n (param) => 'indexed' in param && param.indexed,\n )\n const args_ = Array.isArray(args)\n ? args\n : Object.values(args).length > 0\n ? (indexedInputs?.map((x: any) => (args as any)[x.name]) ?? [])\n : []\n\n if (args_.length > 0) {\n topics =\n indexedInputs?.map((param, i) => {\n if (Array.isArray(args_[i]))\n return args_[i].map((_: any, j: number) =>\n encodeArg({ param, value: args_[i][j] }),\n )\n return args_[i] ? encodeArg({ param, value: args_[i] }) : null\n }) ?? []\n }\n }\n return [signature, ...topics]\n}\n\nexport type EncodeArgErrorType =\n | Keccak256ErrorType\n | ToBytesErrorType\n | EncodeAbiParametersErrorType\n | FilterTypeNotSupportedErrorType\n | ErrorType\n\nfunction encodeArg({\n param,\n value,\n}: { param: AbiParameter; value: AbiParameterToPrimitiveType<AbiParameter> }) {\n if (param.type === 'string' || param.type === 'bytes')\n return keccak256(toBytes(value as string))\n if (param.type === 'tuple' || param.type.match(/^(.*)\\[(\\d+)?\\]$/))\n throw new FilterTypeNotSupportedError(param.type)\n return encodeAbiParameters([param], [value])\n}\n","import type { Abi, Address } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockNumber, BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type {\n ContractEventName,\n MaybeExtractEventArgsFromAbi,\n} from '../../types/contract.js'\nimport type { Filter } from '../../types/filter.js'\nimport type { Hex } from '../../types/misc.js'\nimport {\n type EncodeEventTopicsErrorType,\n type EncodeEventTopicsParameters,\n encodeEventTopics,\n} from '../../utils/abi/encodeEventTopics.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\nimport { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js'\n\nexport type CreateContractEventFilterParameters<\n abi extends Abi | readonly unknown[] = Abi,\n eventName extends ContractEventName<abi> | undefined = undefined,\n args extends\n | MaybeExtractEventArgsFromAbi<abi, eventName>\n | undefined = undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n> = {\n address?: Address | Address[] | undefined\n abi: abi\n eventName?: eventName | ContractEventName<abi> | undefined\n fromBlock?: fromBlock | BlockNumber | BlockTag | undefined\n /**\n * Whether or not the logs must match the indexed/non-indexed arguments in the event ABI item.\n * @default false\n */\n strict?: strict | boolean | undefined\n toBlock?: toBlock | BlockNumber | BlockTag | undefined\n} & (undefined extends eventName\n ? {\n args?: undefined\n }\n : MaybeExtractEventArgsFromAbi<abi, eventName> extends infer eventFilterArgs\n ? {\n args?:\n | eventFilterArgs\n | (args extends eventFilterArgs ? args : never)\n | undefined\n }\n : {\n args?: undefined\n })\n\nexport type CreateContractEventFilterReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n eventName extends ContractEventName<abi> | undefined = undefined,\n args extends\n | MaybeExtractEventArgsFromAbi<abi, eventName>\n | undefined = undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n> = Filter<'event', abi, eventName, args, strict, fromBlock, toBlock>\n\nexport type CreateContractEventFilterErrorType =\n | EncodeEventTopicsErrorType\n | RequestErrorType\n | NumberToHexErrorType\n | ErrorType\n\n/**\n * Creates a Filter to retrieve event logs that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges) or [`getFilterLogs`](https://viem.sh/docs/actions/public/getFilterLogs).\n *\n * - Docs: https://viem.sh/docs/contract/createContractEventFilter\n *\n * @param client - Client to use\n * @param parameters - {@link CreateContractEventFilterParameters}\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateContractEventFilterReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createContractEventFilter } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createContractEventFilter(client, {\n * abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']),\n * })\n */\nexport async function createContractEventFilter<\n chain extends Chain | undefined,\n const abi extends Abi | readonly unknown[],\n eventName extends ContractEventName<abi> | undefined,\n args extends MaybeExtractEventArgsFromAbi<abi, eventName> | undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n>(\n client: Client<Transport, chain>,\n parameters: CreateContractEventFilterParameters<\n abi,\n eventName,\n args,\n strict,\n fromBlock,\n toBlock\n >,\n): Promise<\n CreateContractEventFilterReturnType<\n abi,\n eventName,\n args,\n strict,\n fromBlock,\n toBlock\n >\n> {\n const { address, abi, args, eventName, fromBlock, strict, toBlock } =\n parameters as CreateContractEventFilterParameters\n\n const getRequest = createFilterRequestScope(client, {\n method: 'eth_newFilter',\n })\n\n const topics = eventName\n ? encodeEventTopics({\n abi,\n args,\n eventName,\n } as unknown as EncodeEventTopicsParameters)\n : undefined\n const id: Hex = await client.request({\n method: 'eth_newFilter',\n params: [\n {\n address,\n fromBlock:\n typeof fromBlock === 'bigint' ? numberToHex(fromBlock) : fromBlock,\n toBlock: typeof toBlock === 'bigint' ? numberToHex(toBlock) : toBlock,\n topics,\n },\n ],\n })\n\n return {\n abi,\n args,\n eventName,\n id,\n request: getRequest(id),\n strict: Boolean(strict),\n type: 'event',\n } as unknown as CreateContractEventFilterReturnType<\n abi,\n eventName,\n args,\n strict,\n fromBlock,\n toBlock\n >\n}\n","import type { AbiEvent, Address } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockNumber, BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type {\n MaybeAbiEventName,\n MaybeExtractEventArgsFromAbi,\n} from '../../types/contract.js'\nimport type { Filter } from '../../types/filter.js'\nimport type { Hex, LogTopic } from '../../types/misc.js'\nimport type { Prettify } from '../../types/utils.js'\nimport {\n type EncodeEventTopicsErrorType,\n type EncodeEventTopicsParameters,\n encodeEventTopics,\n} from '../../utils/abi/encodeEventTopics.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\nimport { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js'\n\nexport type CreateEventFilterParameters<\n abiEvent extends AbiEvent | undefined = undefined,\n abiEvents extends\n | readonly AbiEvent[]\n | readonly unknown[]\n | undefined = abiEvent extends AbiEvent ? [abiEvent] : undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n //\n _eventName extends string | undefined = MaybeAbiEventName<abiEvent>,\n _args extends\n | MaybeExtractEventArgsFromAbi<abiEvents, _eventName>\n | undefined = undefined,\n> = {\n address?: Address | Address[] | undefined\n fromBlock?: fromBlock | BlockNumber | BlockTag | undefined\n toBlock?: toBlock | BlockNumber | BlockTag | undefined\n} & (MaybeExtractEventArgsFromAbi<\n abiEvents,\n _eventName\n> extends infer eventFilterArgs\n ?\n | {\n args:\n | eventFilterArgs\n | (_args extends eventFilterArgs ? _args : never)\n event: abiEvent\n events?: undefined\n /**\n * Whether or not the logs must match the indexed/non-indexed arguments on `event`.\n * @default false\n */\n strict?: strict | undefined\n }\n | {\n args?: undefined\n event?: abiEvent | undefined\n events?: undefined\n /**\n * Whether or not the logs must match the indexed/non-indexed arguments on `event`.\n * @default false\n */\n strict?: strict | undefined\n }\n | {\n args?: undefined\n event?: undefined\n events: abiEvents | undefined\n /**\n * Whether or not the logs must match the indexed/non-indexed arguments on `event`.\n * @default false\n */\n strict?: strict | undefined\n }\n | {\n args?: undefined\n event?: undefined\n events?: undefined\n strict?: undefined\n }\n : {\n args?: undefined\n event?: undefined\n events?: undefined\n strict?: undefined\n })\n\nexport type CreateEventFilterReturnType<\n abiEvent extends AbiEvent | undefined = undefined,\n abiEvents extends\n | readonly AbiEvent[]\n | readonly unknown[]\n | undefined = abiEvent extends AbiEvent ? [abiEvent] : undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n _eventName extends string | undefined = MaybeAbiEventName<abiEvent>,\n _args extends\n | MaybeExtractEventArgsFromAbi<abiEvents, _eventName>\n | undefined = undefined,\n> = Prettify<\n Filter<'event', abiEvents, _eventName, _args, strict, fromBlock, toBlock>\n>\n\nexport type CreateEventFilterErrorType =\n | EncodeEventTopicsErrorType\n | RequestErrorType\n | NumberToHexErrorType\n | ErrorType\n\n/**\n * Creates a [`Filter`](https://viem.sh/docs/glossary/types#filter) to listen for new events that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).\n *\n * - Docs: https://viem.sh/docs/actions/public/createEventFilter\n * - JSON-RPC Methods: [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter)\n *\n * @param client - Client to use\n * @param parameters - {@link CreateEventFilterParameters}\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateEventFilterReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createEventFilter } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createEventFilter(client, {\n * address: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',\n * })\n */\nexport async function createEventFilter<\n chain extends Chain | undefined,\n const abiEvent extends AbiEvent | undefined = undefined,\n const abiEvents extends\n | readonly AbiEvent[]\n | readonly unknown[]\n | undefined = abiEvent extends AbiEvent ? [abiEvent] : undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber<bigint> | BlockTag | undefined = undefined,\n toBlock extends BlockNumber<bigint> | BlockTag | undefined = undefined,\n _eventName extends string | undefined = MaybeAbiEventName<abiEvent>,\n _args extends\n | MaybeExtractEventArgsFromAbi<abiEvents, _eventName>\n | undefined = undefined,\n>(\n client: Client<Transport, chain>,\n {\n address,\n args,\n event,\n events: events_,\n fromBlock,\n strict,\n toBlock,\n }: CreateEventFilterParameters<\n abiEvent,\n abiEvents,\n strict,\n fromBlock,\n toBlock,\n _eventName,\n _args\n > = {} as any,\n): Promise<\n CreateEventFilterReturnType<\n abiEvent,\n abiEvents,\n strict,\n fromBlock,\n toBlock,\n _eventName,\n _args\n >\n> {\n const events = events_ ?? (event ? [event] : undefined)\n\n const getRequest = createFilterRequestScope(client, {\n method: 'eth_newFilter',\n })\n\n let topics: LogTopic[] = []\n if (events) {\n const encoded = (events as AbiEvent[]).flatMap((event) =>\n encodeEventTopics({\n abi: [event],\n eventName: (event as AbiEvent).name,\n args,\n } as EncodeEventTopicsParameters),\n )\n // TODO: Clean up type casting\n topics = [encoded as LogTopic]\n if (event) topics = topics[0] as LogTopic[]\n }\n\n const id: Hex = await client.request({\n method: 'eth_newFilter',\n params: [\n {\n address,\n fromBlock:\n typeof fromBlock === 'bigint' ? numberToHex(fromBlock) : fromBlock,\n toBlock: typeof toBlock === 'bigint' ? numberToHex(toBlock) : toBlock,\n ...(topics.length ? { topics } : {}),\n },\n ],\n })\n\n return {\n abi: events,\n args,\n eventName: event ? (event as AbiEvent).name : undefined,\n fromBlock,\n id,\n request: getRequest(id),\n strict: Boolean(strict),\n toBlock,\n type: 'event',\n } as unknown as CreateEventFilterReturnType<\n abiEvent,\n abiEvents,\n strict,\n fromBlock,\n toBlock,\n _eventName,\n _args\n >\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Filter } from '../../types/filter.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js'\n\nexport type CreatePendingTransactionFilterReturnType = Filter<'transaction'>\n\nexport type CreatePendingTransactionFilterErrorType =\n | RequestErrorType\n | ErrorType\n\n/**\n * Creates a Filter to listen for new pending transaction hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).\n *\n * - Docs: https://viem.sh/docs/actions/public/createPendingTransactionFilter\n * - JSON-RPC Methods: [`eth_newPendingTransactionFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter)\n *\n * @param client - Client to use\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateBlockFilterReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createPendingTransactionFilter } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createPendingTransactionFilter(client)\n * // { id: \"0x345a6572337856574a76364e457a4366\", type: 'transaction' }\n */\nexport async function createPendingTransactionFilter<\n transport extends Transport,\n chain extends Chain | undefined,\n>(\n client: Client<transport, chain>,\n): Promise<CreatePendingTransactionFilterReturnType> {\n const getRequest = createFilterRequestScope(client, {\n method: 'eth_newPendingTransactionFilter',\n })\n const id = await client.request({\n method: 'eth_newPendingTransactionFilter',\n })\n return { id, request: getRequest(id), type: 'transaction' }\n}\n","import type { ErrorType } from '../../errors/utils.js'\n\n/** @internal */\nexport const promiseCache = /*#__PURE__*/ new Map()\n/** @internal */\nexport const responseCache = /*#__PURE__*/ new Map()\n\nexport type GetCacheErrorType = ErrorType\n\nexport function getCache<data>(cacheKey: string) {\n const buildCache = <data>(cacheKey: string, cache: Map<string, data>) => ({\n clear: () => cache.delete(cacheKey),\n get: () => cache.get(cacheKey),\n set: (data: data) => cache.set(cacheKey, data),\n })\n\n const promise = buildCache<Promise<data>>(cacheKey, promiseCache)\n const response = buildCache<{ created: Date; data: data }>(\n cacheKey,\n responseCache,\n )\n\n return {\n clear: () => {\n promise.clear()\n response.clear()\n },\n promise,\n response,\n }\n}\n\ntype WithCacheParameters = {\n /** The key to cache the data against. */\n cacheKey: string\n /** The time that cached data will remain in memory. Default: Infinity (no expiry) */\n cacheTime?: number | undefined\n}\n\n/**\n * @description Returns the result of a given promise, and caches the result for\n * subsequent invocations against a provided cache key.\n */\nexport async function withCache<data>(\n fn: () => Promise<data>,\n { cacheKey, cacheTime = Number.POSITIVE_INFINITY }: WithCacheParameters,\n) {\n const cache = getCache<data>(cacheKey)\n\n // If a response exists in the cache, and it's not expired, return it\n // and do not invoke the promise.\n // If the max age is 0, the cache is disabled.\n const response = cache.response.get()\n if (response && cacheTime > 0) {\n const age = new Date().getTime() - response.created.getTime()\n if (age < cacheTime) return response.data\n }\n\n let promise = cache.promise.get()\n if (!promise) {\n promise = fn()\n\n // Store the promise in the cache so that subsequent invocations\n // will wait for the same promise to resolve (deduping).\n cache.promise.set(promise)\n }\n\n try {\n const data = await promise\n\n // Store the response in the cache so that subsequent invocations\n // will return the same response.\n cache.response.set({ created: new Date(), data })\n\n return data\n } finally {\n // Clear the promise cache so that subsequent invocations will\n // invoke the promise again.\n cache.promise.clear()\n }\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type GetCacheErrorType,\n getCache,\n withCache,\n} from '../../utils/promise/withCache.js'\n\nexport type GetBlockNumberParameters = {\n /** Time (in ms) that cached block number will remain in memory. */\n cacheTime?: number | undefined\n}\n\nexport type GetBlockNumberReturnType = bigint\n\nexport type GetBlockNumberErrorType = RequestErrorType | ErrorType\n\nconst cacheKey = (id: string) => `blockNumber.${id}`\n\n/** @internal */\nexport type GetBlockNumberCacheErrorType = GetCacheErrorType | ErrorType\n\n/** @internal */\nexport function getBlockNumberCache(id: string) {\n return getCache(cacheKey(id))\n}\n\n/**\n * Returns the number of the most recent block seen.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBlockNumber\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks_fetching-blocks\n * - JSON-RPC Methods: [`eth_blockNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber)\n *\n * @param client - Client to use\n * @param parameters - {@link GetBlockNumberParameters}\n * @returns The number of the block. {@link GetBlockNumberReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBlockNumber } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const blockNumber = await getBlockNumber(client)\n * // 69420n\n */\nexport async function getBlockNumber<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n { cacheTime = client.cacheTime }: GetBlockNumberParameters = {},\n): Promise<GetBlockNumberReturnType> {\n const blockNumberHex = await withCache(\n () =>\n client.request({\n method: 'eth_blockNumber',\n }),\n { cacheKey: cacheKey(client.uid), cacheTime },\n )\n return BigInt(blockNumberHex)\n}\n","import type { Address } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\n\nexport type GetCodeParameters = {\n address: Address\n} & (\n | {\n blockNumber?: undefined\n blockTag?: BlockTag | undefined\n }\n | {\n blockNumber?: bigint | undefined\n blockTag?: undefined\n }\n)\n\nexport type GetCodeReturnType = Hex | undefined\n\nexport type GetCodeErrorType =\n | NumberToHexErrorType\n | RequestErrorType\n | ErrorType\n\n/**\n * Retrieves the bytecode at an address.\n *\n * - Docs: https://viem.sh/docs/contract/getCode\n * - JSON-RPC Methods: [`eth_getCode`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getcode)\n *\n * @param client - Client to use\n * @param parameters - {@link GetCodeParameters}\n * @returns The contract's bytecode. {@link GetCodeReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getCode } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const code = await getCode(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * })\n */\nexport async function getCode<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n { address, blockNumber, blockTag = 'latest' }: GetCodeParameters,\n): Promise<GetCodeReturnType> {\n const blockNumberHex =\n blockNumber !== undefined ? numberToHex(blockNumber) : undefined\n const hex = await client.request(\n {\n method: 'eth_getCode',\n params: [address, blockNumberHex || blockTag],\n },\n { dedupe: Boolean(blockNumberHex) },\n )\n if (hex === '0x') return undefined\n return hex\n}\n","import type { Abi, AbiParameter } from 'abitype'\n\nimport {\n AbiDecodingDataSizeTooSmallError,\n type AbiDecodingDataSizeTooSmallErrorType,\n AbiEventSignatureEmptyTopicsError,\n type AbiEventSignatureEmptyTopicsErrorType,\n AbiEventSignatureNotFoundError,\n type AbiEventSignatureNotFoundErrorType,\n DecodeLogDataMismatch,\n type DecodeLogDataMismatchErrorType,\n DecodeLogTopicsMismatch,\n type DecodeLogTopicsMismatchErrorType,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type {\n ContractEventArgsFromTopics,\n ContractEventName,\n EventDefinition,\n} from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type {\n IsNarrowable,\n Prettify,\n UnionEvaluate,\n} from '../../types/utils.js'\nimport { size } from '../data/size.js'\nimport {\n type ToEventSelectorErrorType,\n toEventSelector,\n} from '../hash/toEventSelector.js'\n\nimport { PositionOutOfBoundsError } from '../../errors/cursor.js'\nimport {\n type DecodeAbiParametersErrorType,\n decodeAbiParameters,\n} from './decodeAbiParameters.js'\nimport { type FormatAbiItemErrorType, formatAbiItem } from './formatAbiItem.js'\n\nexport type DecodeEventLogParameters<\n abi extends Abi | readonly unknown[] = Abi,\n eventName extends ContractEventName<abi> | undefined = ContractEventName<abi>,\n topics extends Hex[] = Hex[],\n data extends Hex | undefined = undefined,\n strict extends boolean = true,\n> = {\n abi: abi\n data?: data | undefined\n eventName?: eventName | ContractEventName<abi> | undefined\n strict?: strict | boolean | undefined\n topics: [signature: Hex, ...args: topics] | []\n}\n\nexport type DecodeEventLogReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n eventName extends ContractEventName<abi> | undefined = ContractEventName<abi>,\n topics extends Hex[] = Hex[],\n data extends Hex | undefined = undefined,\n strict extends boolean = true,\n ///\n allEventNames extends\n ContractEventName<abi> = eventName extends ContractEventName<abi>\n ? eventName\n : ContractEventName<abi>,\n> = IsNarrowable<abi, Abi> extends true\n ? {\n [name in allEventNames]: Prettify<\n {\n eventName: name\n } & UnionEvaluate<\n ContractEventArgsFromTopics<abi, name, strict> extends infer allArgs\n ? topics extends readonly []\n ? data extends undefined\n ? { args?: undefined }\n : { args?: allArgs | undefined }\n : { args: allArgs }\n : never\n >\n >\n }[allEventNames]\n : {\n eventName: eventName\n args: readonly unknown[] | undefined\n }\n\nexport type DecodeEventLogErrorType =\n | AbiDecodingDataSizeTooSmallErrorType\n | AbiEventSignatureEmptyTopicsErrorType\n | AbiEventSignatureNotFoundErrorType\n | DecodeAbiParametersErrorType\n | DecodeLogTopicsMismatchErrorType\n | DecodeLogDataMismatchErrorType\n | FormatAbiItemErrorType\n | ToEventSelectorErrorType\n | ErrorType\n\nconst docsPath = '/docs/contract/decodeEventLog'\n\nexport function decodeEventLog<\n const abi extends Abi | readonly unknown[],\n eventName extends ContractEventName<abi> | undefined = undefined,\n topics extends Hex[] = Hex[],\n data extends Hex | undefined = undefined,\n strict extends boolean = true,\n>(\n parameters: DecodeEventLogParameters<abi, eventName, topics, data, strict>,\n): DecodeEventLogReturnType<abi, eventName, topics, data, strict> {\n const {\n abi,\n data,\n strict: strict_,\n topics,\n } = parameters as DecodeEventLogParameters\n\n const strict = strict_ ?? true\n const [signature, ...argTopics] = topics\n if (!signature) throw new AbiEventSignatureEmptyTopicsError({ docsPath })\n\n const abiItem = (() => {\n if (abi.length === 1) return abi[0]\n return abi.find(\n (x) =>\n x.type === 'event' &&\n signature === toEventSelector(formatAbiItem(x) as EventDefinition),\n )\n })()\n\n if (!(abiItem && 'name' in abiItem) || abiItem.type !== 'event')\n throw new AbiEventSignatureNotFoundError(signature, { docsPath })\n\n const { name, inputs } = abiItem\n const isUnnamed = inputs?.some((x) => !('name' in x && x.name))\n\n let args: any = isUnnamed ? [] : {}\n\n // Decode topics (indexed args).\n const indexedInputs = inputs.filter((x) => 'indexed' in x && x.indexed)\n for (let i = 0; i < indexedInputs.length; i++) {\n const param = indexedInputs[i]\n const topic = argTopics[i]\n if (!topic)\n throw new DecodeLogTopicsMismatch({\n abiItem,\n param: param as AbiParameter & { indexed: boolean },\n })\n args[isUnnamed ? i : param.name || i] = decodeTopic({ param, value: topic })\n }\n\n // Decode data (non-indexed args).\n const nonIndexedInputs = inputs.filter((x) => !('indexed' in x && x.indexed))\n if (nonIndexedInputs.length > 0) {\n if (data && data !== '0x') {\n try {\n const decodedData = decodeAbiParameters(nonIndexedInputs, data)\n if (decodedData) {\n if (isUnnamed) args = [...args, ...decodedData]\n else {\n for (let i = 0; i < nonIndexedInputs.length; i++) {\n args[nonIndexedInputs[i].name!] = decodedData[i]\n }\n }\n }\n } catch (err) {\n if (strict) {\n if (\n err instanceof AbiDecodingDataSizeTooSmallError ||\n err instanceof PositionOutOfBoundsError\n )\n throw new DecodeLogDataMismatch({\n abiItem,\n data: data,\n params: nonIndexedInputs,\n size: size(data),\n })\n throw err\n }\n }\n } else if (strict) {\n throw new DecodeLogDataMismatch({\n abiItem,\n data: '0x',\n params: nonIndexedInputs,\n size: 0,\n })\n }\n }\n\n return {\n eventName: name,\n args: Object.values(args).length > 0 ? args : undefined,\n } as unknown as DecodeEventLogReturnType<abi, eventName, topics, data, strict>\n}\n\nfunction decodeTopic({ param, value }: { param: AbiParameter; value: Hex }) {\n if (\n param.type === 'string' ||\n param.type === 'bytes' ||\n param.type === 'tuple' ||\n param.type.match(/^(.*)\\[(\\d+)?\\]$/)\n )\n return value\n const decodedArg = decodeAbiParameters([param], value) || []\n return decodedArg[0]\n}\n","// TODO(v3): checksum address.\n\nimport type { Abi, AbiEvent, AbiEventParameter, Address } from 'abitype'\nimport {\n AbiEventSignatureNotFoundError,\n DecodeLogDataMismatch,\n DecodeLogTopicsMismatch,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ContractEventName, GetEventArgs } from '../../types/contract.js'\nimport type { Log } from '../../types/log.js'\nimport type { RpcLog } from '../../types/rpc.js'\nimport { isAddressEqual } from '../address/isAddressEqual.js'\nimport { toBytes } from '../encoding/toBytes.js'\nimport { keccak256 } from '../hash/keccak256.js'\nimport { toEventSelector } from '../hash/toEventSelector.js'\nimport {\n type DecodeEventLogErrorType,\n decodeEventLog,\n} from './decodeEventLog.js'\n\nexport type ParseEventLogsParameters<\n abi extends Abi | readonly unknown[] = Abi,\n eventName extends\n | ContractEventName<abi>\n | ContractEventName<abi>[]\n | undefined = ContractEventName<abi>,\n strict extends boolean | undefined = boolean | undefined,\n ///\n allArgs = GetEventArgs<\n abi,\n eventName extends ContractEventName<abi>\n ? eventName\n : ContractEventName<abi>,\n {\n EnableUnion: true\n IndexedOnly: false\n Required: false\n }\n >,\n> = {\n /** Contract ABI. */\n abi: abi\n /** Arguments for the event. */\n args?: allArgs | undefined\n /** Contract event. */\n eventName?:\n | eventName\n | ContractEventName<abi>\n | ContractEventName<abi>[]\n | undefined\n /** List of logs. */\n logs: (Log | RpcLog)[]\n strict?: strict | boolean | undefined\n}\n\nexport type ParseEventLogsReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n eventName extends\n | ContractEventName<abi>\n | ContractEventName<abi>[]\n | undefined = ContractEventName<abi>,\n strict extends boolean | undefined = boolean | undefined,\n ///\n derivedEventName extends\n | ContractEventName<abi>\n | undefined = eventName extends ContractEventName<abi>[]\n ? eventName[number]\n : eventName,\n> = Log<bigint, number, false, undefined, strict, abi, derivedEventName>[]\n\nexport type ParseEventLogsErrorType = DecodeEventLogErrorType | ErrorType\n\n/**\n * Extracts & decodes logs matching the provided signature(s) (`abi` + optional `eventName`)\n * from a set of opaque logs.\n *\n * @param parameters - {@link ParseEventLogsParameters}\n * @returns The logs. {@link ParseEventLogsReturnType}\n *\n * @example\n * import { createClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { parseEventLogs } from 'viem/op-stack'\n *\n * const client = createClient({\n * chain: mainnet,\n * transport: http(),\n * })\n *\n * const receipt = await getTransactionReceipt(client, {\n * hash: '0xec23b2ba4bc59ba61554507c1b1bc91649e6586eb2dd00c728e8ed0db8bb37ea',\n * })\n *\n * const logs = parseEventLogs({ logs: receipt.logs })\n * // [{ args: { ... }, eventName: 'TransactionDeposited', ... }, ...]\n */\nexport function parseEventLogs<\n abi extends Abi | readonly unknown[],\n strict extends boolean | undefined = true,\n eventName extends\n | ContractEventName<abi>\n | ContractEventName<abi>[]\n | undefined = undefined,\n>(\n parameters: ParseEventLogsParameters<abi, eventName, strict>,\n): ParseEventLogsReturnType<abi, eventName, strict> {\n const { abi, args, logs, strict = true } = parameters\n\n const eventName = (() => {\n if (!parameters.eventName) return undefined\n if (Array.isArray(parameters.eventName)) return parameters.eventName\n return [parameters.eventName as string]\n })()\n\n return logs\n .map((log) => {\n try {\n const abiItem = (abi as Abi).find(\n (abiItem) =>\n abiItem.type === 'event' &&\n log.topics[0] === toEventSelector(abiItem),\n ) as AbiEvent\n if (!abiItem) return null\n\n const event = decodeEventLog({\n ...log,\n abi: [abiItem],\n strict,\n })\n\n // Check that the decoded event name matches the provided event name.\n if (eventName && !eventName.includes(event.eventName)) return null\n\n // Check that the decoded event args match the provided args.\n if (\n !includesArgs({\n args: event.args,\n inputs: abiItem.inputs,\n matchArgs: args,\n })\n )\n return null\n\n return { ...event, ...log }\n } catch (err) {\n let eventName: string | undefined\n let isUnnamed: boolean | undefined\n\n if (err instanceof AbiEventSignatureNotFoundError) return null\n if (\n err instanceof DecodeLogDataMismatch ||\n err instanceof DecodeLogTopicsMismatch\n ) {\n // If strict mode is on, and log data/topics do not match event definition, skip.\n if (strict) return null\n eventName = err.abiItem.name\n isUnnamed = err.abiItem.inputs?.some((x) => !('name' in x && x.name))\n }\n\n // Set args to empty if there is an error decoding (e.g. indexed/non-indexed params mismatch).\n return { ...log, args: isUnnamed ? [] : {}, eventName }\n }\n })\n .filter(Boolean) as unknown as ParseEventLogsReturnType<\n abi,\n eventName,\n strict\n >\n}\n\nfunction includesArgs(parameters: {\n args: unknown\n inputs: AbiEvent['inputs']\n matchArgs: unknown\n}) {\n const { args, inputs, matchArgs } = parameters\n\n if (!matchArgs) return true\n if (!args) return false\n\n function isEqual(input: AbiEventParameter, value: unknown, arg: unknown) {\n try {\n if (input.type === 'address')\n return isAddressEqual(value as Address, arg as Address)\n if (input.type === 'string' || input.type === 'bytes')\n return keccak256(toBytes(value as string)) === arg\n return value === arg\n } catch {\n return false\n }\n }\n\n if (Array.isArray(args) && Array.isArray(matchArgs)) {\n return matchArgs.every((value, index) => {\n if (value === null || value === undefined) return true\n const input = inputs[index]\n if (!input) return false\n const value_ = Array.isArray(value) ? value : [value]\n return value_.some((value) => isEqual(input, value, args[index]))\n })\n }\n\n if (\n typeof args === 'object' &&\n !Array.isArray(args) &&\n typeof matchArgs === 'object' &&\n !Array.isArray(matchArgs)\n )\n return Object.entries(matchArgs).every(([key, value]) => {\n if (value === null || value === undefined) return true\n const input = inputs.find((input) => input.name === key)\n if (!input) return false\n const value_ = Array.isArray(value) ? value : [value]\n return value_.some((value) =>\n isEqual(input, value, (args as Record<string, unknown>)[key]),\n )\n })\n\n return false\n}\n","import type { AbiEvent, Address } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockNumber, BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type {\n MaybeAbiEventName,\n MaybeExtractEventArgsFromAbi,\n} from '../../types/contract.js'\nimport type { Log } from '../../types/log.js'\nimport type { Hash, LogTopic } from '../../types/misc.js'\nimport type { RpcLog } from '../../types/rpc.js'\nimport type { DecodeEventLogErrorType } from '../../utils/abi/decodeEventLog.js'\nimport {\n type EncodeEventTopicsErrorType,\n type EncodeEventTopicsParameters,\n encodeEventTopics,\n} from '../../utils/abi/encodeEventTopics.js'\nimport { parseEventLogs } from '../../utils/abi/parseEventLogs.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\nimport {\n type FormatLogErrorType,\n formatLog,\n} from '../../utils/formatters/log.js'\n\nexport type GetLogsParameters<\n abiEvent extends AbiEvent | undefined = undefined,\n abiEvents extends\n | readonly AbiEvent[]\n | readonly unknown[]\n | undefined = abiEvent extends AbiEvent ? [abiEvent] : undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n //\n _eventName extends string | undefined = MaybeAbiEventName<abiEvent>,\n> = {\n /** Address or list of addresses from which logs originated */\n address?: Address | Address[] | undefined\n} & (\n | {\n event: abiEvent\n events?: undefined\n args?: MaybeExtractEventArgsFromAbi<abiEvents, _eventName> | undefined\n /**\n * Whether or not the logs must match the indexed/non-indexed arguments on `event`.\n * @default false\n */\n strict?: strict | undefined\n }\n | {\n event?: undefined\n events: abiEvents\n args?: undefined\n /**\n * Whether or not the logs must match the indexed/non-indexed arguments on `event`.\n * @default false\n */\n strict?: strict | undefined\n }\n | {\n event?: undefined\n events?: undefined\n args?: undefined\n strict?: undefined\n }\n) &\n (\n | {\n /** Block number or tag after which to include logs */\n fromBlock?: fromBlock | BlockNumber | BlockTag | undefined\n /** Block number or tag before which to include logs */\n toBlock?: toBlock | BlockNumber | BlockTag | undefined\n blockHash?: undefined\n }\n | {\n fromBlock?: undefined\n toBlock?: undefined\n /** Hash of block to include logs from */\n blockHash?: Hash | undefined\n }\n )\n\nexport type GetLogsReturnType<\n abiEvent extends AbiEvent | undefined = undefined,\n abiEvents extends\n | readonly AbiEvent[]\n | readonly unknown[]\n | undefined = abiEvent extends AbiEvent ? [abiEvent] : undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n //\n _eventName extends string | undefined = MaybeAbiEventName<abiEvent>,\n _pending extends boolean =\n | (fromBlock extends 'pending' ? true : false)\n | (toBlock extends 'pending' ? true : false),\n> = Log<bigint, number, _pending, abiEvent, strict, abiEvents, _eventName>[]\n\nexport type GetLogsErrorType =\n | DecodeEventLogErrorType\n | EncodeEventTopicsErrorType\n | FormatLogErrorType\n | NumberToHexErrorType\n | RequestErrorType\n | ErrorType\n\n/**\n * Returns a list of event logs matching the provided parameters.\n *\n * - Docs: https://viem.sh/docs/actions/public/getLogs\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/logs_event-logs\n * - JSON-RPC Methods: [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs)\n *\n * @param client - Client to use\n * @param parameters - {@link GetLogsParameters}\n * @returns A list of event logs. {@link GetLogsReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbiItem } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getLogs } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const logs = await getLogs(client)\n */\nexport async function getLogs<\n chain extends Chain | undefined,\n const abiEvent extends AbiEvent | undefined = undefined,\n const abiEvents extends\n | readonly AbiEvent[]\n | readonly unknown[]\n | undefined = abiEvent extends AbiEvent ? [abiEvent] : undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n>(\n client: Client<Transport, chain>,\n {\n address,\n blockHash,\n fromBlock,\n toBlock,\n event,\n events: events_,\n args,\n strict: strict_,\n }: GetLogsParameters<abiEvent, abiEvents, strict, fromBlock, toBlock> = {},\n): Promise<GetLogsReturnType<abiEvent, abiEvents, strict, fromBlock, toBlock>> {\n const strict = strict_ ?? false\n const events = events_ ?? (event ? [event] : undefined)\n\n let topics: LogTopic[] = []\n if (events) {\n const encoded = (events as AbiEvent[]).flatMap((event) =>\n encodeEventTopics({\n abi: [event],\n eventName: (event as AbiEvent).name,\n args: events_ ? undefined : args,\n } as EncodeEventTopicsParameters),\n )\n // TODO: Clean up type casting\n topics = [encoded as LogTopic]\n if (event) topics = topics[0] as LogTopic[]\n }\n\n let logs: RpcLog[]\n if (blockHash) {\n logs = await client.request({\n method: 'eth_getLogs',\n params: [{ address, topics, blockHash }],\n })\n } else {\n logs = await client.request({\n method: 'eth_getLogs',\n params: [\n {\n address,\n topics,\n fromBlock:\n typeof fromBlock === 'bigint' ? numberToHex(fromBlock) : fromBlock,\n toBlock: typeof toBlock === 'bigint' ? numberToHex(toBlock) : toBlock,\n },\n ],\n })\n }\n\n const formattedLogs = logs.map((log) => formatLog(log))\n if (!events)\n return formattedLogs as GetLogsReturnType<\n abiEvent,\n abiEvents,\n strict,\n fromBlock,\n toBlock\n >\n return parseEventLogs({\n abi: events,\n args: args as any,\n logs: formattedLogs,\n strict,\n }) as unknown as GetLogsReturnType<\n abiEvent,\n abiEvents,\n strict,\n fromBlock,\n toBlock\n >\n}\n","import type { Abi, Address } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockNumber, BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type {\n ContractEventArgs,\n ContractEventName,\n} from '../../types/contract.js'\nimport type { Log } from '../../types/log.js'\nimport type { Hash } from '../../types/misc.js'\nimport {\n type GetAbiItemErrorType,\n type GetAbiItemParameters,\n getAbiItem,\n} from '../../utils/abi/getAbiItem.js'\nimport { getAction } from '../../utils/getAction.js'\nimport {\n type GetLogsErrorType,\n type GetLogsParameters,\n getLogs,\n} from './getLogs.js'\n\nexport type GetContractEventsParameters<\n abi extends Abi | readonly unknown[] = Abi,\n eventName extends ContractEventName<abi> | undefined =\n | ContractEventName<abi>\n | undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n> = {\n /** The address of the contract. */\n address?: Address | Address[] | undefined\n /** Contract ABI. */\n abi: abi\n args?:\n | ContractEventArgs<\n abi,\n eventName extends ContractEventName<abi>\n ? eventName\n : ContractEventName<abi>\n >\n | undefined\n /** Contract event. */\n eventName?: eventName | ContractEventName<abi> | undefined\n /**\n * Whether or not the logs must match the indexed/non-indexed arguments on `event`.\n * @default false\n */\n strict?: strict | boolean | undefined\n} & (\n | {\n /** Block number or tag after which to include logs */\n fromBlock?: fromBlock | BlockNumber | BlockTag | undefined\n /** Block number or tag before which to include logs */\n toBlock?: toBlock | BlockNumber | BlockTag | undefined\n blockHash?: undefined\n }\n | {\n fromBlock?: undefined\n toBlock?: undefined\n /** Hash of block to include logs from */\n blockHash?: Hash | undefined\n }\n)\n\nexport type GetContractEventsReturnType<\n abi extends Abi | readonly unknown[] = readonly unknown[],\n eventName extends ContractEventName<abi> | undefined =\n | ContractEventName<abi>\n | undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n ///\n isPending extends boolean =\n | (fromBlock extends 'pending' ? true : false)\n | (toBlock extends 'pending' ? true : false),\n> = Log<bigint, number, isPending, undefined, strict, abi, eventName>[]\n\nexport type GetContractEventsErrorType =\n | GetAbiItemErrorType\n | GetLogsErrorType\n | ErrorType\n\n/**\n * Returns a list of event logs emitted by a contract.\n *\n * - Docs: https://viem.sh/docs/actions/public/getContractEvents\n * - JSON-RPC Methods: [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs)\n *\n * @param client - Client to use\n * @param parameters - {@link GetContractEventsParameters}\n * @returns A list of event logs. {@link GetContractEventsReturnType}\n *\n * @example\n * import { createClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getContractEvents } from 'viem/public'\n * import { wagmiAbi } from './abi'\n *\n * const client = createClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const logs = await getContractEvents(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: wagmiAbi,\n * eventName: 'Transfer'\n * })\n */\nexport async function getContractEvents<\n chain extends Chain | undefined,\n const abi extends Abi | readonly unknown[],\n eventName extends ContractEventName<abi> | undefined = undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n>(\n client: Client<Transport, chain>,\n parameters: GetContractEventsParameters<\n abi,\n eventName,\n strict,\n fromBlock,\n toBlock\n >,\n): Promise<\n GetContractEventsReturnType<abi, eventName, strict, fromBlock, toBlock>\n> {\n const {\n abi,\n address,\n args,\n blockHash,\n eventName,\n fromBlock,\n toBlock,\n strict,\n } = parameters\n const event = eventName\n ? getAbiItem({ abi, name: eventName } as GetAbiItemParameters)\n : undefined\n const events = !event\n ? (abi as Abi).filter((x) => x.type === 'event')\n : undefined\n return getAction(\n client,\n getLogs,\n 'getLogs',\n )({\n address,\n args,\n blockHash,\n event,\n events,\n fromBlock,\n toBlock,\n strict,\n } as {} as GetLogsParameters) as unknown as GetContractEventsReturnType<\n abi,\n eventName,\n strict,\n fromBlock,\n toBlock\n >\n}\n","import type { Address } from 'abitype'\nimport { BaseError } from './base.js'\n\nexport type Eip712DomainNotFoundErrorType = Eip712DomainNotFoundError & {\n name: 'Eip712DomainNotFoundError'\n}\nexport class Eip712DomainNotFoundError extends BaseError {\n constructor({ address }: { address: Address }) {\n super(`No EIP-712 domain found on contract \"${address}\".`, {\n metaMessages: [\n 'Ensure that:',\n `- The contract is deployed at the address \"${address}\".`,\n '- `eip712Domain()` function exists on the contract.',\n '- `eip712Domain()` function matches signature to ERC-5267 specification.',\n ],\n name: 'Eip712DomainNotFoundError',\n })\n }\n}\n","import type { Address, TypedDataDomain } from 'abitype'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport {\n Eip712DomainNotFoundError,\n type Eip712DomainNotFoundErrorType,\n} from '../../errors/eip712.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { RequiredBy } from '../../types/utils.js'\nimport { getAction } from '../../utils/getAction.js'\nimport {\n type ReadContractErrorType,\n type ReadContractParameters,\n readContract,\n} from './readContract.js'\n\nexport type GetEip712DomainParameters = {\n address: Address\n} & Pick<ReadContractParameters, 'factory' | 'factoryData'>\n\nexport type GetEip712DomainReturnType = {\n domain: RequiredBy<\n TypedDataDomain,\n 'chainId' | 'name' | 'verifyingContract' | 'version'\n >\n fields: Hex\n extensions: readonly bigint[]\n}\n\nexport type GetEip712DomainErrorType =\n | Eip712DomainNotFoundErrorType\n | ReadContractErrorType\n | ErrorType\n\n/**\n * Reads the EIP-712 domain from a contract, based on the ERC-5267 specification.\n *\n * @param client - A {@link Client} instance.\n * @param parameters - The parameters of the action. {@link GetEip712DomainParameters}\n * @returns The EIP-712 domain, fields, and extensions. {@link GetEip712DomainReturnType}\n *\n * @example\n * ```ts\n * import { createPublicClient, http, getEip712Domain } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n *\n * const domain = await getEip712Domain(client, {\n * address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n * })\n * // {\n * // domain: {\n * // name: 'ExampleContract',\n * // version: '1',\n * // chainId: 1,\n * // verifyingContract: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n * // },\n * // fields: '0x0f',\n * // extensions: [],\n * // }\n * ```\n */\nexport async function getEip712Domain(\n client: Client<Transport>,\n parameters: GetEip712DomainParameters,\n): Promise<GetEip712DomainReturnType> {\n const { address, factory, factoryData } = parameters\n\n try {\n const [\n fields,\n name,\n version,\n chainId,\n verifyingContract,\n salt,\n extensions,\n ] = await getAction(\n client,\n readContract,\n 'readContract',\n )({\n abi,\n address,\n functionName: 'eip712Domain',\n factory,\n factoryData,\n })\n\n return {\n domain: {\n name,\n version,\n chainId: Number(chainId),\n verifyingContract,\n salt,\n },\n extensions,\n fields,\n }\n } catch (e) {\n const error = e as ReadContractErrorType\n if (\n error.name === 'ContractFunctionExecutionError' &&\n error.cause.name === 'ContractFunctionZeroDataError'\n ) {\n throw new Eip712DomainNotFoundError({ address })\n }\n throw error\n }\n}\n\nconst abi = [\n {\n inputs: [],\n name: 'eip712Domain',\n outputs: [\n { name: 'fields', type: 'bytes1' },\n { name: 'name', type: 'string' },\n { name: 'version', type: 'string' },\n { name: 'chainId', type: 'uint256' },\n { name: 'verifyingContract', type: 'address' },\n { name: 'salt', type: 'bytes32' },\n { name: 'extensions', type: 'uint256[]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { FeeHistory } from '../../types/fee.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\nimport {\n type FormatFeeHistoryErrorType,\n formatFeeHistory,\n} from '../../utils/formatters/feeHistory.js'\n\nexport type GetFeeHistoryParameters = {\n /**\n * Number of blocks in the requested range. Between 1 and 1024 blocks can be requested in a single query. Less than requested may be returned if not all blocks are available.\n */\n blockCount: number\n /**\n * A monotonically increasing list of percentile values to sample from each block's effective priority fees per gas in ascending order, weighted by gas used.\n */\n rewardPercentiles: number[]\n} & (\n | {\n blockNumber?: undefined\n /**\n * Highest number block of the requested range.\n * @default 'latest'\n */\n blockTag?: BlockTag | undefined\n }\n | {\n /** Highest number block of the requested range. */\n blockNumber?: bigint | undefined\n blockTag?: undefined\n }\n)\nexport type GetFeeHistoryReturnType = FeeHistory\n\nexport type GetFeeHistoryErrorType =\n | NumberToHexErrorType\n | RequestErrorType\n | FormatFeeHistoryErrorType\n\n/**\n * Returns a collection of historical gas information.\n *\n * - Docs: https://viem.sh/docs/actions/public/getFeeHistory\n * - JSON-RPC Methods: [`eth_feeHistory`](https://docs.alchemy.com/reference/eth-feehistory)\n *\n * @param client - Client to use\n * @param parameters - {@link GetFeeHistoryParameters}\n * @returns The gas estimate (in wei). {@link GetFeeHistoryReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getFeeHistory } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const feeHistory = await getFeeHistory(client, {\n * blockCount: 4,\n * rewardPercentiles: [25, 75],\n * })\n */\nexport async function getFeeHistory<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n {\n blockCount,\n blockNumber,\n blockTag = 'latest',\n rewardPercentiles,\n }: GetFeeHistoryParameters,\n): Promise<GetFeeHistoryReturnType> {\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n const feeHistory = await client.request(\n {\n method: 'eth_feeHistory',\n params: [\n numberToHex(blockCount),\n blockNumberHex || blockTag,\n rewardPercentiles,\n ],\n },\n { dedupe: Boolean(blockNumberHex) },\n )\n return formatFeeHistory(feeHistory)\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { FeeHistory } from '../../types/fee.js'\nimport type { RpcFeeHistory } from '../../types/rpc.js'\n\nexport type FormatFeeHistoryErrorType = ErrorType\n\nexport function formatFeeHistory(feeHistory: RpcFeeHistory): FeeHistory {\n return {\n baseFeePerGas: feeHistory.baseFeePerGas.map((value) => BigInt(value)),\n gasUsedRatio: feeHistory.gasUsedRatio,\n oldestBlock: BigInt(feeHistory.oldestBlock),\n reward: feeHistory.reward?.map((reward) =>\n reward.map((value) => BigInt(value)),\n ),\n }\n}\n","import type { Abi, AbiEvent, ExtractAbiEvent } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { RpcLog } from '../../index.js'\nimport type { BlockNumber, BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Filter, FilterType } from '../../types/filter.js'\nimport type { Log } from '../../types/log.js'\nimport type { Hash } from '../../types/misc.js'\nimport type { DecodeEventLogErrorType } from '../../utils/abi/decodeEventLog.js'\nimport { parseEventLogs } from '../../utils/abi/parseEventLogs.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type FormatLogErrorType,\n formatLog,\n} from '../../utils/formatters/log.js'\n\nexport type GetFilterChangesParameters<\n filterType extends FilterType = FilterType,\n abi extends Abi | readonly unknown[] | undefined = undefined,\n eventName extends string | undefined = undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n> = {\n filter: Filter<filterType, abi, eventName, any, strict, fromBlock, toBlock>\n}\n\nexport type GetFilterChangesReturnType<\n filterType extends FilterType = FilterType,\n abi extends Abi | readonly unknown[] | undefined = undefined,\n eventName extends string | undefined = undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n _AbiEvent extends AbiEvent | undefined = abi extends Abi\n ? eventName extends string\n ? ExtractAbiEvent<abi, eventName>\n : undefined\n : undefined,\n _Pending extends boolean =\n | (fromBlock extends 'pending' ? true : false)\n | (toBlock extends 'pending' ? true : false),\n> = filterType extends 'event'\n ? Log<bigint, number, _Pending, _AbiEvent, strict, abi, eventName>[]\n : Hash[]\n\nexport type GetFilterChangesErrorType =\n | RequestErrorType\n | DecodeEventLogErrorType\n | FormatLogErrorType\n | ErrorType\n\n/**\n * Returns a list of logs or hashes based on a [Filter](/docs/glossary/terms#filter) since the last time it was called.\n *\n * - Docs: https://viem.sh/docs/actions/public/getFilterChanges\n * - JSON-RPC Methods: [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges)\n *\n * A Filter can be created from the following actions:\n *\n * - [`createBlockFilter`](https://viem.sh/docs/actions/public/createBlockFilter)\n * - [`createContractEventFilter`](https://viem.sh/docs/contract/createContractEventFilter)\n * - [`createEventFilter`](https://viem.sh/docs/actions/public/createEventFilter)\n * - [`createPendingTransactionFilter`](https://viem.sh/docs/actions/public/createPendingTransactionFilter)\n *\n * Depending on the type of filter, the return value will be different:\n *\n * - If the filter was created with `createContractEventFilter` or `createEventFilter`, it returns a list of logs.\n * - If the filter was created with `createPendingTransactionFilter`, it returns a list of transaction hashes.\n * - If the filter was created with `createBlockFilter`, it returns a list of block hashes.\n *\n * @param client - Client to use\n * @param parameters - {@link GetFilterChangesParameters}\n * @returns Logs or hashes. {@link GetFilterChangesReturnType}\n *\n * @example\n * // Blocks\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createBlockFilter, getFilterChanges } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createBlockFilter(client)\n * const hashes = await getFilterChanges(client, { filter })\n *\n * @example\n * // Contract Events\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createContractEventFilter, getFilterChanges } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createContractEventFilter(client, {\n * address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n * abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']),\n * eventName: 'Transfer',\n * })\n * const logs = await getFilterChanges(client, { filter })\n *\n * @example\n * // Raw Events\n * import { createPublicClient, http, parseAbiItem } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createEventFilter, getFilterChanges } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createEventFilter(client, {\n * address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n * event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'),\n * })\n * const logs = await getFilterChanges(client, { filter })\n *\n * @example\n * // Transactions\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createPendingTransactionFilter, getFilterChanges } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createPendingTransactionFilter(client)\n * const hashes = await getFilterChanges(client, { filter })\n */\nexport async function getFilterChanges<\n transport extends Transport,\n chain extends Chain | undefined,\n filterType extends FilterType,\n const abi extends Abi | readonly unknown[] | undefined,\n eventName extends string | undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n>(\n _client: Client<transport, chain>,\n {\n filter,\n }: GetFilterChangesParameters<\n filterType,\n abi,\n eventName,\n strict,\n fromBlock,\n toBlock\n >,\n): Promise<\n GetFilterChangesReturnType<\n filterType,\n abi,\n eventName,\n strict,\n fromBlock,\n toBlock\n >\n> {\n const strict = 'strict' in filter && filter.strict\n\n const logs = await filter.request({\n method: 'eth_getFilterChanges',\n params: [filter.id],\n })\n\n if (typeof logs[0] === 'string')\n return logs as GetFilterChangesReturnType<\n filterType,\n abi,\n eventName,\n strict,\n fromBlock,\n toBlock\n >\n\n const formattedLogs = logs.map((log) => formatLog(log as RpcLog))\n if (!('abi' in filter) || !filter.abi)\n return formattedLogs as GetFilterChangesReturnType<\n filterType,\n abi,\n eventName,\n strict,\n fromBlock,\n toBlock\n >\n return parseEventLogs({\n abi: filter.abi,\n logs: formattedLogs,\n strict,\n }) as unknown as GetFilterChangesReturnType<\n filterType,\n abi,\n eventName,\n strict,\n fromBlock,\n toBlock\n >\n}\n","import type { Address } from 'abitype'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Hash } from '../../types/misc.js'\nimport type { Proof } from '../../types/proof.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\nimport {\n type FormatProofErrorType,\n formatProof,\n} from '../../utils/formatters/proof.js'\n\nexport type GetProofParameters = {\n /** Account address. */\n address: Address\n /** Array of storage-keys that should be proofed and included. */\n storageKeys: Hash[]\n} & (\n | {\n /** The block number. */\n blockNumber?: bigint | undefined\n blockTag?: undefined\n }\n | {\n blockNumber?: undefined\n /**\n * The block tag.\n * @default 'latest'\n */\n blockTag?: BlockTag | undefined\n }\n)\n\nexport type GetProofReturnType = Proof\n\nexport type GetProofErrorType =\n | NumberToHexErrorType\n | FormatProofErrorType\n | RequestErrorType\n | ErrorType\n\n/**\n * Returns the account and storage values of the specified account including the Merkle-proof.\n *\n * - Docs: https://viem.sh/docs/actions/public/getProof\n * - JSON-RPC Methods:\n * - Calls [`eth_getProof`](https://eips.ethereum.org/EIPS/eip-1186)\n *\n * @param client - Client to use\n * @param parameters - {@link GetProofParameters}\n * @returns Proof data. {@link GetProofReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getProof } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const block = await getProof(client, {\n * address: '0x...',\n * storageKeys: ['0x...'],\n * })\n */\nexport async function getProof<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n {\n address,\n blockNumber,\n blockTag: blockTag_,\n storageKeys,\n }: GetProofParameters,\n): Promise<GetProofReturnType> {\n const blockTag = blockTag_ ?? 'latest'\n\n const blockNumberHex =\n blockNumber !== undefined ? numberToHex(blockNumber) : undefined\n\n const proof = await client.request({\n method: 'eth_getProof',\n params: [address, storageKeys, blockNumberHex || blockTag],\n })\n\n return formatProof(proof)\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Proof } from '../../types/proof.js'\nimport type { RpcProof } from '../../types/rpc.js'\nimport type { ExactPartial } from '../../types/utils.js'\nimport { hexToNumber } from '../index.js'\n\nexport type FormatProofErrorType = ErrorType\n\nfunction formatStorageProof(storageProof: RpcProof['storageProof']) {\n return storageProof.map((proof) => ({\n ...proof,\n value: BigInt(proof.value),\n }))\n}\n\nexport function formatProof(proof: ExactPartial<RpcProof>) {\n return {\n ...proof,\n balance: proof.balance ? BigInt(proof.balance) : undefined,\n nonce: proof.nonce ? hexToNumber(proof.nonce) : undefined,\n storageProof: proof.storageProof\n ? formatStorageProof(proof.storageProof)\n : undefined,\n } as Proof\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport { TransactionNotFoundError } from '../../errors/transaction.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Hash } from '../../types/misc.js'\nimport type { RpcTransaction } from '../../types/rpc.js'\nimport type { Prettify } from '../../types/utils.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\nimport {\n type FormattedTransaction,\n formatTransaction,\n} from '../../utils/formatters/transaction.js'\n\nexport type GetTransactionParameters<blockTag extends BlockTag = 'latest'> =\n | {\n /** The block hash */\n blockHash: Hash\n blockNumber?: undefined\n blockTag?: undefined\n hash?: undefined\n /** The index of the transaction on the block. */\n index: number\n }\n | {\n blockHash?: undefined\n /** The block number */\n blockNumber: bigint\n blockTag?: undefined\n hash?: undefined\n /** The index of the transaction on the block. */\n index: number\n }\n | {\n blockHash?: undefined\n blockNumber?: undefined\n /** The block tag. */\n blockTag: blockTag | BlockTag\n hash?: undefined\n /** The index of the transaction on the block. */\n index: number\n }\n | {\n blockHash?: undefined\n blockNumber?: undefined\n blockTag?: undefined\n /** The hash of the transaction. */\n hash: Hash\n index?: number | undefined\n }\n\nexport type GetTransactionReturnType<\n chain extends Chain | undefined = undefined,\n blockTag extends BlockTag = 'latest',\n> = Prettify<FormattedTransaction<chain, blockTag>>\n\nexport type GetTransactionErrorType =\n | NumberToHexErrorType\n | RequestErrorType\n | ErrorType\n\n/**\n * Returns information about a [Transaction](https://viem.sh/docs/glossary/terms#transaction) given a hash or block identifier.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransaction\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_fetching-transactions\n * - JSON-RPC Methods: [`eth_getTransactionByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionByHash)\n *\n * @param client - Client to use\n * @param parameters - {@link GetTransactionParameters}\n * @returns The transaction information. {@link GetTransactionReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getTransaction } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const transaction = await getTransaction(client, {\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\nexport async function getTransaction<\n chain extends Chain | undefined,\n blockTag extends BlockTag = 'latest',\n>(\n client: Client<Transport, chain>,\n {\n blockHash,\n blockNumber,\n blockTag: blockTag_,\n hash,\n index,\n }: GetTransactionParameters<blockTag>,\n): Promise<GetTransactionReturnType<chain, blockTag>> {\n const blockTag = blockTag_ || 'latest'\n\n const blockNumberHex =\n blockNumber !== undefined ? numberToHex(blockNumber) : undefined\n\n let transaction: RpcTransaction | null = null\n if (hash) {\n transaction = await client.request(\n {\n method: 'eth_getTransactionByHash',\n params: [hash],\n },\n { dedupe: true },\n )\n } else if (blockHash) {\n transaction = await client.request(\n {\n method: 'eth_getTransactionByBlockHashAndIndex',\n params: [blockHash, numberToHex(index)],\n },\n { dedupe: true },\n )\n } else if (blockNumberHex || blockTag) {\n transaction = await client.request(\n {\n method: 'eth_getTransactionByBlockNumberAndIndex',\n params: [blockNumberHex || blockTag, numberToHex(index)],\n },\n { dedupe: Boolean(blockNumberHex) },\n )\n }\n\n if (!transaction)\n throw new TransactionNotFoundError({\n blockHash,\n blockNumber,\n blockTag,\n hash,\n index,\n })\n\n const format =\n client.chain?.formatters?.transaction?.format || formatTransaction\n return format(transaction)\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport {\n TransactionReceiptNotFoundError,\n type TransactionReceiptNotFoundErrorType,\n} from '../../errors/transaction.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Hash } from '../../types/misc.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type FormattedTransactionReceipt,\n formatTransactionReceipt,\n} from '../../utils/formatters/transactionReceipt.js'\n\nexport type GetTransactionReceiptParameters = {\n /** The hash of the transaction. */\n hash: Hash\n}\n\nexport type GetTransactionReceiptReturnType<\n chain extends Chain | undefined = undefined,\n> = FormattedTransactionReceipt<chain>\n\nexport type GetTransactionReceiptErrorType =\n | RequestErrorType\n | TransactionReceiptNotFoundErrorType\n | ErrorType\n\n/**\n * Returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms#transaction-receipt) given a [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransactionReceipt\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_fetching-transactions\n * - JSON-RPC Methods: [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionreceipt)\n *\n * @param client - Client to use\n * @param parameters - {@link GetTransactionReceiptParameters}\n * @returns The transaction receipt. {@link GetTransactionReceiptReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getTransactionReceipt } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const transactionReceipt = await getTransactionReceipt(client, {\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\nexport async function getTransactionReceipt<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n { hash }: GetTransactionReceiptParameters,\n) {\n const receipt = await client.request(\n {\n method: 'eth_getTransactionReceipt',\n params: [hash],\n },\n { dedupe: true },\n )\n\n if (!receipt) throw new TransactionReceiptNotFoundError({ hash })\n\n const format =\n client.chain?.formatters?.transactionReceipt?.format ||\n formatTransactionReceipt\n return format(receipt) as GetTransactionReceiptReturnType<chain>\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Filter } from '../../types/filter.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\n\nexport type UninstallFilterParameters = {\n filter: Filter<any>\n}\nexport type UninstallFilterReturnType = boolean\n\nexport type UninstallFilterErrorType = RequestErrorType | ErrorType\n\n/**\n * Destroys a [`Filter`](https://viem.sh/docs/glossary/types#filter).\n *\n * - Docs: https://viem.sh/docs/actions/public/uninstallFilter\n * - JSON-RPC Methods: [`eth_uninstallFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_uninstallFilter)\n *\n * Destroys a Filter that was created from one of the following Actions:\n * - [`createBlockFilter`](https://viem.sh/docs/actions/public/createBlockFilter)\n * - [`createEventFilter`](https://viem.sh/docs/actions/public/createEventFilter)\n * - [`createPendingTransactionFilter`](https://viem.sh/docs/actions/public/createPendingTransactionFilter)\n *\n * @param client - Client to use\n * @param parameters - {@link UninstallFilterParameters}\n * @returns A boolean indicating if the Filter was successfully uninstalled. {@link UninstallFilterReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createPendingTransactionFilter, uninstallFilter } from 'viem/public'\n *\n * const filter = await createPendingTransactionFilter(client)\n * const uninstalled = await uninstallFilter(client, { filter })\n * // true\n */\nexport async function uninstallFilter<\n transport extends Transport,\n chain extends Chain | undefined,\n>(\n _client: Client<transport, chain>,\n { filter }: UninstallFilterParameters,\n): Promise<UninstallFilterReturnType> {\n return filter.request({\n method: 'eth_uninstallFilter',\n params: [filter.id],\n })\n}\n","export const presignMessagePrefix = '\\x19Ethereum Signed Message:\\n'\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex, SignableMessage } from '../../types/misc.js'\nimport { type Keccak256ErrorType, keccak256 } from '../hash/keccak256.js'\nimport { toPrefixedMessage } from './toPrefixedMessage.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type HashMessageReturnType<to extends To> =\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type HashMessageErrorType = Keccak256ErrorType | ErrorType\n\nexport function hashMessage<to extends To = 'hex'>(\n message: SignableMessage,\n to_?: to | undefined,\n): HashMessageReturnType<to> {\n return keccak256(toPrefixedMessage(message), to_)\n}\n","import { presignMessagePrefix } from '../../constants/strings.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex, SignableMessage } from '../../types/misc.js'\nimport { type ConcatErrorType, concat } from '../data/concat.js'\nimport { size } from '../data/size.js'\nimport {\n type BytesToHexErrorType,\n type StringToHexErrorType,\n bytesToHex,\n stringToHex,\n} from '../encoding/toHex.js'\n\nexport type ToPrefixedMessageErrorType =\n | ConcatErrorType\n | StringToHexErrorType\n | BytesToHexErrorType\n | ErrorType\n\nexport function toPrefixedMessage(message_: SignableMessage): Hex {\n const message = (() => {\n if (typeof message_ === 'string') return stringToHex(message_)\n if (typeof message_.raw === 'string') return message_.raw\n return bytesToHex(message_.raw)\n })()\n const prefix = stringToHex(`${presignMessagePrefix}${size(message)}`)\n return concat([prefix, message])\n}\n","export const erc6492MagicBytes =\n '0x6492649264926492649264926492649264926492649264926492649264926492' as const\n\nexport const zeroHash =\n '0x0000000000000000000000000000000000000000000000000000000000000000' as const\n","import type { Address } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport { universalSignatureValidatorAbi } from '../../constants/abis.js'\nimport { universalSignatureValidatorByteCode } from '../../constants/contracts.js'\nimport { CallExecutionError } from '../../errors/contract.js'\nimport type { InvalidHexBooleanError } from '../../errors/encoding.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { ByteArray, Hex, Signature } from '../../types/misc.js'\nimport type { OneOf } from '../../types/utils.js'\nimport {\n type EncodeDeployDataErrorType,\n encodeDeployData,\n} from '../../utils/abi/encodeDeployData.js'\nimport { getAddress } from '../../utils/address/getAddress.js'\nimport { isAddressEqual } from '../../utils/address/isAddressEqual.js'\nimport { type IsHexErrorType, isHex } from '../../utils/data/isHex.js'\nimport { type ToHexErrorType, bytesToHex } from '../../utils/encoding/toHex.js'\nimport { getAction } from '../../utils/getAction.js'\nimport { encodeFunctionData, hexToBool } from '../../utils/index.js'\nimport { isErc6492Signature } from '../../utils/signature/isErc6492Signature.js'\nimport { recoverAddress } from '../../utils/signature/recoverAddress.js'\nimport { serializeErc6492Signature } from '../../utils/signature/serializeErc6492Signature.js'\nimport { serializeSignature } from '../../utils/signature/serializeSignature.js'\nimport { type CallErrorType, type CallParameters, call } from './call.js'\n\nexport type VerifyHashParameters = Pick<\n CallParameters,\n 'blockNumber' | 'blockTag'\n> & {\n /** The address that signed the original message. */\n address: Address\n /** The hash to be verified. */\n hash: Hex\n /** The signature that was generated by signing the message with the address's private key. */\n signature: Hex | ByteArray | Signature\n universalSignatureVerifierAddress?: Address | undefined\n} & OneOf<{ factory: Address; factoryData: Hex } | {}>\n\nexport type VerifyHashReturnType = boolean\n\nexport type VerifyHashErrorType =\n | CallErrorType\n | IsHexErrorType\n | ToHexErrorType\n | InvalidHexBooleanError\n | EncodeDeployDataErrorType\n | ErrorType\n\n/**\n * Verifies a message hash onchain using ERC-6492.\n *\n * @param client - Client to use.\n * @param parameters - {@link VerifyHashParameters}\n * @returns Whether or not the signature is valid. {@link VerifyHashReturnType}\n */\nexport async function verifyHash<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n parameters: VerifyHashParameters,\n): Promise<VerifyHashReturnType> {\n const {\n address,\n factory,\n factoryData,\n hash,\n signature,\n universalSignatureVerifierAddress = client.chain?.contracts\n ?.universalSignatureVerifier?.address,\n ...rest\n } = parameters\n\n const signatureHex = (() => {\n if (isHex(signature)) return signature\n if (typeof signature === 'object' && 'r' in signature && 's' in signature)\n return serializeSignature(signature)\n return bytesToHex(signature)\n })()\n\n const wrappedSignature = await (async () => {\n // If no `factory` or `factoryData` is provided, it is assumed that the\n // address is not a Smart Account, or the Smart Account is already deployed.\n if (!factory && !factoryData) return signatureHex\n\n // If the signature is already wrapped, return the signature.\n if (isErc6492Signature(signatureHex)) return signatureHex\n\n // If the Smart Account is not deployed, wrap the signature with a 6492 wrapper\n // to perform counterfactual validation.\n return serializeErc6492Signature({\n address: factory!,\n data: factoryData!,\n signature: signatureHex,\n })\n })()\n\n try {\n const args = universalSignatureVerifierAddress\n ? ({\n to: universalSignatureVerifierAddress,\n data: encodeFunctionData({\n abi: universalSignatureValidatorAbi,\n functionName: 'isValidSig',\n args: [address, hash, wrappedSignature],\n }),\n ...rest,\n } as unknown as CallParameters)\n : ({\n data: encodeDeployData({\n abi: universalSignatureValidatorAbi,\n args: [address, hash, wrappedSignature],\n bytecode: universalSignatureValidatorByteCode,\n }),\n ...rest,\n } as unknown as CallParameters)\n\n const { data } = await getAction(client, call, 'call')(args)\n\n return hexToBool(data ?? '0x0')\n } catch (error) {\n // Fallback attempt to verify the signature via ECDSA recovery.\n try {\n const verified = isAddressEqual(\n getAddress(address),\n await recoverAddress({ hash, signature }),\n )\n if (verified) return true\n } catch {}\n\n if (error instanceof CallExecutionError) {\n // if the execution fails, the signature was not valid and an internal method inside of the validator reverted\n // this can happen for many reasons, for example if signer can not be recovered from the signature\n // or if the signature has no valid format\n return false\n }\n\n throw error\n }\n}\n","import { secp256k1 } from '@noble/curves/secp256k1'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex, Signature } from '../../types/misc.js'\nimport { type HexToBigIntErrorType, hexToBigInt } from '../encoding/fromHex.js'\nimport { hexToBytes } from '../encoding/toBytes.js'\nimport type { ToHexErrorType } from '../encoding/toHex.js'\n\ntype To = 'bytes' | 'hex'\n\nexport type SerializeSignatureParameters<to extends To = 'hex'> = Signature & {\n to?: to | To | undefined\n}\n\nexport type SerializeSignatureReturnType<to extends To = 'hex'> =\n | (to extends 'hex' ? Hex : never)\n | (to extends 'bytes' ? ByteArray : never)\n\nexport type SerializeSignatureErrorType =\n | HexToBigIntErrorType\n | ToHexErrorType\n | ErrorType\n\n/**\n * @description Converts a signature into hex format.\n *\n * @param signature The signature to convert.\n * @returns The signature in hex format.\n *\n * @example\n * serializeSignature({\n * r: '0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf',\n * s: '0x4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db8',\n * yParity: 1\n * })\n * // \"0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c\"\n */\nexport function serializeSignature<to extends To = 'hex'>({\n r,\n s,\n to = 'hex',\n v,\n yParity,\n}: SerializeSignatureParameters<to>): SerializeSignatureReturnType<to> {\n const yParity_ = (() => {\n if (yParity === 0 || yParity === 1) return yParity\n if (v && (v === 27n || v === 28n || v >= 35n)) return v % 2n === 0n ? 1 : 0\n throw new Error('Invalid `v` or `yParity` value')\n })()\n const signature = `0x${new secp256k1.Signature(\n hexToBigInt(r),\n hexToBigInt(s),\n ).toCompactHex()}${yParity_ === 0 ? '1b' : '1c'}` as const\n\n if (to === 'hex') return signature as SerializeSignatureReturnType<to>\n return hexToBytes(signature) as SerializeSignatureReturnType<to>\n}\n","import { erc6492MagicBytes } from '../../constants/bytes.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport { type SliceHexErrorType, sliceHex } from '../data/slice.js'\n\nexport type IsErc6492SignatureParameters = Hex\nexport type IsErc6492SignatureReturnType = boolean\nexport type IsErc6492SignatureErrorType = SliceHexErrorType | ErrorType\n\n/** Whether or not the signature is an ERC-6492 formatted signature. */\nexport function isErc6492Signature(\n signature: IsErc6492SignatureParameters,\n): IsErc6492SignatureReturnType {\n return sliceHex(signature, -32) === erc6492MagicBytes\n}\n","import type { Address } from 'abitype'\nimport { erc6492MagicBytes } from '../../constants/bytes.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { encodeAbiParameters } from '../abi/encodeAbiParameters.js'\nimport { concatHex } from '../data/concat.js'\nimport { hexToBytes } from '../encoding/toBytes.js'\n\ntype To = 'bytes' | 'hex'\n\nexport type SerializeErc6492SignatureParameters<to extends To = 'hex'> = {\n /** The ERC-4337 Account Factory address to use for counterfactual verification. */\n address: Address\n /** Calldata to pass to deploy account (if not deployed) for counterfactual verification. */\n data: Hex\n /** The original signature. */\n signature: Hex\n to?: to | To | undefined\n}\n\nexport type SerializeErc6492SignatureReturnType<to extends To = 'hex'> =\n | (to extends 'hex' ? Hex : never)\n | (to extends 'bytes' ? ByteArray : never)\n\nexport type SerializeErc6492SignatureErrorType = ErrorType\n\n/**\n * @description Serializes a ERC-6492 flavoured signature into hex format.\n *\n * @param signature ERC-6492 signature in object format.\n * @returns ERC-6492 signature in hex format.\n *\n * @example\n * serializeSignature({ address: '0x...', data: '0x...', signature: '0x...' })\n * // '0x000000000000000000000000cafebabecafebabecafebabecafebabecafebabe000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004deadbeef000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041a461f509887bd19e312c0c58467ce8ff8e300d3c1a90b608a760c5b80318eaf15fe57c96f9175d6cd4daad4663763baa7e78836e067d0163e9a2ccf2ff753f5b1b000000000000000000000000000000000000000000000000000000000000006492649264926492649264926492649264926492649264926492649264926492'\n */\nexport function serializeErc6492Signature<to extends To = 'hex'>(\n parameters: SerializeErc6492SignatureParameters<to>,\n): SerializeErc6492SignatureReturnType<to> {\n const { address, data, signature, to = 'hex' } = parameters\n const signature_ = concatHex([\n encodeAbiParameters(\n [{ type: 'address' }, { type: 'bytes' }, { type: 'bytes' }],\n [address, data, signature],\n ),\n erc6492MagicBytes,\n ])\n\n if (to === 'hex') return signature_ as SerializeErc6492SignatureReturnType<to>\n return hexToBytes(signature_) as SerializeErc6492SignatureReturnType<to>\n}\n","// Implementation forked and adapted from https://github.com/MetaMask/eth-sig-util/blob/main/src/sign-typed-data.ts\n\nimport type { AbiParameter, TypedData, TypedDataDomain } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { TypedDataDefinition } from '../../types/typedData.js'\nimport {\n type EncodeAbiParametersErrorType,\n encodeAbiParameters,\n} from '../abi/encodeAbiParameters.js'\nimport { concat } from '../data/concat.js'\nimport { type ToHexErrorType, toHex } from '../encoding/toHex.js'\nimport { type Keccak256ErrorType, keccak256 } from '../hash/keccak256.js'\nimport {\n type GetTypesForEIP712DomainErrorType,\n type ValidateTypedDataErrorType,\n getTypesForEIP712Domain,\n validateTypedData,\n} from '../typedData.js'\n\ntype MessageTypeProperty = {\n name: string\n type: string\n}\n\nexport type HashTypedDataParameters<\n typedData extends TypedData | Record<string, unknown> = TypedData,\n primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData,\n> = TypedDataDefinition<typedData, primaryType>\n\nexport type HashTypedDataReturnType = Hex\n\nexport type HashTypedDataErrorType =\n | GetTypesForEIP712DomainErrorType\n | HashDomainErrorType\n | HashStructErrorType\n | ValidateTypedDataErrorType\n | ErrorType\n\nexport function hashTypedData<\n const typedData extends TypedData | Record<string, unknown>,\n primaryType extends keyof typedData | 'EIP712Domain',\n>(\n parameters: HashTypedDataParameters<typedData, primaryType>,\n): HashTypedDataReturnType {\n const {\n domain = {},\n message,\n primaryType,\n } = parameters as HashTypedDataParameters\n const types = {\n EIP712Domain: getTypesForEIP712Domain({ domain }),\n ...parameters.types,\n }\n\n // Need to do a runtime validation check on addresses, byte ranges, integer ranges, etc\n // as we can't statically check this with TypeScript.\n validateTypedData({\n domain,\n message,\n primaryType,\n types,\n })\n\n const parts: Hex[] = ['0x1901']\n if (domain)\n parts.push(\n hashDomain({\n domain,\n types: types as Record<string, MessageTypeProperty[]>,\n }),\n )\n\n if (primaryType !== 'EIP712Domain')\n parts.push(\n hashStruct({\n data: message,\n primaryType,\n types: types as Record<string, MessageTypeProperty[]>,\n }),\n )\n\n return keccak256(concat(parts))\n}\n\nexport type HashDomainErrorType = HashStructErrorType | ErrorType\n\nexport function hashDomain({\n domain,\n types,\n}: {\n domain: TypedDataDomain\n types: Record<string, MessageTypeProperty[]>\n}) {\n return hashStruct({\n data: domain,\n primaryType: 'EIP712Domain',\n types,\n })\n}\n\ntype HashStructErrorType = EncodeDataErrorType | Keccak256ErrorType | ErrorType\n\nexport function hashStruct({\n data,\n primaryType,\n types,\n}: {\n data: Record<string, unknown>\n primaryType: string\n types: Record<string, readonly MessageTypeProperty[]>\n}) {\n const encoded = encodeData({\n data,\n primaryType,\n types,\n })\n return keccak256(encoded)\n}\n\ntype EncodeDataErrorType =\n | EncodeAbiParametersErrorType\n | EncodeFieldErrorType\n | HashTypeErrorType\n | ErrorType\n\nfunction encodeData({\n data,\n primaryType,\n types,\n}: {\n data: Record<string, unknown>\n primaryType: string\n types: Record<string, readonly MessageTypeProperty[]>\n}) {\n const encodedTypes: AbiParameter[] = [{ type: 'bytes32' }]\n const encodedValues: unknown[] = [hashType({ primaryType, types })]\n\n for (const field of types[primaryType]) {\n const [type, value] = encodeField({\n types,\n name: field.name,\n type: field.type,\n value: data[field.name],\n })\n encodedTypes.push(type)\n encodedValues.push(value)\n }\n\n return encodeAbiParameters(encodedTypes, encodedValues)\n}\n\ntype HashTypeErrorType =\n | ToHexErrorType\n | EncodeTypeErrorType\n | Keccak256ErrorType\n | ErrorType\n\nfunction hashType({\n primaryType,\n types,\n}: {\n primaryType: string\n types: Record<string, readonly MessageTypeProperty[]>\n}) {\n const encodedHashType = toHex(encodeType({ primaryType, types }))\n return keccak256(encodedHashType)\n}\n\ntype EncodeTypeErrorType = FindTypeDependenciesErrorType\n\nexport function encodeType({\n primaryType,\n types,\n}: {\n primaryType: string\n types: Record<string, readonly MessageTypeProperty[]>\n}) {\n let result = ''\n const unsortedDeps = findTypeDependencies({ primaryType, types })\n unsortedDeps.delete(primaryType)\n\n const deps = [primaryType, ...Array.from(unsortedDeps).sort()]\n for (const type of deps) {\n result += `${type}(${types[type]\n .map(({ name, type: t }) => `${t} ${name}`)\n .join(',')})`\n }\n\n return result\n}\n\ntype FindTypeDependenciesErrorType = ErrorType\n\nfunction findTypeDependencies(\n {\n primaryType: primaryType_,\n types,\n }: {\n primaryType: string\n types: Record<string, readonly MessageTypeProperty[]>\n },\n results: Set<string> = new Set(),\n): Set<string> {\n const match = primaryType_.match(/^\\w*/u)\n const primaryType = match?.[0]!\n if (results.has(primaryType) || types[primaryType] === undefined) {\n return results\n }\n\n results.add(primaryType)\n\n for (const field of types[primaryType]) {\n findTypeDependencies({ primaryType: field.type, types }, results)\n }\n return results\n}\n\ntype EncodeFieldErrorType =\n | Keccak256ErrorType\n | EncodeAbiParametersErrorType\n | ToHexErrorType\n | ErrorType\n\nfunction encodeField({\n types,\n name,\n type,\n value,\n}: {\n types: Record<string, readonly MessageTypeProperty[]>\n name: string\n type: string\n value: any\n}): [type: AbiParameter, value: any] {\n if (types[type] !== undefined) {\n return [\n { type: 'bytes32' },\n keccak256(encodeData({ data: value, primaryType: type, types })),\n ]\n }\n\n if (type === 'bytes') {\n const prepend = value.length % 2 ? '0' : ''\n value = `0x${prepend + value.slice(2)}`\n return [{ type: 'bytes32' }, keccak256(value)]\n }\n\n if (type === 'string') return [{ type: 'bytes32' }, keccak256(toHex(value))]\n\n if (type.lastIndexOf(']') === type.length - 1) {\n const parsedType = type.slice(0, type.lastIndexOf('['))\n const typeValuePairs = (value as [AbiParameter, any][]).map((item) =>\n encodeField({\n name,\n type: parsedType,\n types,\n value: item,\n }),\n )\n return [\n { type: 'bytes32' },\n keccak256(\n encodeAbiParameters(\n typeValuePairs.map(([t]) => t),\n typeValuePairs.map(([, v]) => v),\n ),\n ),\n ]\n }\n\n return [{ type }, value]\n}\n","import type { ErrorType } from '../errors/utils.js'\nimport type { MaybePromise } from '../types/utils.js'\n\ntype Callback = ((...args: any[]) => any) | undefined\ntype Callbacks = Record<string, Callback>\n\nexport type ObserveErrorType = ErrorType\n\n/** @internal */\nexport const listenersCache = /*#__PURE__*/ new Map<\n string,\n { id: number; fns: Callbacks }[]\n>()\n/** @internal */\nexport const cleanupCache = /*#__PURE__*/ new Map<string, () => void>()\n\ntype EmitFunction<callbacks extends Callbacks> = (\n emit: callbacks,\n) => MaybePromise<void | (() => void)>\n\nlet callbackCount = 0\n\n/**\n * @description Sets up an observer for a given function. If another function\n * is set up under the same observer id, the function will only be called once\n * for both instances of the observer.\n */\nexport function observe<callbacks extends Callbacks>(\n observerId: string,\n callbacks: callbacks,\n fn: EmitFunction<callbacks>,\n) {\n const callbackId = ++callbackCount\n\n const getListeners = () => listenersCache.get(observerId) || []\n\n const unsubscribe = () => {\n const listeners = getListeners()\n listenersCache.set(\n observerId,\n listeners.filter((cb: any) => cb.id !== callbackId),\n )\n }\n\n const unwatch = () => {\n const cleanup = cleanupCache.get(observerId)\n if (getListeners().length === 1 && cleanup) cleanup()\n unsubscribe()\n }\n\n const listeners = getListeners()\n listenersCache.set(observerId, [\n ...listeners,\n { id: callbackId, fns: callbacks },\n ])\n\n if (listeners && listeners.length > 0) return unwatch\n\n const emit: callbacks = {} as callbacks\n for (const key in callbacks) {\n emit[key] = ((\n ...args: Parameters<NonNullable<callbacks[keyof callbacks]>>\n ) => {\n const listeners = getListeners()\n if (listeners.length === 0) return\n for (const listener of listeners) listener.fns[key]?.(...args)\n }) as callbacks[Extract<keyof callbacks, string>]\n }\n\n const cleanup = fn(emit)\n if (typeof cleanup === 'function') cleanupCache.set(observerId, cleanup)\n\n return unwatch\n}\n","import type { ErrorType } from '../errors/utils.js'\nimport { wait } from './wait.js'\n\ntype PollOptions<data> = {\n // Whether or not to emit when the polling starts.\n emitOnBegin?: boolean | undefined\n // The initial wait time (in ms) before polling.\n initialWaitTime?: ((data: data | void) => Promise<number>) | undefined\n // The interval (in ms).\n interval: number\n}\n\nexport type PollErrorType = ErrorType\n\n/**\n * @description Polls a function at a specified interval.\n */\nexport function poll<data>(\n fn: ({ unpoll }: { unpoll: () => void }) => Promise<data | void>,\n { emitOnBegin, initialWaitTime, interval }: PollOptions<data>,\n) {\n let active = true\n\n const unwatch = () => (active = false)\n\n const watch = async () => {\n let data: data | void = undefined\n if (emitOnBegin) data = await fn({ unpoll: unwatch })\n\n const initialWait = (await initialWaitTime?.(data)) ?? interval\n await wait(initialWait)\n\n const poll = async () => {\n if (!active) return\n await fn({ unpoll: unwatch })\n await wait(interval)\n poll()\n }\n\n poll()\n }\n watch()\n\n return unwatch\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { HasTransportType } from '../../types/transport.js'\nimport { hexToBigInt } from '../../utils/encoding/fromHex.js'\nimport { getAction } from '../../utils/getAction.js'\nimport { observe } from '../../utils/observe.js'\nimport { type PollErrorType, poll } from '../../utils/poll.js'\nimport { stringify } from '../../utils/stringify.js'\n\nimport {\n type GetBlockNumberReturnType,\n getBlockNumber,\n} from './getBlockNumber.js'\n\nexport type OnBlockNumberParameter = GetBlockNumberReturnType\nexport type OnBlockNumberFn = (\n blockNumber: OnBlockNumberParameter,\n prevBlockNumber: OnBlockNumberParameter | undefined,\n) => void\n\nexport type WatchBlockNumberParameters<\n transport extends Transport = Transport,\n> = {\n /** The callback to call when a new block number is received. */\n onBlockNumber: OnBlockNumberFn\n /** The callback to call when an error occurred when trying to get for a new block. */\n onError?: ((error: Error) => void) | undefined\n} & (\n | (HasTransportType<transport, 'webSocket'> extends true\n ? {\n emitMissed?: undefined\n emitOnBegin?: undefined\n /** Whether or not the WebSocket Transport should poll the JSON-RPC, rather than using `eth_subscribe`. */\n poll?: false | undefined\n pollingInterval?: undefined\n }\n : never)\n | {\n /** Whether or not to emit the missed block numbers to the callback. */\n emitMissed?: boolean | undefined\n /** Whether or not to emit the latest block number to the callback when the subscription opens. */\n emitOnBegin?: boolean | undefined\n poll?: true | undefined\n /** Polling frequency (in ms). Defaults to Client's pollingInterval config. */\n pollingInterval?: number | undefined\n }\n)\n\nexport type WatchBlockNumberReturnType = () => void\n\nexport type WatchBlockNumberErrorType = PollErrorType | ErrorType\n\n/**\n * Watches and returns incoming block numbers.\n *\n * - Docs: https://viem.sh/docs/actions/public/watchBlockNumber\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks_watching-blocks\n * - JSON-RPC Methods:\n * - When `poll: true`, calls [`eth_blockNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber) on a polling interval.\n * - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `\"newHeads\"` event.\n *\n * @param client - Client to use\n * @param parameters - {@link WatchBlockNumberParameters}\n * @returns A function that can be invoked to stop watching for new block numbers. {@link WatchBlockNumberReturnType}\n *\n * @example\n * import { createPublicClient, watchBlockNumber, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = watchBlockNumber(client, {\n * onBlockNumber: (blockNumber) => console.log(blockNumber),\n * })\n */\nexport function watchBlockNumber<\n chain extends Chain | undefined,\n transport extends Transport,\n>(\n client: Client<transport, chain>,\n {\n emitOnBegin = false,\n emitMissed = false,\n onBlockNumber,\n onError,\n poll: poll_,\n pollingInterval = client.pollingInterval,\n }: WatchBlockNumberParameters<transport>,\n): WatchBlockNumberReturnType {\n const enablePolling = (() => {\n if (typeof poll_ !== 'undefined') return poll_\n if (client.transport.type === 'webSocket') return false\n if (\n client.transport.type === 'fallback' &&\n client.transport.transports[0].config.type === 'webSocket'\n )\n return false\n return true\n })()\n\n let prevBlockNumber: GetBlockNumberReturnType | undefined\n\n const pollBlockNumber = () => {\n const observerId = stringify([\n 'watchBlockNumber',\n client.uid,\n emitOnBegin,\n emitMissed,\n pollingInterval,\n ])\n\n return observe(observerId, { onBlockNumber, onError }, (emit) =>\n poll(\n async () => {\n try {\n const blockNumber = await getAction(\n client,\n getBlockNumber,\n 'getBlockNumber',\n )({ cacheTime: 0 })\n\n if (prevBlockNumber) {\n // If the current block number is the same as the previous,\n // we can skip.\n if (blockNumber === prevBlockNumber) return\n\n // If we have missed out on some previous blocks, and the\n // `emitMissed` flag is truthy, let's emit those blocks.\n if (blockNumber - prevBlockNumber > 1 && emitMissed) {\n for (let i = prevBlockNumber + 1n; i < blockNumber; i++) {\n emit.onBlockNumber(i, prevBlockNumber)\n prevBlockNumber = i\n }\n }\n }\n\n // If the next block number is greater than the previous,\n // it is not in the past, and we can emit the new block number.\n if (!prevBlockNumber || blockNumber > prevBlockNumber) {\n emit.onBlockNumber(blockNumber, prevBlockNumber)\n prevBlockNumber = blockNumber\n }\n } catch (err) {\n emit.onError?.(err as Error)\n }\n },\n {\n emitOnBegin,\n interval: pollingInterval,\n },\n ),\n )\n }\n\n const subscribeBlockNumber = () => {\n const observerId = stringify([\n 'watchBlockNumber',\n client.uid,\n emitOnBegin,\n emitMissed,\n ])\n\n return observe(observerId, { onBlockNumber, onError }, (emit) => {\n let active = true\n let unsubscribe = () => (active = false)\n ;(async () => {\n try {\n const transport = (() => {\n if (client.transport.type === 'fallback') {\n const transport = client.transport.transports.find(\n (transport: ReturnType<Transport>) =>\n transport.config.type === 'webSocket',\n )\n if (!transport) return client.transport\n return transport.value\n }\n return client.transport\n })()\n\n const { unsubscribe: unsubscribe_ } = await transport.subscribe({\n params: ['newHeads'],\n onData(data: any) {\n if (!active) return\n const blockNumber = hexToBigInt(data.result?.number)\n emit.onBlockNumber(blockNumber, prevBlockNumber)\n prevBlockNumber = blockNumber\n },\n onError(error: Error) {\n emit.onError?.(error)\n },\n })\n unsubscribe = unsubscribe_\n if (!active) unsubscribe()\n } catch (err) {\n onError?.(err as Error)\n }\n })()\n return () => unsubscribe()\n })\n }\n\n return enablePolling ? pollBlockNumber() : subscribeBlockNumber()\n}\n","import type { Address } from 'abitype'\n\nimport type { ExactPartial, Prettify } from '../../types/utils.js'\nimport type { SiweMessage } from './types.js'\n\n/**\n * @description Parses EIP-4361 formatted message into message fields object.\n *\n * @see https://eips.ethereum.org/EIPS/eip-4361\n *\n * @returns EIP-4361 fields object\n */\nexport function parseSiweMessage(\n message: string,\n): Prettify<ExactPartial<SiweMessage>> {\n const { scheme, statement, ...prefix } = (message.match(prefixRegex)\n ?.groups ?? {}) as {\n address: Address\n domain: string\n scheme?: string\n statement?: string\n }\n const { chainId, expirationTime, issuedAt, notBefore, requestId, ...suffix } =\n (message.match(suffixRegex)?.groups ?? {}) as {\n chainId: string\n expirationTime?: string\n issuedAt?: string\n nonce: string\n notBefore?: string\n requestId?: string\n uri: string\n version: '1'\n }\n const resources = message.split('Resources:')[1]?.split('\\n- ').slice(1)\n return {\n ...prefix,\n ...suffix,\n ...(chainId ? { chainId: Number(chainId) } : {}),\n ...(expirationTime ? { expirationTime: new Date(expirationTime) } : {}),\n ...(issuedAt ? { issuedAt: new Date(issuedAt) } : {}),\n ...(notBefore ? { notBefore: new Date(notBefore) } : {}),\n ...(requestId ? { requestId } : {}),\n ...(resources ? { resources } : {}),\n ...(scheme ? { scheme } : {}),\n ...(statement ? { statement } : {}),\n }\n}\n\n// https://regexr.com/80gdj\nconst prefixRegex =\n /^(?:(?<scheme>[a-zA-Z][a-zA-Z0-9+-.]*):\\/\\/)?(?<domain>[a-zA-Z0-9+-.]*(?::[0-9]{1,5})?) (?:wants you to sign in with your Ethereum account:\\n)(?<address>0x[a-fA-F0-9]{40})\\n\\n(?:(?<statement>.*)\\n\\n)?/\n\n// https://regexr.com/80gf9\nconst suffixRegex =\n /(?:URI: (?<uri>.+))\\n(?:Version: (?<version>.+))\\n(?:Chain ID: (?<chainId>\\d+))\\n(?:Nonce: (?<nonce>[a-zA-Z0-9]+))\\n(?:Issued At: (?<issuedAt>.+))(?:\\nExpiration Time: (?<expirationTime>.+))?(?:\\nNot Before: (?<notBefore>.+))?(?:\\nRequest ID: (?<requestId>.+))?/\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { Prettify } from '../../types/utils.js'\nimport { hashMessage } from '../../utils/signature/hashMessage.js'\nimport type { HashMessageErrorType } from '../../utils/signature/hashMessage.js'\nimport { parseSiweMessage } from '../../utils/siwe/parseSiweMessage.js'\nimport {\n type ValidateSiweMessageParameters,\n validateSiweMessage,\n} from '../../utils/siwe/validateSiweMessage.js'\nimport {\n type VerifyHashErrorType,\n type VerifyHashParameters,\n verifyHash,\n} from '../public/verifyHash.js'\n\nexport type VerifySiweMessageParameters = Prettify<\n Pick<VerifyHashParameters, 'blockNumber' | 'blockTag'> &\n Pick<\n ValidateSiweMessageParameters,\n 'address' | 'domain' | 'nonce' | 'scheme' | 'time'\n > & {\n /**\n * EIP-4361 formatted message.\n */\n message: string\n /**\n * Signature to check against.\n */\n signature: Hex\n }\n>\n\nexport type VerifySiweMessageReturnType = boolean\n\nexport type VerifySiweMessageErrorType =\n | HashMessageErrorType\n | VerifyHashErrorType\n | ErrorType\n\n/**\n * Verifies [EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) formatted message was signed.\n *\n * Compatible with Smart Contract Accounts & Externally Owned Accounts via [ERC-6492](https://eips.ethereum.org/EIPS/eip-6492).\n *\n * - Docs {@link https://viem.sh/docs/siwe/actions/verifySiweMessage}\n *\n * @param client - Client to use.\n * @param parameters - {@link VerifySiweMessageParameters}\n * @returns Whether or not the signature is valid. {@link VerifySiweMessageReturnType}\n */\nexport async function verifySiweMessage<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n parameters: VerifySiweMessageParameters,\n): Promise<VerifySiweMessageReturnType> {\n const {\n address,\n domain,\n message,\n nonce,\n scheme,\n signature,\n time = new Date(),\n ...callRequest\n } = parameters\n\n const parsed = parseSiweMessage(message)\n if (!parsed.address) return false\n\n const isValid = validateSiweMessage({\n address,\n domain,\n message: parsed,\n nonce,\n scheme,\n time,\n })\n if (!isValid) return false\n\n const hash = hashMessage(message)\n return verifyHash(client, {\n address: parsed.address,\n hash,\n signature,\n ...callRequest,\n })\n}\n","import type { Address } from 'abitype'\n\nimport type { ExactPartial } from '../../types/utils.js'\nimport { isAddressEqual } from '../address/isAddressEqual.js'\nimport type { SiweMessage } from './types.js'\n\nexport type ValidateSiweMessageParameters = {\n /**\n * Ethereum address to check against.\n */\n address?: Address | undefined\n /**\n * [RFC 3986](https://www.rfc-editor.org/rfc/rfc3986) authority to check against.\n */\n domain?: string | undefined\n /**\n * EIP-4361 message fields.\n */\n message: ExactPartial<SiweMessage>\n /**\n * Random string to check against.\n */\n nonce?: string | undefined\n /**\n * [RFC 3986](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) URI scheme to check against.\n */\n scheme?: string | undefined\n /**\n * Current time to check optional `expirationTime` and `notBefore` fields.\n *\n * @default new Date()\n */\n time?: Date | undefined\n}\n\nexport type ValidateSiweMessageReturnType = boolean\n\n/**\n * @description Validates EIP-4361 message.\n *\n * @see https://eips.ethereum.org/EIPS/eip-4361\n */\nexport function validateSiweMessage(\n parameters: ValidateSiweMessageParameters,\n): ValidateSiweMessageReturnType {\n const {\n address,\n domain,\n message,\n nonce,\n scheme,\n time = new Date(),\n } = parameters\n\n if (domain && message.domain !== domain) return false\n if (nonce && message.nonce !== nonce) return false\n if (scheme && message.scheme !== scheme) return false\n\n if (message.expirationTime && time >= message.expirationTime) return false\n if (message.notBefore && time < message.notBefore) return false\n\n try {\n if (!message.address) return false\n if (address && !isAddressEqual(message.address, address)) return false\n } catch {\n return false\n }\n\n return true\n}\n","import type { Abi, AbiEvent, Address } from 'abitype'\n\nimport {\n type GetEnsAddressParameters,\n type GetEnsAddressReturnType,\n getEnsAddress,\n} from '../../actions/ens/getEnsAddress.js'\nimport {\n type GetEnsAvatarParameters,\n type GetEnsAvatarReturnType,\n getEnsAvatar,\n} from '../../actions/ens/getEnsAvatar.js'\nimport {\n type GetEnsNameParameters,\n type GetEnsNameReturnType,\n getEnsName,\n} from '../../actions/ens/getEnsName.js'\nimport {\n type GetEnsResolverParameters,\n type GetEnsResolverReturnType,\n getEnsResolver,\n} from '../../actions/ens/getEnsResolver.js'\nimport {\n type GetEnsTextParameters,\n type GetEnsTextReturnType,\n getEnsText,\n} from '../../actions/ens/getEnsText.js'\nimport {\n type CallParameters,\n type CallReturnType,\n call,\n} from '../../actions/public/call.js'\nimport {\n type CreateBlockFilterReturnType,\n createBlockFilter,\n} from '../../actions/public/createBlockFilter.js'\nimport {\n type CreateContractEventFilterParameters,\n type CreateContractEventFilterReturnType,\n createContractEventFilter,\n} from '../../actions/public/createContractEventFilter.js'\nimport {\n type CreateEventFilterParameters,\n type CreateEventFilterReturnType,\n createEventFilter,\n} from '../../actions/public/createEventFilter.js'\nimport {\n type CreatePendingTransactionFilterReturnType,\n createPendingTransactionFilter,\n} from '../../actions/public/createPendingTransactionFilter.js'\nimport {\n type EstimateContractGasParameters,\n type EstimateContractGasReturnType,\n estimateContractGas,\n} from '../../actions/public/estimateContractGas.js'\nimport {\n type EstimateFeesPerGasParameters,\n type EstimateFeesPerGasReturnType,\n estimateFeesPerGas,\n} from '../../actions/public/estimateFeesPerGas.js'\nimport {\n type EstimateGasParameters,\n type EstimateGasReturnType,\n estimateGas,\n} from '../../actions/public/estimateGas.js'\nimport {\n type EstimateMaxPriorityFeePerGasParameters,\n type EstimateMaxPriorityFeePerGasReturnType,\n estimateMaxPriorityFeePerGas,\n} from '../../actions/public/estimateMaxPriorityFeePerGas.js'\nimport {\n type GetBalanceParameters,\n type GetBalanceReturnType,\n getBalance,\n} from '../../actions/public/getBalance.js'\nimport {\n type GetBlobBaseFeeReturnType,\n getBlobBaseFee,\n} from '../../actions/public/getBlobBaseFee.js'\nimport {\n type GetBlockParameters,\n type GetBlockReturnType,\n getBlock,\n} from '../../actions/public/getBlock.js'\nimport {\n type GetBlockNumberParameters,\n type GetBlockNumberReturnType,\n getBlockNumber,\n} from '../../actions/public/getBlockNumber.js'\nimport {\n type GetBlockTransactionCountParameters,\n type GetBlockTransactionCountReturnType,\n getBlockTransactionCount,\n} from '../../actions/public/getBlockTransactionCount.js'\nimport {\n type GetChainIdReturnType,\n getChainId,\n} from '../../actions/public/getChainId.js'\nimport {\n type GetCodeParameters,\n type GetCodeReturnType,\n getCode,\n} from '../../actions/public/getCode.js'\nimport {\n type GetContractEventsParameters,\n type GetContractEventsReturnType,\n getContractEvents,\n} from '../../actions/public/getContractEvents.js'\nimport {\n type GetEip712DomainParameters,\n type GetEip712DomainReturnType,\n getEip712Domain,\n} from '../../actions/public/getEip712Domain.js'\nimport {\n type GetFeeHistoryParameters,\n type GetFeeHistoryReturnType,\n getFeeHistory,\n} from '../../actions/public/getFeeHistory.js'\nimport {\n type GetFilterChangesParameters,\n type GetFilterChangesReturnType,\n getFilterChanges,\n} from '../../actions/public/getFilterChanges.js'\nimport {\n type GetFilterLogsParameters,\n type GetFilterLogsReturnType,\n getFilterLogs,\n} from '../../actions/public/getFilterLogs.js'\nimport {\n type GetGasPriceReturnType,\n getGasPrice,\n} from '../../actions/public/getGasPrice.js'\nimport {\n type GetLogsParameters,\n type GetLogsReturnType,\n getLogs,\n} from '../../actions/public/getLogs.js'\nimport {\n type GetProofParameters,\n type GetProofReturnType,\n getProof,\n} from '../../actions/public/getProof.js'\nimport {\n type GetStorageAtParameters,\n type GetStorageAtReturnType,\n getStorageAt,\n} from '../../actions/public/getStorageAt.js'\nimport {\n type GetTransactionParameters,\n type GetTransactionReturnType,\n getTransaction,\n} from '../../actions/public/getTransaction.js'\nimport {\n type GetTransactionConfirmationsParameters,\n type GetTransactionConfirmationsReturnType,\n getTransactionConfirmations,\n} from '../../actions/public/getTransactionConfirmations.js'\nimport {\n type GetTransactionCountParameters,\n type GetTransactionCountReturnType,\n getTransactionCount,\n} from '../../actions/public/getTransactionCount.js'\nimport {\n type GetTransactionReceiptParameters,\n type GetTransactionReceiptReturnType,\n getTransactionReceipt,\n} from '../../actions/public/getTransactionReceipt.js'\nimport {\n type MulticallParameters,\n type MulticallReturnType,\n multicall,\n} from '../../actions/public/multicall.js'\nimport {\n type ReadContractParameters,\n type ReadContractReturnType,\n readContract,\n} from '../../actions/public/readContract.js'\nimport {\n type SimulateContractParameters,\n type SimulateContractReturnType,\n simulateContract,\n} from '../../actions/public/simulateContract.js'\nimport {\n type UninstallFilterParameters,\n type UninstallFilterReturnType,\n uninstallFilter,\n} from '../../actions/public/uninstallFilter.js'\nimport {\n type VerifyMessageParameters,\n type VerifyMessageReturnType,\n verifyMessage,\n} from '../../actions/public/verifyMessage.js'\nimport {\n type VerifyTypedDataParameters,\n type VerifyTypedDataReturnType,\n verifyTypedData,\n} from '../../actions/public/verifyTypedData.js'\nimport {\n type WaitForTransactionReceiptParameters,\n type WaitForTransactionReceiptReturnType,\n waitForTransactionReceipt,\n} from '../../actions/public/waitForTransactionReceipt.js'\nimport {\n type WatchBlockNumberParameters,\n type WatchBlockNumberReturnType,\n watchBlockNumber,\n} from '../../actions/public/watchBlockNumber.js'\nimport {\n type WatchBlocksParameters,\n type WatchBlocksReturnType,\n watchBlocks,\n} from '../../actions/public/watchBlocks.js'\nimport {\n type WatchContractEventParameters,\n type WatchContractEventReturnType,\n watchContractEvent,\n} from '../../actions/public/watchContractEvent.js'\nimport {\n type WatchEventParameters,\n type WatchEventReturnType,\n watchEvent,\n} from '../../actions/public/watchEvent.js'\nimport {\n type WatchPendingTransactionsParameters,\n type WatchPendingTransactionsReturnType,\n watchPendingTransactions,\n} from '../../actions/public/watchPendingTransactions.js'\nimport {\n type VerifySiweMessageParameters,\n type VerifySiweMessageReturnType,\n verifySiweMessage,\n} from '../../actions/siwe/verifySiweMessage.js'\nimport {\n type PrepareTransactionRequestParameters,\n type PrepareTransactionRequestRequest,\n type PrepareTransactionRequestReturnType,\n prepareTransactionRequest,\n} from '../../actions/wallet/prepareTransactionRequest.js'\nimport {\n type SendRawTransactionParameters,\n type SendRawTransactionReturnType,\n sendRawTransaction,\n} from '../../actions/wallet/sendRawTransaction.js'\nimport type { Account } from '../../types/account.js'\nimport type { BlockNumber, BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type {\n ContractEventName,\n ContractFunctionArgs,\n ContractFunctionName,\n MaybeAbiEventName,\n MaybeExtractEventArgsFromAbi,\n} from '../../types/contract.js'\nimport type { FeeValuesType } from '../../types/fee.js'\nimport type { FilterType } from '../../types/filter.js'\nimport type { Client } from '../createClient.js'\nimport type { Transport } from '../transports/createTransport.js'\n\nexport type PublicActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n> = {\n /**\n * Executes a new message call immediately without submitting a transaction to the network.\n *\n * - Docs: https://viem.sh/docs/actions/public/call\n * - JSON-RPC Methods: [`eth_call`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call)\n *\n * @param args - {@link CallParameters}\n * @returns The call data. {@link CallReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const data = await client.call({\n * account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',\n * data: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * })\n */\n call: (parameters: CallParameters<chain>) => Promise<CallReturnType>\n /**\n * Creates a Filter to listen for new block hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).\n *\n * - Docs: https://viem.sh/docs/actions/public/createBlockFilter\n * - JSON-RPC Methods: [`eth_newBlockFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newBlockFilter)\n *\n * @returns Filter. {@link CreateBlockFilterReturnType}\n *\n * @example\n * import { createPublicClient, createBlockFilter, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createBlockFilter(client)\n * // { id: \"0x345a6572337856574a76364e457a4366\", type: 'block' }\n */\n createBlockFilter: () => Promise<CreateBlockFilterReturnType>\n /**\n * Creates a Filter to retrieve event logs that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges) or [`getFilterLogs`](https://viem.sh/docs/actions/public/getFilterLogs).\n *\n * - Docs: https://viem.sh/docs/contract/createContractEventFilter\n *\n * @param args - {@link CreateContractEventFilterParameters}\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateContractEventFilterReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await client.createContractEventFilter({\n * abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']),\n * })\n */\n createContractEventFilter: <\n const abi extends Abi | readonly unknown[],\n eventName extends ContractEventName<abi> | undefined,\n args extends MaybeExtractEventArgsFromAbi<abi, eventName> | undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n >(\n args: CreateContractEventFilterParameters<\n abi,\n eventName,\n args,\n strict,\n fromBlock,\n toBlock\n >,\n ) => Promise<\n CreateContractEventFilterReturnType<\n abi,\n eventName,\n args,\n strict,\n fromBlock,\n toBlock\n >\n >\n /**\n * Creates a [`Filter`](https://viem.sh/docs/glossary/types#filter) to listen for new events that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).\n *\n * - Docs: https://viem.sh/docs/actions/public/createEventFilter\n * - JSON-RPC Methods: [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter)\n *\n * @param args - {@link CreateEventFilterParameters}\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateEventFilterReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await client.createEventFilter({\n * address: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',\n * })\n */\n createEventFilter: <\n const abiEvent extends AbiEvent | undefined = undefined,\n const abiEvents extends\n | readonly AbiEvent[]\n | readonly unknown[]\n | undefined = abiEvent extends AbiEvent ? [abiEvent] : undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n _EventName extends string | undefined = MaybeAbiEventName<abiEvent>,\n _Args extends\n | MaybeExtractEventArgsFromAbi<abiEvents, _EventName>\n | undefined = undefined,\n >(\n args?:\n | CreateEventFilterParameters<\n abiEvent,\n abiEvents,\n strict,\n fromBlock,\n toBlock,\n _EventName,\n _Args\n >\n | undefined,\n ) => Promise<\n CreateEventFilterReturnType<\n abiEvent,\n abiEvents,\n strict,\n fromBlock,\n toBlock,\n _EventName,\n _Args\n >\n >\n /**\n * Creates a Filter to listen for new pending transaction hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).\n *\n * - Docs: https://viem.sh/docs/actions/public/createPendingTransactionFilter\n * - JSON-RPC Methods: [`eth_newPendingTransactionFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter)\n *\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateBlockFilterReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await client.createPendingTransactionFilter()\n * // { id: \"0x345a6572337856574a76364e457a4366\", type: 'transaction' }\n */\n createPendingTransactionFilter: () => Promise<CreatePendingTransactionFilterReturnType>\n /**\n * Estimates the gas required to successfully execute a contract write function call.\n *\n * - Docs: https://viem.sh/docs/contract/estimateContractGas\n *\n * @remarks\n * Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`estimateGas` action](https://viem.sh/docs/actions/public/estimateGas) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * @param args - {@link EstimateContractGasParameters}\n * @returns The gas estimate (in wei). {@link EstimateContractGasReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const gas = await client.estimateContractGas({\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function mint() public']),\n * functionName: 'mint',\n * account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',\n * })\n */\n estimateContractGas: <\n chain extends Chain | undefined,\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName<abi, 'nonpayable' | 'payable'>,\n args extends ContractFunctionArgs<\n abi,\n 'nonpayable' | 'payable',\n functionName\n >,\n >(\n args: EstimateContractGasParameters<abi, functionName, args, chain>,\n ) => Promise<EstimateContractGasReturnType>\n /**\n * Estimates the gas necessary to complete a transaction without submitting it to the network.\n *\n * - Docs: https://viem.sh/docs/actions/public/estimateGas\n * - JSON-RPC Methods: [`eth_estimateGas`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_estimategas)\n *\n * @param args - {@link EstimateGasParameters}\n * @returns The gas estimate (in wei). {@link EstimateGasReturnType}\n *\n * @example\n * import { createPublicClient, http, parseEther } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const gasEstimate = await client.estimateGas({\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * value: parseEther('1'),\n * })\n */\n estimateGas: (\n args: EstimateGasParameters<chain>,\n ) => Promise<EstimateGasReturnType>\n /**\n * Returns the balance of an address in wei.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBalance\n * - JSON-RPC Methods: [`eth_getBalance`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getbalance)\n *\n * @remarks\n * You can convert the balance to ether units with [`formatEther`](https://viem.sh/docs/utilities/formatEther).\n *\n * ```ts\n * const balance = await getBalance(client, {\n * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * blockTag: 'safe'\n * })\n * const balanceAsEther = formatEther(balance)\n * // \"6.942\"\n * ```\n *\n * @param args - {@link GetBalanceParameters}\n * @returns The balance of the address in wei. {@link GetBalanceReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const balance = await client.getBalance({\n * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n * // 10000000000000000000000n (wei)\n */\n getBalance: (args: GetBalanceParameters) => Promise<GetBalanceReturnType>\n /**\n * Returns the base fee per blob gas in wei.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBlobBaseFee\n * - JSON-RPC Methods: [`eth_blobBaseFee`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blobBaseFee)\n *\n * @param client - Client to use\n * @returns The blob base fee (in wei). {@link GetBlobBaseFeeReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBlobBaseFee } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const blobBaseFee = await client.getBlobBaseFee()\n */\n getBlobBaseFee: () => Promise<GetBlobBaseFeeReturnType>\n /**\n * Returns information about a block at a block number, hash, or tag.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBlock\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks_fetching-blocks\n * - JSON-RPC Methods:\n * - Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) for `blockNumber` & `blockTag`.\n * - Calls [`eth_getBlockByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbyhash) for `blockHash`.\n *\n * @param args - {@link GetBlockParameters}\n * @returns Information about the block. {@link GetBlockReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const block = await client.getBlock()\n */\n getBlock: <\n includeTransactions extends boolean = false,\n blockTag extends BlockTag = 'latest',\n >(\n args?: GetBlockParameters<includeTransactions, blockTag> | undefined,\n ) => Promise<GetBlockReturnType<chain, includeTransactions, blockTag>>\n /**\n * Returns the number of the most recent block seen.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBlockNumber\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks_fetching-blocks\n * - JSON-RPC Methods: [`eth_blockNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber)\n *\n * @param args - {@link GetBlockNumberParameters}\n * @returns The number of the block. {@link GetBlockNumberReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const blockNumber = await client.getBlockNumber()\n * // 69420n\n */\n getBlockNumber: (\n args?: GetBlockNumberParameters | undefined,\n ) => Promise<GetBlockNumberReturnType>\n /**\n * Returns the number of Transactions at a block number, hash, or tag.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBlockTransactionCount\n * - JSON-RPC Methods:\n * - Calls [`eth_getBlockTransactionCountByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbynumber) for `blockNumber` & `blockTag`.\n * - Calls [`eth_getBlockTransactionCountByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbyhash) for `blockHash`.\n *\n * @param args - {@link GetBlockTransactionCountParameters}\n * @returns The block transaction count. {@link GetBlockTransactionCountReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const count = await client.getBlockTransactionCount()\n */\n getBlockTransactionCount: (\n args?: GetBlockTransactionCountParameters | undefined,\n ) => Promise<GetBlockTransactionCountReturnType>\n /** @deprecated Use `getCode` instead. */\n getBytecode: (args: GetCodeParameters) => Promise<GetCodeReturnType>\n /**\n * Returns the chain ID associated with the current network.\n *\n * - Docs: https://viem.sh/docs/actions/public/getChainId\n * - JSON-RPC Methods: [`eth_chainId`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_chainid)\n *\n * @returns The current chain ID. {@link GetChainIdReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const chainId = await client.getChainId()\n * // 1\n */\n getChainId: () => Promise<GetChainIdReturnType>\n /**\n * Retrieves the bytecode at an address.\n *\n * - Docs: https://viem.sh/docs/contract/getCode\n * - JSON-RPC Methods: [`eth_getCode`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getcode)\n *\n * @param args - {@link GetBytecodeParameters}\n * @returns The contract's bytecode. {@link GetBytecodeReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const code = await client.getCode({\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * })\n */\n getCode: (args: GetCodeParameters) => Promise<GetCodeReturnType>\n /**\n * Returns a list of event logs emitted by a contract.\n *\n * - Docs: https://viem.sh/docs/actions/public/getContractEvents\n * - JSON-RPC Methods: [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs)\n *\n * @param client - Client to use\n * @param parameters - {@link GetContractEventsParameters}\n * @returns A list of event logs. {@link GetContractEventsReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { wagmiAbi } from './abi'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const logs = await client.getContractEvents(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: wagmiAbi,\n * eventName: 'Transfer'\n * })\n */\n getContractEvents: <\n const abi extends Abi | readonly unknown[],\n eventName extends ContractEventName<abi> | undefined = undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n >(\n args: GetContractEventsParameters<\n abi,\n eventName,\n strict,\n fromBlock,\n toBlock\n >,\n ) => Promise<\n GetContractEventsReturnType<abi, eventName, strict, fromBlock, toBlock>\n >\n /**\n * Reads the EIP-712 domain from a contract, based on the ERC-5267 specification.\n *\n * @param client - A {@link Client} instance.\n * @param parameters - The parameters of the action. {@link GetEip712DomainParameters}\n * @returns The EIP-712 domain, fields, and extensions. {@link GetEip712DomainReturnType}\n *\n * @example\n * ```ts\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n *\n * const domain = await client.getEip712Domain({\n * address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n * })\n * // {\n * // domain: {\n * // name: 'ExampleContract',\n * // version: '1',\n * // chainId: 1,\n * // verifyingContract: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n * // },\n * // fields: '0x0f',\n * // extensions: [],\n * // }\n * ```\n */\n getEip712Domain: (\n args: GetEip712DomainParameters,\n ) => Promise<GetEip712DomainReturnType>\n /**\n * Gets address for ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsAddress\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * @remarks\n * Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param args - {@link GetEnsAddressParameters}\n * @returns Address for ENS name or `null` if not found. {@link GetEnsAddressReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const ensAddress = await client.getEnsAddress({\n * name: normalize('wevm.eth'),\n * })\n * // '0xd2135CfB216b74109775236E36d4b433F1DF507B'\n */\n getEnsAddress: (\n args: GetEnsAddressParameters,\n ) => Promise<GetEnsAddressReturnType>\n /**\n * Gets the avatar of an ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsAvatar\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * @remarks\n * Calls [`getEnsText`](https://viem.sh/docs/ens/actions/getEnsText) with `key` set to `'avatar'`.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param args - {@link GetEnsAvatarParameters}\n * @returns Avatar URI or `null` if not found. {@link GetEnsAvatarReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const ensAvatar = await client.getEnsAvatar({\n * name: normalize('wevm.eth'),\n * })\n * // 'https://ipfs.io/ipfs/Qma8mnp6xV3J2cRNf3mTth5C8nV11CAnceVinc3y8jSbio'\n */\n getEnsAvatar: (\n args: GetEnsAvatarParameters,\n ) => Promise<GetEnsAvatarReturnType>\n /**\n * Gets primary name for specified address.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsName\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * @remarks\n * Calls `reverse(bytes)` on ENS Universal Resolver Contract to \"reverse resolve\" the address to the primary ENS name.\n *\n * @param args - {@link GetEnsNameParameters}\n * @returns Name or `null` if not found. {@link GetEnsNameReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const ensName = await client.getEnsName({\n * address: '0xd2135CfB216b74109775236E36d4b433F1DF507B',\n * })\n * // 'wevm.eth'\n */\n getEnsName: (args: GetEnsNameParameters) => Promise<GetEnsNameReturnType>\n /**\n * Gets resolver for ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsResolver\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * @remarks\n * Calls `findResolver(bytes)` on ENS Universal Resolver Contract to retrieve the resolver of an ENS name.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param args - {@link GetEnsResolverParameters}\n * @returns Address for ENS resolver. {@link GetEnsResolverReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const resolverAddress = await client.getEnsResolver({\n * name: normalize('wevm.eth'),\n * })\n * // '0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41'\n */\n getEnsResolver: (\n args: GetEnsResolverParameters,\n ) => Promise<GetEnsResolverReturnType>\n /**\n * Gets a text record for specified ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsResolver\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * @remarks\n * Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param args - {@link GetEnsTextParameters}\n * @returns Address for ENS resolver. {@link GetEnsTextReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const twitterRecord = await client.getEnsText({\n * name: normalize('wevm.eth'),\n * key: 'com.twitter',\n * })\n * // 'wevm_dev'\n */\n getEnsText: (args: GetEnsTextParameters) => Promise<GetEnsTextReturnType>\n /**\n * Returns a collection of historical gas information.\n *\n * - Docs: https://viem.sh/docs/actions/public/getFeeHistory\n * - JSON-RPC Methods: [`eth_feeHistory`](https://docs.alchemy.com/reference/eth-feehistory)\n *\n * @param args - {@link GetFeeHistoryParameters}\n * @returns The gas estimate (in wei). {@link GetFeeHistoryReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const feeHistory = await client.getFeeHistory({\n * blockCount: 4,\n * rewardPercentiles: [25, 75],\n * })\n */\n getFeeHistory: (\n args: GetFeeHistoryParameters,\n ) => Promise<GetFeeHistoryReturnType>\n /**\n * Returns an estimate for the fees per gas for a transaction to be included\n * in the next block.\n *\n * - Docs: https://viem.sh/docs/actions/public/estimateFeesPerGas\n *\n * @param client - Client to use\n * @param parameters - {@link EstimateFeesPerGasParameters}\n * @returns An estimate (in wei) for the fees per gas. {@link EstimateFeesPerGasReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const maxPriorityFeePerGas = await client.estimateFeesPerGas()\n * // { maxFeePerGas: ..., maxPriorityFeePerGas: ... }\n */\n estimateFeesPerGas: <\n chainOverride extends Chain | undefined = undefined,\n type extends FeeValuesType = 'eip1559',\n >(\n args?: EstimateFeesPerGasParameters<chain, chainOverride, type> | undefined,\n ) => Promise<EstimateFeesPerGasReturnType<type>>\n /**\n * Returns a list of logs or hashes based on a [Filter](/docs/glossary/terms#filter) since the last time it was called.\n *\n * - Docs: https://viem.sh/docs/actions/public/getFilterChanges\n * - JSON-RPC Methods: [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges)\n *\n * @remarks\n * A Filter can be created from the following actions:\n *\n * - [`createBlockFilter`](https://viem.sh/docs/actions/public/createBlockFilter)\n * - [`createContractEventFilter`](https://viem.sh/docs/contract/createContractEventFilter)\n * - [`createEventFilter`](https://viem.sh/docs/actions/public/createEventFilter)\n * - [`createPendingTransactionFilter`](https://viem.sh/docs/actions/public/createPendingTransactionFilter)\n *\n * Depending on the type of filter, the return value will be different:\n *\n * - If the filter was created with `createContractEventFilter` or `createEventFilter`, it returns a list of logs.\n * - If the filter was created with `createPendingTransactionFilter`, it returns a list of transaction hashes.\n * - If the filter was created with `createBlockFilter`, it returns a list of block hashes.\n *\n * @param args - {@link GetFilterChangesParameters}\n * @returns Logs or hashes. {@link GetFilterChangesReturnType}\n *\n * @example\n * // Blocks\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await client.createBlockFilter()\n * const hashes = await client.getFilterChanges({ filter })\n *\n * @example\n * // Contract Events\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await client.createContractEventFilter({\n * address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n * abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']),\n * eventName: 'Transfer',\n * })\n * const logs = await client.getFilterChanges({ filter })\n *\n * @example\n * // Raw Events\n * import { createPublicClient, http, parseAbiItem } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await client.createEventFilter({\n * address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n * event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'),\n * })\n * const logs = await client.getFilterChanges({ filter })\n *\n * @example\n * // Transactions\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await client.createPendingTransactionFilter()\n * const hashes = await client.getFilterChanges({ filter })\n */\n getFilterChanges: <\n filterType extends FilterType,\n const abi extends Abi | readonly unknown[] | undefined,\n eventName extends string | undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n >(\n args: GetFilterChangesParameters<\n filterType,\n abi,\n eventName,\n strict,\n fromBlock,\n toBlock\n >,\n ) => Promise<\n GetFilterChangesReturnType<\n filterType,\n abi,\n eventName,\n strict,\n fromBlock,\n toBlock\n >\n >\n /**\n * Returns a list of event logs since the filter was created.\n *\n * - Docs: https://viem.sh/docs/actions/public/getFilterLogs\n * - JSON-RPC Methods: [`eth_getFilterLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterlogs)\n *\n * @remarks\n * `getFilterLogs` is only compatible with **event filters**.\n *\n * @param args - {@link GetFilterLogsParameters}\n * @returns A list of event logs. {@link GetFilterLogsReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbiItem } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await client.createEventFilter({\n * address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n * event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'),\n * })\n * const logs = await client.getFilterLogs({ filter })\n */\n getFilterLogs: <\n const abi extends Abi | readonly unknown[] | undefined,\n eventName extends string | undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n >(\n args: GetFilterLogsParameters<abi, eventName, strict, fromBlock, toBlock>,\n ) => Promise<\n GetFilterLogsReturnType<abi, eventName, strict, fromBlock, toBlock>\n >\n /**\n * Returns the current price of gas (in wei).\n *\n * - Docs: https://viem.sh/docs/actions/public/getGasPrice\n * - JSON-RPC Methods: [`eth_gasPrice`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gasprice)\n *\n * @returns The gas price (in wei). {@link GetGasPriceReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const gasPrice = await client.getGasPrice()\n */\n getGasPrice: () => Promise<GetGasPriceReturnType>\n /**\n * Returns a list of event logs matching the provided parameters.\n *\n * - Docs: https://viem.sh/docs/actions/public/getLogs\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/logs_event-logs\n * - JSON-RPC Methods: [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs)\n *\n * @param args - {@link GetLogsParameters}\n * @returns A list of event logs. {@link GetLogsReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbiItem } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const logs = await client.getLogs()\n */\n getLogs: <\n const abiEvent extends AbiEvent | undefined = undefined,\n const abiEvents extends\n | readonly AbiEvent[]\n | readonly unknown[]\n | undefined = abiEvent extends AbiEvent ? [abiEvent] : undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n >(\n args?:\n | GetLogsParameters<abiEvent, abiEvents, strict, fromBlock, toBlock>\n | undefined,\n ) => Promise<\n GetLogsReturnType<abiEvent, abiEvents, strict, fromBlock, toBlock>\n >\n /**\n * Returns the account and storage values of the specified account including the Merkle-proof.\n *\n * - Docs: https://viem.sh/docs/actions/public/getProof\n * - JSON-RPC Methods:\n * - Calls [`eth_getProof`](https://eips.ethereum.org/EIPS/eip-1186)\n *\n * @param client - Client to use\n * @param parameters - {@link GetProofParameters}\n * @returns Proof data. {@link GetProofReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const block = await client.getProof({\n * address: '0x...',\n * storageKeys: ['0x...'],\n * })\n */\n getProof: (args: GetProofParameters) => Promise<GetProofReturnType>\n /**\n * Returns an estimate for the max priority fee per gas (in wei) for a transaction\n * to be included in the next block.\n *\n * - Docs: https://viem.sh/docs/actions/public/estimateMaxPriorityFeePerGas\n *\n * @param client - Client to use\n * @returns An estimate (in wei) for the max priority fee per gas. {@link EstimateMaxPriorityFeePerGasReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const maxPriorityFeePerGas = await client.estimateMaxPriorityFeePerGas()\n * // 10000000n\n */\n estimateMaxPriorityFeePerGas: <\n chainOverride extends Chain | undefined = undefined,\n >(\n args?:\n | EstimateMaxPriorityFeePerGasParameters<chain, chainOverride>\n | undefined,\n ) => Promise<EstimateMaxPriorityFeePerGasReturnType>\n /**\n * Returns the value from a storage slot at a given address.\n *\n * - Docs: https://viem.sh/docs/contract/getStorageAt\n * - JSON-RPC Methods: [`eth_getStorageAt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getstorageat)\n *\n * @param args - {@link GetStorageAtParameters}\n * @returns The value of the storage slot. {@link GetStorageAtReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getStorageAt } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const code = await client.getStorageAt({\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * slot: toHex(0),\n * })\n */\n getStorageAt: (\n args: GetStorageAtParameters,\n ) => Promise<GetStorageAtReturnType>\n /**\n * Returns information about a [Transaction](https://viem.sh/docs/glossary/terms#transaction) given a hash or block identifier.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransaction\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_fetching-transactions\n * - JSON-RPC Methods: [`eth_getTransactionByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionByHash)\n *\n * @param args - {@link GetTransactionParameters}\n * @returns The transaction information. {@link GetTransactionReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const transaction = await client.getTransaction({\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\n getTransaction: <blockTag extends BlockTag = 'latest'>(\n args: GetTransactionParameters<blockTag>,\n ) => Promise<GetTransactionReturnType<chain, blockTag>>\n /**\n * Returns the number of blocks passed (confirmations) since the transaction was processed on a block.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransactionConfirmations\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_fetching-transactions\n * - JSON-RPC Methods: [`eth_getTransactionConfirmations`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionConfirmations)\n *\n * @param args - {@link GetTransactionConfirmationsParameters}\n * @returns The number of blocks passed since the transaction was processed. If confirmations is 0, then the Transaction has not been confirmed & processed yet. {@link GetTransactionConfirmationsReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const confirmations = await client.getTransactionConfirmations({\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\n getTransactionConfirmations: (\n args: GetTransactionConfirmationsParameters<chain>,\n ) => Promise<GetTransactionConfirmationsReturnType>\n /**\n * Returns the number of [Transactions](https://viem.sh/docs/glossary/terms#transaction) an Account has broadcast / sent.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransactionCount\n * - JSON-RPC Methods: [`eth_getTransactionCount`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactioncount)\n *\n * @param args - {@link GetTransactionCountParameters}\n * @returns The number of transactions an account has sent. {@link GetTransactionCountReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const transactionCount = await client.getTransactionCount({\n * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n */\n getTransactionCount: (\n args: GetTransactionCountParameters,\n ) => Promise<GetTransactionCountReturnType>\n /**\n * Returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms#transaction-receipt) given a [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransactionReceipt\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_fetching-transactions\n * - JSON-RPC Methods: [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt)\n *\n * @param args - {@link GetTransactionReceiptParameters}\n * @returns The transaction receipt. {@link GetTransactionReceiptReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const transactionReceipt = await client.getTransactionReceipt({\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\n getTransactionReceipt: (\n args: GetTransactionReceiptParameters,\n ) => Promise<GetTransactionReceiptReturnType<chain>>\n /**\n * Similar to [`readContract`](https://viem.sh/docs/contract/readContract), but batches up multiple functions on a contract in a single RPC call via the [`multicall3` contract](https://github.com/mds1/multicall).\n *\n * - Docs: https://viem.sh/docs/contract/multicall\n *\n * @param args - {@link MulticallParameters}\n * @returns An array of results with accompanying status. {@link MulticallReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const abi = parseAbi([\n * 'function balanceOf(address) view returns (uint256)',\n * 'function totalSupply() view returns (uint256)',\n * ])\n * const result = await client.multicall({\n * contracts: [\n * {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi,\n * functionName: 'balanceOf',\n * args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],\n * },\n * {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi,\n * functionName: 'totalSupply',\n * },\n * ],\n * })\n * // [{ result: 424122n, status: 'success' }, { result: 1000000n, status: 'success' }]\n */\n multicall: <\n const contracts extends readonly unknown[],\n allowFailure extends boolean = true,\n >(\n args: MulticallParameters<contracts, allowFailure>,\n ) => Promise<MulticallReturnType<contracts, allowFailure>>\n /**\n * Prepares a transaction request for signing.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/prepareTransactionRequest\n *\n * @param args - {@link PrepareTransactionRequestParameters}\n * @returns The transaction request. {@link PrepareTransactionRequestReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const request = await client.prepareTransactionRequest({\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * to: '0x0000000000000000000000000000000000000000',\n * value: 1n,\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const request = await client.prepareTransactionRequest({\n * to: '0x0000000000000000000000000000000000000000',\n * value: 1n,\n * })\n */\n prepareTransactionRequest: <\n const request extends PrepareTransactionRequestRequest<\n chain,\n chainOverride\n >,\n chainOverride extends Chain | undefined = undefined,\n accountOverride extends Account | Address | undefined = undefined,\n >(\n args: PrepareTransactionRequestParameters<\n chain,\n account,\n chainOverride,\n accountOverride,\n request\n >,\n ) => Promise<\n PrepareTransactionRequestReturnType<\n chain,\n account,\n chainOverride,\n accountOverride,\n request\n >\n >\n /**\n * Calls a read-only function on a contract, and returns the response.\n *\n * - Docs: https://viem.sh/docs/contract/readContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts_reading-contracts\n *\n * @remarks\n * A \"read-only\" function (constant function) on a Solidity contract is denoted by a `view` or `pure` keyword. They can only read the state of the contract, and cannot make any changes to it. Since read-only methods do not change the state of the contract, they do not require any gas to be executed, and can be called by any user without the need to pay for gas.\n *\n * Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * @param args - {@link ReadContractParameters}\n * @returns The response from the contract. Type is inferred. {@link ReadContractReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { readContract } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const result = await client.readContract({\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function balanceOf(address) view returns (uint256)']),\n * functionName: 'balanceOf',\n * args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],\n * })\n * // 424122n\n */\n readContract: <\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName<abi, 'pure' | 'view'>,\n const args extends ContractFunctionArgs<abi, 'pure' | 'view', functionName>,\n >(\n args: ReadContractParameters<abi, functionName, args>,\n ) => Promise<ReadContractReturnType<abi, functionName, args>>\n /**\n * Sends a **signed** transaction to the network\n *\n * - Docs: https://viem.sh/docs/actions/wallet/sendRawTransaction\n * - JSON-RPC Method: [`eth_sendRawTransaction`](https://ethereum.github.io/execution-apis/api-documentation/)\n *\n * @param client - Client to use\n * @param parameters - {@link SendRawTransactionParameters}\n * @returns The transaction hash. {@link SendRawTransactionReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { sendRawTransaction } from 'viem/wallet'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n *\n * const hash = await client.sendRawTransaction({\n * serializedTransaction: '0x02f850018203118080825208808080c080a04012522854168b27e5dc3d5839bab5e6b39e1a0ffd343901ce1622e3d64b48f1a04e00902ae0502c4728cbf12156290df99c3ed7de85b1dbfe20b5c36931733a33'\n * })\n */\n sendRawTransaction: (\n args: SendRawTransactionParameters,\n ) => Promise<SendRawTransactionReturnType>\n /**\n * Simulates/validates a contract interaction. This is useful for retrieving **return data** and **revert reasons** of contract write functions.\n *\n * - Docs: https://viem.sh/docs/contract/simulateContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts_writing-to-contracts\n *\n * @remarks\n * This function does not require gas to execute and _**does not**_ change the state of the blockchain. It is almost identical to [`readContract`](https://viem.sh/docs/contract/readContract), but also supports contract write functions.\n *\n * Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * @param args - {@link SimulateContractParameters}\n * @returns The simulation result and write request. {@link SimulateContractReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const result = await client.simulateContract({\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function mint(uint32) view returns (uint32)']),\n * functionName: 'mint',\n * args: ['69420'],\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n */\n simulateContract: <\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName<abi, 'nonpayable' | 'payable'>,\n const args extends ContractFunctionArgs<\n abi,\n 'nonpayable' | 'payable',\n functionName\n >,\n chainOverride extends Chain | undefined,\n accountOverride extends Account | Address | undefined = undefined,\n >(\n args: SimulateContractParameters<\n abi,\n functionName,\n args,\n chain,\n chainOverride,\n accountOverride\n >,\n ) => Promise<\n SimulateContractReturnType<\n abi,\n functionName,\n args,\n chain,\n account,\n chainOverride,\n accountOverride\n >\n >\n /**\n * Verify that a message was signed by the provided address.\n *\n * Compatible with Smart Contract Accounts & Externally Owned Accounts via [ERC-6492](https://eips.ethereum.org/EIPS/eip-6492).\n *\n * - Docs {@link https://viem.sh/docs/actions/public/verifyMessage}\n *\n * @param parameters - {@link VerifyMessageParameters}\n * @returns Whether or not the signature is valid. {@link VerifyMessageReturnType}\n */\n verifyMessage: (\n args: VerifyMessageParameters,\n ) => Promise<VerifyMessageReturnType>\n /**\n * Verifies [EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) formatted message was signed.\n *\n * Compatible with Smart Contract Accounts & Externally Owned Accounts via [ERC-6492](https://eips.ethereum.org/EIPS/eip-6492).\n *\n * - Docs {@link https://viem.sh/docs/siwe/actions/verifySiweMessage}\n *\n * @param parameters - {@link VerifySiweMessageParameters}\n * @returns Whether or not the signature is valid. {@link VerifySiweMessageReturnType}\n */\n verifySiweMessage: (\n args: VerifySiweMessageParameters,\n ) => Promise<VerifySiweMessageReturnType>\n /**\n * Verify that typed data was signed by the provided address.\n *\n * - Docs {@link https://viem.sh/docs/actions/public/verifyTypedData}\n *\n * @param parameters - {@link VerifyTypedDataParameters}\n * @returns Whether or not the signature is valid. {@link VerifyTypedDataReturnType}\n */\n verifyTypedData: (\n args: VerifyTypedDataParameters,\n ) => Promise<VerifyTypedDataReturnType>\n /**\n * Destroys a Filter that was created from one of the following Actions:\n *\n * - [`createBlockFilter`](https://viem.sh/docs/actions/public/createBlockFilter)\n * - [`createEventFilter`](https://viem.sh/docs/actions/public/createEventFilter)\n * - [`createPendingTransactionFilter`](https://viem.sh/docs/actions/public/createPendingTransactionFilter)\n *\n * - Docs: https://viem.sh/docs/actions/public/uninstallFilter\n * - JSON-RPC Methods: [`eth_uninstallFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_uninstallFilter)\n *\n * @param args - {@link UninstallFilterParameters}\n * @returns A boolean indicating if the Filter was successfully uninstalled. {@link UninstallFilterReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createPendingTransactionFilter, uninstallFilter } from 'viem/public'\n *\n * const filter = await client.createPendingTransactionFilter()\n * const uninstalled = await client.uninstallFilter({ filter })\n * // true\n */\n uninstallFilter: (\n args: UninstallFilterParameters,\n ) => Promise<UninstallFilterReturnType>\n /**\n * Waits for the [Transaction](https://viem.sh/docs/glossary/terms#transaction) to be included on a [Block](https://viem.sh/docs/glossary/terms#block) (one confirmation), and then returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms#transaction-receipt). If the Transaction reverts, then the action will throw an error.\n *\n * - Docs: https://viem.sh/docs/actions/public/waitForTransactionReceipt\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_sending-transactions\n * - JSON-RPC Methods:\n * - Polls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt) on each block until it has been processed.\n * - If a Transaction has been replaced:\n * - Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) and extracts the transactions\n * - Checks if one of the Transactions is a replacement\n * - If so, calls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt).\n *\n * @remarks\n * The `waitForTransactionReceipt` action additionally supports Replacement detection (e.g. sped up Transactions).\n *\n * Transactions can be replaced when a user modifies their transaction in their wallet (to speed up or cancel). Transactions are replaced when they are sent from the same nonce.\n *\n * There are 3 types of Transaction Replacement reasons:\n *\n * - `repriced`: The gas price has been modified (e.g. different `maxFeePerGas`)\n * - `cancelled`: The Transaction has been cancelled (e.g. `value === 0n`)\n * - `replaced`: The Transaction has been replaced (e.g. different `value` or `data`)\n *\n * @param args - {@link WaitForTransactionReceiptParameters}\n * @returns The transaction receipt. {@link WaitForTransactionReceiptReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const transactionReceipt = await client.waitForTransactionReceipt({\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\n waitForTransactionReceipt: (\n args: WaitForTransactionReceiptParameters<chain>,\n ) => Promise<WaitForTransactionReceiptReturnType<chain>>\n /**\n * Watches and returns incoming block numbers.\n *\n * - Docs: https://viem.sh/docs/actions/public/watchBlockNumber\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks_watching-blocks\n * - JSON-RPC Methods:\n * - When `poll: true`, calls [`eth_blockNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber) on a polling interval.\n * - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `\"newHeads\"` event.\n *\n * @param args - {@link WatchBlockNumberParameters}\n * @returns A function that can be invoked to stop watching for new block numbers. {@link WatchBlockNumberReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = await client.watchBlockNumber({\n * onBlockNumber: (blockNumber) => console.log(blockNumber),\n * })\n */\n watchBlockNumber: (\n args: WatchBlockNumberParameters,\n ) => WatchBlockNumberReturnType\n /**\n * Watches and returns information for incoming blocks.\n *\n * - Docs: https://viem.sh/docs/actions/public/watchBlocks\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks_watching-blocks\n * - JSON-RPC Methods:\n * - When `poll: true`, calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getBlockByNumber) on a polling interval.\n * - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `\"newHeads\"` event.\n *\n * @param args - {@link WatchBlocksParameters}\n * @returns A function that can be invoked to stop watching for new block numbers. {@link WatchBlocksReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = await client.watchBlocks({\n * onBlock: (block) => console.log(block),\n * })\n */\n watchBlocks: <\n includeTransactions extends boolean = false,\n blockTag extends BlockTag = 'latest',\n >(\n args: WatchBlocksParameters<\n transport,\n chain,\n includeTransactions,\n blockTag\n >,\n ) => WatchBlocksReturnType\n /**\n * Watches and returns emitted contract event logs.\n *\n * - Docs: https://viem.sh/docs/contract/watchContractEvent\n *\n * @remarks\n * This Action will batch up all the event logs found within the [`pollingInterval`](https://viem.sh/docs/contract/watchContractEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/contract/watchContractEvent#onLogs).\n *\n * `watchContractEvent` will attempt to create an [Event Filter](https://viem.sh/docs/contract/createContractEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchContractEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead.\n *\n * @param args - {@link WatchContractEventParameters}\n * @returns A function that can be invoked to stop watching for new event logs. {@link WatchContractEventReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = client.watchContractEvent({\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['event Transfer(address indexed from, address indexed to, uint256 value)']),\n * eventName: 'Transfer',\n * args: { from: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b' },\n * onLogs: (logs) => console.log(logs),\n * })\n */\n watchContractEvent: <\n const abi extends Abi | readonly unknown[],\n eventName extends ContractEventName<abi>,\n strict extends boolean | undefined = undefined,\n >(\n args: WatchContractEventParameters<abi, eventName, strict, transport>,\n ) => WatchContractEventReturnType\n /**\n * Watches and returns emitted [Event Logs](https://viem.sh/docs/glossary/terms#event-log).\n *\n * - Docs: https://viem.sh/docs/actions/public/watchEvent\n * - JSON-RPC Methods:\n * - **RPC Provider supports `eth_newFilter`:**\n * - Calls [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter) to create a filter (called on initialize).\n * - On a polling interval, it will call [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges).\n * - **RPC Provider does not support `eth_newFilter`:**\n * - Calls [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs) for each block between the polling interval.\n *\n * @remarks\n * This Action will batch up all the Event Logs found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/actions/public/watchEvent#onLogs).\n *\n * `watchEvent` will attempt to create an [Event Filter](https://viem.sh/docs/actions/public/createEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead.\n *\n * @param args - {@link WatchEventParameters}\n * @returns A function that can be invoked to stop watching for new Event Logs. {@link WatchEventReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = client.watchEvent({\n * onLogs: (logs) => console.log(logs),\n * })\n */\n watchEvent: <\n const abiEvent extends AbiEvent | undefined = undefined,\n const abiEvents extends\n | readonly AbiEvent[]\n | readonly unknown[]\n | undefined = abiEvent extends AbiEvent ? [abiEvent] : undefined,\n strict extends boolean | undefined = undefined,\n >(\n args: WatchEventParameters<abiEvent, abiEvents, strict, transport>,\n ) => WatchEventReturnType\n /**\n * Watches and returns pending transaction hashes.\n *\n * - Docs: https://viem.sh/docs/actions/public/watchPendingTransactions\n * - JSON-RPC Methods:\n * - When `poll: true`\n * - Calls [`eth_newPendingTransactionFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter) to initialize the filter.\n * - Calls [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getFilterChanges) on a polling interval.\n * - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `\"newPendingTransactions\"` event.\n *\n * @remarks\n * This Action will batch up all the pending transactions found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchPendingTransactions#pollinginterval-optional), and invoke them via [`onTransactions`](https://viem.sh/docs/actions/public/watchPendingTransactions#ontransactions).\n *\n * @param args - {@link WatchPendingTransactionsParameters}\n * @returns A function that can be invoked to stop watching for new pending transaction hashes. {@link WatchPendingTransactionsReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = await client.watchPendingTransactions({\n * onTransactions: (hashes) => console.log(hashes),\n * })\n */\n watchPendingTransactions: (\n args: WatchPendingTransactionsParameters<transport>,\n ) => WatchPendingTransactionsReturnType\n}\n\nexport function publicActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n>(\n client: Client<transport, chain, account>,\n): PublicActions<transport, chain, account> {\n return {\n call: (args) => call(client, args),\n createBlockFilter: () => createBlockFilter(client),\n createContractEventFilter: (args) =>\n createContractEventFilter(client, args),\n createEventFilter: (args) => createEventFilter(client, args),\n createPendingTransactionFilter: () =>\n createPendingTransactionFilter(client),\n estimateContractGas: (args) => estimateContractGas(client, args as any),\n estimateGas: (args) => estimateGas(client, args),\n getBalance: (args) => getBalance(client, args),\n getBlobBaseFee: () => getBlobBaseFee(client),\n getBlock: (args) => getBlock(client, args),\n getBlockNumber: (args) => getBlockNumber(client, args),\n getBlockTransactionCount: (args) => getBlockTransactionCount(client, args),\n getBytecode: (args) => getCode(client, args),\n getChainId: () => getChainId(client),\n getCode: (args) => getCode(client, args),\n getContractEvents: (args) => getContractEvents(client, args),\n getEip712Domain: (args) => getEip712Domain(client, args),\n getEnsAddress: (args) => getEnsAddress(client, args),\n getEnsAvatar: (args) => getEnsAvatar(client, args),\n getEnsName: (args) => getEnsName(client, args),\n getEnsResolver: (args) => getEnsResolver(client, args),\n getEnsText: (args) => getEnsText(client, args),\n getFeeHistory: (args) => getFeeHistory(client, args),\n estimateFeesPerGas: (args) => estimateFeesPerGas(client, args),\n getFilterChanges: (args) => getFilterChanges(client, args),\n getFilterLogs: (args) => getFilterLogs(client, args),\n getGasPrice: () => getGasPrice(client),\n getLogs: (args) => getLogs(client, args as any),\n getProof: (args) => getProof(client, args),\n estimateMaxPriorityFeePerGas: (args) =>\n estimateMaxPriorityFeePerGas(client, args),\n getStorageAt: (args) => getStorageAt(client, args),\n getTransaction: (args) => getTransaction(client, args),\n getTransactionConfirmations: (args) =>\n getTransactionConfirmations(client, args),\n getTransactionCount: (args) => getTransactionCount(client, args),\n getTransactionReceipt: (args) => getTransactionReceipt(client, args),\n multicall: (args) => multicall(client, args),\n prepareTransactionRequest: (args) =>\n prepareTransactionRequest(client as any, args as any) as any,\n readContract: (args) => readContract(client, args),\n sendRawTransaction: (args) => sendRawTransaction(client, args),\n simulateContract: (args) => simulateContract(client, args),\n verifyMessage: (args) => verifyMessage(client, args),\n verifySiweMessage: (args) => verifySiweMessage(client, args),\n verifyTypedData: (args) => verifyTypedData(client, args),\n uninstallFilter: (args) => uninstallFilter(client, args),\n waitForTransactionReceipt: (args) =>\n waitForTransactionReceipt(client, args),\n watchBlocks: (args) => watchBlocks(client, args),\n watchBlockNumber: (args) => watchBlockNumber(client, args),\n watchContractEvent: (args) => watchContractEvent(client, args),\n watchEvent: (args) => watchEvent(client, args),\n watchPendingTransactions: (args) => watchPendingTransactions(client, args),\n }\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Filter } from '../../types/filter.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js'\n\nexport type CreateBlockFilterReturnType = Filter<'block'>\n\nexport type CreateBlockFilterErrorType = RequestErrorType | ErrorType\n\n/**\n * Creates a [`Filter`](https://viem.sh/docs/glossary/types#filter) to listen for new block hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).\n *\n * - Docs: https://viem.sh/docs/actions/public/createBlockFilter\n * - JSON-RPC Methods: [`eth_newBlockFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newBlockFilter)\n *\n * @param client - Client to use\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateBlockFilterReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createBlockFilter } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createBlockFilter(client)\n * // { id: \"0x345a6572337856574a76364e457a4366\", type: 'block' }\n */\nexport async function createBlockFilter<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n): Promise<CreateBlockFilterReturnType> {\n const getRequest = createFilterRequestScope(client, {\n method: 'eth_newBlockFilter',\n })\n const id = await client.request({\n method: 'eth_newBlockFilter',\n })\n return { id, request: getRequest(id), type: 'block' }\n}\n","import type { Abi } from 'abitype'\n\nimport type { Account } from '../../accounts/types.js'\nimport {\n type ParseAccountErrorType,\n parseAccount,\n} from '../../accounts/utils/parseAccount.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { BaseError } from '../../errors/base.js'\nimport type { Chain } from '../../types/chain.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n ContractFunctionParameters,\n GetValue,\n} from '../../types/contract.js'\nimport type { UnionOmit } from '../../types/utils.js'\nimport {\n type EncodeFunctionDataErrorType,\n type EncodeFunctionDataParameters,\n encodeFunctionData,\n} from '../../utils/abi/encodeFunctionData.js'\nimport {\n type GetContractErrorReturnType,\n getContractError,\n} from '../../utils/errors/getContractError.js'\nimport { getAction } from '../../utils/getAction.js'\nimport {\n type EstimateGasErrorType,\n type EstimateGasParameters,\n estimateGas,\n} from './estimateGas.js'\n\nexport type EstimateContractGasParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends ContractFunctionName<\n abi,\n 'nonpayable' | 'payable'\n > = ContractFunctionName<abi, 'nonpayable' | 'payable'>,\n args extends ContractFunctionArgs<\n abi,\n 'nonpayable' | 'payable',\n functionName\n > = ContractFunctionArgs<abi, 'nonpayable' | 'payable', functionName>,\n chain extends Chain | undefined = Chain | undefined,\n> = ContractFunctionParameters<\n abi,\n 'nonpayable' | 'payable',\n functionName,\n args\n> &\n UnionOmit<EstimateGasParameters<chain>, 'data' | 'to' | 'value'> &\n GetValue<\n abi,\n functionName,\n EstimateGasParameters<chain> extends EstimateGasParameters\n ? EstimateGasParameters<chain>['value']\n : EstimateGasParameters['value']\n >\n\nexport type EstimateContractGasReturnType = bigint\n\nexport type EstimateContractGasErrorType = GetContractErrorReturnType<\n EncodeFunctionDataErrorType | EstimateGasErrorType | ParseAccountErrorType\n>\n\n/**\n * Estimates the gas required to successfully execute a contract write function call.\n *\n * - Docs: https://viem.sh/docs/contract/estimateContractGas\n *\n * Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`estimateGas` action](https://viem.sh/docs/actions/public/estimateGas) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * @param client - Client to use\n * @param parameters - {@link EstimateContractGasParameters}\n * @returns The gas estimate (in wei). {@link EstimateContractGasReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { estimateContractGas } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const gas = await estimateContractGas(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function mint() public']),\n * functionName: 'mint',\n * account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',\n * })\n */\nexport async function estimateContractGas<\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName<abi, 'nonpayable' | 'payable'>,\n args extends ContractFunctionArgs<abi, 'pure' | 'view', functionName>,\n chain extends Chain | undefined,\n account extends Account | undefined = undefined,\n>(\n client: Client<Transport, chain, account>,\n parameters: EstimateContractGasParameters<abi, functionName, args, chain>,\n): Promise<EstimateContractGasReturnType> {\n const { abi, address, args, functionName, ...request } =\n parameters as EstimateContractGasParameters\n const data = encodeFunctionData({\n abi,\n args,\n functionName,\n } as EncodeFunctionDataParameters)\n try {\n const gas = await getAction(\n client,\n estimateGas,\n 'estimateGas',\n )({\n data,\n to: address,\n ...request,\n } as unknown as EstimateGasParameters)\n return gas\n } catch (error) {\n const account = request.account ? parseAccount(request.account) : undefined\n throw getContractError(error as BaseError, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/estimateContractGas',\n functionName,\n sender: account?.address,\n })\n }\n}\n","import type { Account } from '../../accounts/types.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\n\nexport type GetBlobBaseFeeReturnType = bigint\n\nexport type GetBlobBaseFeeErrorType = RequestErrorType | ErrorType\n\n/**\n * Returns the base fee per blob gas in wei.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBlobBaseFee\n * - JSON-RPC Methods: [`eth_blobBaseFee`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blobBaseFee)\n *\n * @param client - Client to use\n * @returns The blob base fee (in wei). {@link GetBlobBaseFeeReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBlobBaseFee } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const blobBaseFee = await getBlobBaseFee(client)\n */\nexport async function getBlobBaseFee<\n chain extends Chain | undefined,\n account extends Account | undefined,\n>(\n client: Client<Transport, chain, account>,\n): Promise<GetBlobBaseFeeReturnType> {\n const baseFee = await client.request({\n method: 'eth_blobBaseFee',\n })\n return BigInt(baseFee)\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Hash } from '../../types/misc.js'\nimport type { Quantity } from '../../types/rpc.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type HexToNumberErrorType,\n hexToNumber,\n} from '../../utils/encoding/fromHex.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\n\nexport type GetBlockTransactionCountParameters =\n | {\n /** Hash of the block. */\n blockHash?: Hash | undefined\n blockNumber?: undefined\n blockTag?: undefined\n }\n | {\n blockHash?: undefined\n /** The block number. */\n blockNumber?: bigint | undefined\n blockTag?: undefined\n }\n | {\n blockHash?: undefined\n blockNumber?: undefined\n /** The block tag. Defaults to 'latest'. */\n blockTag?: BlockTag | undefined\n }\n\nexport type GetBlockTransactionCountReturnType = number\n\nexport type GetBlockTransactionCountErrorType =\n | NumberToHexErrorType\n | HexToNumberErrorType\n | RequestErrorType\n | ErrorType\n\n/**\n * Returns the number of Transactions at a block number, hash, or tag.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBlockTransactionCount\n * - JSON-RPC Methods:\n * - Calls [`eth_getBlockTransactionCountByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbynumber) for `blockNumber` & `blockTag`.\n * - Calls [`eth_getBlockTransactionCountByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbyhash) for `blockHash`.\n *\n * @param client - Client to use\n * @param parameters - {@link GetBlockTransactionCountParameters}\n * @returns The block transaction count. {@link GetBlockTransactionCountReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBlockTransactionCount } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const count = await getBlockTransactionCount(client)\n */\nexport async function getBlockTransactionCount<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n {\n blockHash,\n blockNumber,\n blockTag = 'latest',\n }: GetBlockTransactionCountParameters = {},\n): Promise<GetBlockTransactionCountReturnType> {\n const blockNumberHex =\n blockNumber !== undefined ? numberToHex(blockNumber) : undefined\n\n let count: Quantity\n if (blockHash) {\n count = await client.request(\n {\n method: 'eth_getBlockTransactionCountByHash',\n params: [blockHash],\n },\n { dedupe: true },\n )\n } else {\n count = await client.request(\n {\n method: 'eth_getBlockTransactionCountByNumber',\n params: [blockNumberHex || blockTag],\n },\n { dedupe: Boolean(blockNumberHex) },\n )\n }\n\n return hexToNumber(count)\n}\n","import type { Address } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport {\n addressResolverAbi,\n universalResolverResolveAbi,\n} from '../../constants/abis.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Prettify } from '../../types/utils.js'\nimport {\n type DecodeFunctionResultErrorType,\n decodeFunctionResult,\n} from '../../utils/abi/decodeFunctionResult.js'\nimport {\n type EncodeFunctionDataErrorType,\n encodeFunctionData,\n} from '../../utils/abi/encodeFunctionData.js'\nimport {\n type GetChainContractAddressErrorType,\n getChainContractAddress,\n} from '../../utils/chain/getChainContractAddress.js'\nimport { type TrimErrorType, trim } from '../../utils/data/trim.js'\nimport { type ToHexErrorType, toHex } from '../../utils/encoding/toHex.js'\nimport { isNullUniversalResolverError } from '../../utils/ens/errors.js'\nimport { type NamehashErrorType, namehash } from '../../utils/ens/namehash.js'\nimport {\n type PacketToBytesErrorType,\n packetToBytes,\n} from '../../utils/ens/packetToBytes.js'\nimport { getAction } from '../../utils/getAction.js'\nimport {\n type ReadContractParameters,\n readContract,\n} from '../public/readContract.js'\n\nexport type GetEnsAddressParameters = Prettify<\n Pick<ReadContractParameters, 'blockNumber' | 'blockTag'> & {\n /** ENSIP-9 compliant coinType used to resolve addresses for other chains */\n coinType?: number | undefined\n /** Universal Resolver gateway URLs to use for resolving CCIP-read requests. */\n gatewayUrls?: string[] | undefined\n /** Name to get the address for. */\n name: string\n /** Whether or not to throw errors propagated from the ENS Universal Resolver Contract. */\n strict?: boolean | undefined\n /** Address of ENS Universal Resolver Contract. */\n universalResolverAddress?: Address | undefined\n }\n>\n\nexport type GetEnsAddressReturnType = Address | null\n\nexport type GetEnsAddressErrorType =\n | GetChainContractAddressErrorType\n | EncodeFunctionDataErrorType\n | NamehashErrorType\n | ToHexErrorType\n | PacketToBytesErrorType\n | DecodeFunctionResultErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Gets address for ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsAddress\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsAddressParameters}\n * @returns Address for ENS name or `null` if not found. {@link GetEnsAddressReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsAddress, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const ensAddress = await getEnsAddress(client, {\n * name: normalize('wevm.eth'),\n * })\n * // '0xd2135CfB216b74109775236E36d4b433F1DF507B'\n */\nexport async function getEnsAddress<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n {\n blockNumber,\n blockTag,\n coinType,\n name,\n gatewayUrls,\n strict,\n universalResolverAddress: universalResolverAddress_,\n }: GetEnsAddressParameters,\n): Promise<GetEnsAddressReturnType> {\n let universalResolverAddress = universalResolverAddress_\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error(\n 'client chain not configured. universalResolverAddress is required.',\n )\n\n universalResolverAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'ensUniversalResolver',\n })\n }\n\n try {\n const functionData = encodeFunctionData({\n abi: addressResolverAbi,\n functionName: 'addr',\n ...(coinType != null\n ? { args: [namehash(name), BigInt(coinType)] }\n : { args: [namehash(name)] }),\n })\n\n const readContractParameters = {\n address: universalResolverAddress,\n abi: universalResolverResolveAbi,\n functionName: 'resolve',\n args: [toHex(packetToBytes(name)), functionData],\n blockNumber,\n blockTag,\n } as const\n\n const readContractAction = getAction(client, readContract, 'readContract')\n\n const res = gatewayUrls\n ? await readContractAction({\n ...readContractParameters,\n args: [...readContractParameters.args, gatewayUrls],\n })\n : await readContractAction(readContractParameters)\n\n if (res[0] === '0x') return null\n\n const address = decodeFunctionResult({\n abi: addressResolverAbi,\n args: coinType != null ? [namehash(name), BigInt(coinType)] : undefined,\n functionName: 'addr',\n data: res[0],\n })\n\n if (address === '0x') return null\n if (trim(address) === '0x00') return null\n return address\n } catch (err) {\n if (strict) throw err\n if (isNullUniversalResolverError(err, 'resolve')) return null\n throw err\n }\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { AssetGatewayUrls } from '../../types/ens.js'\nimport type { Prettify } from '../../types/utils.js'\nimport {\n type ParseAvatarRecordErrorType,\n parseAvatarRecord,\n} from '../../utils/ens/avatar/parseAvatarRecord.js'\nimport { getAction } from '../../utils/getAction.js'\n\nimport {\n type GetEnsTextErrorType,\n type GetEnsTextParameters,\n getEnsText,\n} from './getEnsText.js'\n\nexport type GetEnsAvatarParameters = Prettify<\n Omit<GetEnsTextParameters, 'key'> & {\n /** Gateway urls to resolve IPFS and/or Arweave assets. */\n assetGatewayUrls?: AssetGatewayUrls | undefined\n }\n>\n\nexport type GetEnsAvatarReturnType = string | null\n\nexport type GetEnsAvatarErrorType =\n | GetEnsTextErrorType\n | ParseAvatarRecordErrorType\n | ErrorType\n\n/**\n * Gets the avatar of an ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsAvatar\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls [`getEnsText`](https://viem.sh/docs/ens/actions/getEnsText) with `key` set to `'avatar'`.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsAvatarParameters}\n * @returns Avatar URI or `null` if not found. {@link GetEnsAvatarReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsAvatar, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const ensAvatar = await getEnsAvatar(client, {\n * name: normalize('wevm.eth'),\n * })\n * // 'https://ipfs.io/ipfs/Qma8mnp6xV3J2cRNf3mTth5C8nV11CAnceVinc3y8jSbio'\n */\nexport async function getEnsAvatar<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n {\n blockNumber,\n blockTag,\n assetGatewayUrls,\n name,\n gatewayUrls,\n strict,\n universalResolverAddress,\n }: GetEnsAvatarParameters,\n): Promise<GetEnsAvatarReturnType> {\n const record = await getAction(\n client,\n getEnsText,\n 'getEnsText',\n )({\n blockNumber,\n blockTag,\n key: 'avatar',\n name,\n universalResolverAddress,\n gatewayUrls,\n strict,\n })\n if (!record) return null\n try {\n return await parseAvatarRecord(client, {\n record,\n gatewayUrls: assetGatewayUrls,\n })\n } catch {\n return null\n }\n}\n","import type { Address } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport { universalResolverReverseAbi } from '../../constants/abis.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Prettify } from '../../types/utils.js'\nimport {\n type GetChainContractAddressErrorType,\n getChainContractAddress,\n} from '../../utils/chain/getChainContractAddress.js'\nimport { type ToHexErrorType, toHex } from '../../utils/encoding/toHex.js'\nimport { isNullUniversalResolverError } from '../../utils/ens/errors.js'\nimport {\n type PacketToBytesErrorType,\n packetToBytes,\n} from '../../utils/ens/packetToBytes.js'\nimport { getAction } from '../../utils/getAction.js'\nimport {\n type ReadContractErrorType,\n type ReadContractParameters,\n readContract,\n} from '../public/readContract.js'\n\nexport type GetEnsNameParameters = Prettify<\n Pick<ReadContractParameters, 'blockNumber' | 'blockTag'> & {\n /** Address to get ENS name for. */\n address: Address\n /** Universal Resolver gateway URLs to use for resolving CCIP-read requests. */\n gatewayUrls?: string[] | undefined\n /** Whether or not to throw errors propagated from the ENS Universal Resolver Contract. */\n strict?: boolean | undefined\n /** Address of ENS Universal Resolver Contract. */\n universalResolverAddress?: Address | undefined\n }\n>\n\nexport type GetEnsNameReturnType = string | null\n\nexport type GetEnsNameErrorType =\n | GetChainContractAddressErrorType\n | ReadContractErrorType\n | ToHexErrorType\n | PacketToBytesErrorType\n | ErrorType\n\n/**\n * Gets primary name for specified address.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsName\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `reverse(bytes)` on ENS Universal Resolver Contract to \"reverse resolve\" the address to the primary ENS name.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsNameParameters}\n * @returns Name or `null` if not found. {@link GetEnsNameReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsName } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const ensName = await getEnsName(client, {\n * address: '0xd2135CfB216b74109775236E36d4b433F1DF507B',\n * })\n * // 'wevm.eth'\n */\nexport async function getEnsName<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n {\n address,\n blockNumber,\n blockTag,\n gatewayUrls,\n strict,\n universalResolverAddress: universalResolverAddress_,\n }: GetEnsNameParameters,\n): Promise<GetEnsNameReturnType> {\n let universalResolverAddress = universalResolverAddress_\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error(\n 'client chain not configured. universalResolverAddress is required.',\n )\n\n universalResolverAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'ensUniversalResolver',\n })\n }\n\n const reverseNode = `${address.toLowerCase().substring(2)}.addr.reverse`\n try {\n const readContractParameters = {\n address: universalResolverAddress,\n abi: universalResolverReverseAbi,\n functionName: 'reverse',\n args: [toHex(packetToBytes(reverseNode))],\n blockNumber,\n blockTag,\n } as const\n\n const readContractAction = getAction(client, readContract, 'readContract')\n\n const [name, resolvedAddress] = gatewayUrls\n ? await readContractAction({\n ...readContractParameters,\n args: [...readContractParameters.args, gatewayUrls],\n })\n : await readContractAction(readContractParameters)\n\n if (address.toLowerCase() !== resolvedAddress.toLowerCase()) return null\n return name\n } catch (err) {\n if (strict) throw err\n if (isNullUniversalResolverError(err, 'reverse')) return null\n throw err\n }\n}\n","import type { Address } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Prettify } from '../../types/utils.js'\nimport {\n type GetChainContractAddressErrorType,\n getChainContractAddress,\n} from '../../utils/chain/getChainContractAddress.js'\nimport { type ToHexErrorType, toHex } from '../../utils/encoding/toHex.js'\nimport {\n type PacketToBytesErrorType,\n packetToBytes,\n} from '../../utils/ens/packetToBytes.js'\nimport { getAction } from '../../utils/getAction.js'\nimport {\n type ReadContractParameters,\n readContract,\n} from '../public/readContract.js'\n\nexport type GetEnsResolverParameters = Prettify<\n Pick<ReadContractParameters, 'blockNumber' | 'blockTag'> & {\n /** Name to get the address for. */\n name: string\n /** Address of ENS Universal Resolver Contract. */\n universalResolverAddress?: Address | undefined\n }\n>\n\nexport type GetEnsResolverReturnType = Address\n\nexport type GetEnsResolverErrorType =\n | GetChainContractAddressErrorType\n | ToHexErrorType\n | PacketToBytesErrorType\n | ErrorType\n\n/**\n * Gets resolver for ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsResolver\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `findResolver(bytes)` on ENS Universal Resolver Contract to retrieve the resolver of an ENS name.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsResolverParameters}\n * @returns Address for ENS resolver. {@link GetEnsResolverReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsResolver, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const resolverAddress = await getEnsResolver(client, {\n * name: normalize('wevm.eth'),\n * })\n * // '0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41'\n */\nexport async function getEnsResolver<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n {\n blockNumber,\n blockTag,\n name,\n universalResolverAddress: universalResolverAddress_,\n }: GetEnsResolverParameters,\n) {\n let universalResolverAddress = universalResolverAddress_\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error(\n 'client chain not configured. universalResolverAddress is required.',\n )\n\n universalResolverAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'ensUniversalResolver',\n })\n }\n\n const [resolverAddress] = await getAction(\n client,\n readContract,\n 'readContract',\n )({\n address: universalResolverAddress,\n abi: [\n {\n inputs: [{ type: 'bytes' }],\n name: 'findResolver',\n outputs: [{ type: 'address' }, { type: 'bytes32' }],\n stateMutability: 'view',\n type: 'function',\n },\n ],\n functionName: 'findResolver',\n args: [toHex(packetToBytes(name))],\n blockNumber,\n blockTag,\n })\n return resolverAddress\n}\n","import type { Abi, AbiEvent, ExtractAbiEvent } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockNumber, BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Filter } from '../../types/filter.js'\nimport type { Log } from '../../types/log.js'\nimport type { DecodeEventLogErrorType } from '../../utils/abi/decodeEventLog.js'\nimport { parseEventLogs } from '../../utils/abi/parseEventLogs.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type FormatLogErrorType,\n formatLog,\n} from '../../utils/formatters/log.js'\n\nexport type GetFilterLogsParameters<\n abi extends Abi | readonly unknown[] | undefined = undefined,\n eventName extends string | undefined = undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n> = {\n filter: Filter<'event', abi, eventName, any, strict, fromBlock, toBlock>\n}\nexport type GetFilterLogsReturnType<\n abi extends Abi | readonly unknown[] | undefined = undefined,\n eventName extends string | undefined = undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n _AbiEvent extends AbiEvent | undefined = abi extends Abi\n ? eventName extends string\n ? ExtractAbiEvent<abi, eventName>\n : undefined\n : undefined,\n _Pending extends boolean =\n | (fromBlock extends 'pending' ? true : false)\n | (toBlock extends 'pending' ? true : false),\n> = Log<bigint, number, _Pending, _AbiEvent, strict, abi, eventName>[]\n\nexport type GetFilterLogsErrorType =\n | RequestErrorType\n | DecodeEventLogErrorType\n | FormatLogErrorType\n | ErrorType\n\n/**\n * Returns a list of event logs since the filter was created.\n *\n * - Docs: https://viem.sh/docs/actions/public/getFilterLogs\n * - JSON-RPC Methods: [`eth_getFilterLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterlogs)\n *\n * `getFilterLogs` is only compatible with **event filters**.\n *\n * @param client - Client to use\n * @param parameters - {@link GetFilterLogsParameters}\n * @returns A list of event logs. {@link GetFilterLogsReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbiItem } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createEventFilter, getFilterLogs } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createEventFilter(client, {\n * address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n * event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'),\n * })\n * const logs = await getFilterLogs(client, { filter })\n */\nexport async function getFilterLogs<\n chain extends Chain | undefined,\n const abi extends Abi | readonly unknown[] | undefined,\n eventName extends string | undefined,\n strict extends boolean | undefined = undefined,\n fromBlock extends BlockNumber | BlockTag | undefined = undefined,\n toBlock extends BlockNumber | BlockTag | undefined = undefined,\n>(\n _client: Client<Transport, chain>,\n {\n filter,\n }: GetFilterLogsParameters<abi, eventName, strict, fromBlock, toBlock>,\n): Promise<\n GetFilterLogsReturnType<abi, eventName, strict, fromBlock, toBlock>\n> {\n const strict = filter.strict ?? false\n\n const logs = await filter.request({\n method: 'eth_getFilterLogs',\n params: [filter.id],\n })\n\n const formattedLogs = logs.map((log) => formatLog(log))\n if (!filter.abi)\n return formattedLogs as GetFilterLogsReturnType<\n abi,\n eventName,\n strict,\n fromBlock,\n toBlock\n >\n return parseEventLogs({\n abi: filter.abi,\n logs: formattedLogs,\n strict,\n }) as unknown as GetFilterLogsReturnType<\n abi,\n eventName,\n strict,\n fromBlock,\n toBlock\n >\n}\n","import type { Address } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { RequestErrorType } from '../../utils/buildRequest.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../utils/encoding/toHex.js'\n\nexport type GetStorageAtParameters = {\n address: Address\n slot: Hex\n} & (\n | {\n blockNumber?: undefined\n blockTag?: BlockTag | undefined\n }\n | {\n blockNumber?: bigint | undefined\n blockTag?: undefined\n }\n)\n\nexport type GetStorageAtReturnType = Hex | undefined\n\nexport type GetStorageAtErrorType =\n | NumberToHexErrorType\n | RequestErrorType\n | ErrorType\n\n/**\n * Returns the value from a storage slot at a given address.\n *\n * - Docs: https://viem.sh/docs/contract/getStorageAt\n * - JSON-RPC Methods: [`eth_getStorageAt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getstorageat)\n *\n * @param client - Client to use\n * @param parameters - {@link GetStorageAtParameters}\n * @returns The value of the storage slot. {@link GetStorageAtReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getStorageAt } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const code = await getStorageAt(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * slot: toHex(0),\n * })\n */\nexport async function getStorageAt<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n { address, blockNumber, blockTag = 'latest', slot }: GetStorageAtParameters,\n): Promise<GetStorageAtReturnType> {\n const blockNumberHex =\n blockNumber !== undefined ? numberToHex(blockNumber) : undefined\n const data = await client.request({\n method: 'eth_getStorageAt',\n params: [address, slot, blockNumberHex || blockTag],\n })\n return data\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Hash } from '../../types/misc.js'\nimport type { FormattedTransactionReceipt } from '../../utils/formatters/transactionReceipt.js'\nimport { getAction } from '../../utils/getAction.js'\n\nimport {\n type GetBlockNumberErrorType,\n getBlockNumber,\n} from './getBlockNumber.js'\nimport {\n type GetTransactionErrorType,\n getTransaction,\n} from './getTransaction.js'\n\nexport type GetTransactionConfirmationsParameters<\n chain extends Chain | undefined = Chain,\n> =\n | {\n /** The transaction hash. */\n hash: Hash\n transactionReceipt?: undefined\n }\n | {\n hash?: undefined\n /** The transaction receipt. */\n transactionReceipt: FormattedTransactionReceipt<chain>\n }\n\nexport type GetTransactionConfirmationsReturnType = bigint\n\nexport type GetTransactionConfirmationsErrorType =\n | GetBlockNumberErrorType\n | GetTransactionErrorType\n | ErrorType\n\n/**\n * Returns the number of blocks passed (confirmations) since the transaction was processed on a block.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransactionConfirmations\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_fetching-transactions\n * - JSON-RPC Methods: [`eth_getTransactionConfirmations`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionConfirmations)\n *\n * @param client - Client to use\n * @param parameters - {@link GetTransactionConfirmationsParameters}\n * @returns The number of blocks passed since the transaction was processed. If confirmations is 0, then the Transaction has not been confirmed & processed yet. {@link GetTransactionConfirmationsReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getTransactionConfirmations } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const confirmations = await getTransactionConfirmations(client, {\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\nexport async function getTransactionConfirmations<\n chain extends Chain | undefined,\n>(\n client: Client<Transport, chain>,\n { hash, transactionReceipt }: GetTransactionConfirmationsParameters<chain>,\n): Promise<GetTransactionConfirmationsReturnType> {\n const [blockNumber, transaction] = await Promise.all([\n getAction(client, getBlockNumber, 'getBlockNumber')({}),\n hash\n ? getAction(client, getTransaction, 'getTransaction')({ hash })\n : undefined,\n ])\n const transactionBlockNumber =\n transactionReceipt?.blockNumber || transaction?.blockNumber\n if (!transactionBlockNumber) return 0n\n return blockNumber - transactionBlockNumber! + 1n\n}\n","import type { AbiStateMutability, Address, Narrow } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport { multicall3Abi } from '../../constants/abis.js'\nimport { AbiDecodingZeroDataError } from '../../errors/abi.js'\nimport { BaseError } from '../../errors/base.js'\nimport { RawContractError } from '../../errors/contract.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { ContractFunctionParameters } from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type {\n MulticallContracts,\n MulticallResults,\n} from '../../types/multicall.js'\nimport {\n type DecodeFunctionResultErrorType,\n decodeFunctionResult,\n} from '../../utils/abi/decodeFunctionResult.js'\nimport {\n type EncodeFunctionDataErrorType,\n encodeFunctionData,\n} from '../../utils/abi/encodeFunctionData.js'\nimport {\n type GetChainContractAddressErrorType,\n getChainContractAddress,\n} from '../../utils/chain/getChainContractAddress.js'\nimport {\n type GetContractErrorReturnType,\n getContractError,\n} from '../../utils/errors/getContractError.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport { getAction } from '../../utils/getAction.js'\nimport type { CallParameters } from './call.js'\nimport { type ReadContractErrorType, readContract } from './readContract.js'\n\nexport type MulticallParameters<\n contracts extends readonly unknown[] = readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n options extends {\n optional?: boolean\n properties?: Record<string, any>\n } = {},\n> = Pick<CallParameters, 'blockNumber' | 'blockTag' | 'stateOverride'> & {\n allowFailure?: allowFailure | boolean | undefined\n batchSize?: number | undefined\n contracts: MulticallContracts<\n Narrow<contracts>,\n { mutability: AbiStateMutability } & options\n >\n multicallAddress?: Address | undefined\n}\n\nexport type MulticallReturnType<\n contracts extends readonly unknown[] = readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n options extends {\n error?: Error\n } = { error: Error },\n> = MulticallResults<\n Narrow<contracts>,\n allowFailure,\n { mutability: AbiStateMutability } & options\n>\n\nexport type MulticallErrorType =\n | GetChainContractAddressErrorType\n | ReadContractErrorType\n | GetContractErrorReturnType<\n EncodeFunctionDataErrorType | DecodeFunctionResultErrorType\n >\n | ErrorType\n\n/**\n * Similar to [`readContract`](https://viem.sh/docs/contract/readContract), but batches up multiple functions on a contract in a single RPC call via the [`multicall3` contract](https://github.com/mds1/multicall).\n *\n * - Docs: https://viem.sh/docs/contract/multicall\n *\n * @param client - Client to use\n * @param parameters - {@link MulticallParameters}\n * @returns An array of results with accompanying status. {@link MulticallReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { multicall } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const abi = parseAbi([\n * 'function balanceOf(address) view returns (uint256)',\n * 'function totalSupply() view returns (uint256)',\n * ])\n * const results = await multicall(client, {\n * contracts: [\n * {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi,\n * functionName: 'balanceOf',\n * args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],\n * },\n * {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi,\n * functionName: 'totalSupply',\n * },\n * ],\n * })\n * // [{ result: 424122n, status: 'success' }, { result: 1000000n, status: 'success' }]\n */\nexport async function multicall<\n const contracts extends readonly unknown[],\n chain extends Chain | undefined,\n allowFailure extends boolean = true,\n>(\n client: Client<Transport, chain>,\n parameters: MulticallParameters<contracts, allowFailure>,\n): Promise<MulticallReturnType<contracts, allowFailure>> {\n const {\n allowFailure = true,\n batchSize: batchSize_,\n blockNumber,\n blockTag,\n multicallAddress: multicallAddress_,\n stateOverride,\n } = parameters\n const contracts = parameters.contracts as ContractFunctionParameters[]\n\n const batchSize =\n batchSize_ ??\n ((typeof client.batch?.multicall === 'object' &&\n client.batch.multicall.batchSize) ||\n 1_024)\n\n let multicallAddress = multicallAddress_\n if (!multicallAddress) {\n if (!client.chain)\n throw new Error(\n 'client chain not configured. multicallAddress is required.',\n )\n\n multicallAddress = getChainContractAddress({\n blockNumber,\n chain: client.chain,\n contract: 'multicall3',\n })\n }\n\n type Aggregate3Calls = {\n allowFailure: boolean\n callData: Hex\n target: Address\n }[]\n\n const chunkedCalls: Aggregate3Calls[] = [[]]\n let currentChunk = 0\n let currentChunkSize = 0\n for (let i = 0; i < contracts.length; i++) {\n const { abi, address, args, functionName } = contracts[i]\n try {\n const callData = encodeFunctionData({ abi, args, functionName })\n\n currentChunkSize += (callData.length - 2) / 2\n // Check to see if we need to create a new chunk.\n if (\n // Check if batching is enabled.\n batchSize > 0 &&\n // Check if the current size of the batch exceeds the size limit.\n currentChunkSize > batchSize &&\n // Check if the current chunk is not already empty.\n chunkedCalls[currentChunk].length > 0\n ) {\n currentChunk++\n currentChunkSize = (callData.length - 2) / 2\n chunkedCalls[currentChunk] = []\n }\n\n chunkedCalls[currentChunk] = [\n ...chunkedCalls[currentChunk],\n {\n allowFailure: true,\n callData,\n target: address,\n },\n ]\n } catch (err) {\n const error = getContractError(err as BaseError, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/multicall',\n functionName,\n })\n if (!allowFailure) throw error\n chunkedCalls[currentChunk] = [\n ...chunkedCalls[currentChunk],\n {\n allowFailure: true,\n callData: '0x' as Hex,\n target: address,\n },\n ]\n }\n }\n\n const aggregate3Results = await Promise.allSettled(\n chunkedCalls.map((calls) =>\n getAction(\n client,\n readContract,\n 'readContract',\n )({\n abi: multicall3Abi,\n address: multicallAddress!,\n args: [calls],\n blockNumber,\n blockTag,\n functionName: 'aggregate3',\n stateOverride,\n }),\n ),\n )\n\n const results = []\n for (let i = 0; i < aggregate3Results.length; i++) {\n const result = aggregate3Results[i]\n\n // If an error occurred in a `readContract` invocation (ie. network error),\n // then append the failure reason to each contract result.\n if (result.status === 'rejected') {\n if (!allowFailure) throw result.reason\n for (let j = 0; j < chunkedCalls[i].length; j++) {\n results.push({\n status: 'failure',\n error: result.reason,\n result: undefined,\n })\n }\n continue\n }\n\n // If the `readContract` call was successful, then decode the results.\n const aggregate3Result = result.value\n for (let j = 0; j < aggregate3Result.length; j++) {\n // Extract the response from `readContract`\n const { returnData, success } = aggregate3Result[j]\n\n // Extract the request call data from the original call.\n const { callData } = chunkedCalls[i][j]\n\n // Extract the contract config for this call from the `contracts` argument\n // for decoding.\n const { abi, address, functionName, args } = contracts[\n results.length\n ] as ContractFunctionParameters\n\n try {\n if (callData === '0x') throw new AbiDecodingZeroDataError()\n if (!success) throw new RawContractError({ data: returnData })\n const result = decodeFunctionResult({\n abi,\n args,\n data: returnData,\n functionName,\n })\n results.push(allowFailure ? { result, status: 'success' } : result)\n } catch (err) {\n const error = getContractError(err as BaseError, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/multicall',\n functionName,\n })\n if (!allowFailure) throw error\n results.push({ error, result: undefined, status: 'failure' })\n }\n }\n }\n\n if (results.length !== contracts.length)\n throw new BaseError('multicall results mismatch')\n return results as MulticallReturnType<contracts, allowFailure>\n}\n","import type { Abi, AbiFunction, AbiStateMutability, Address } from 'abitype'\n\nimport {\n type ParseAccountErrorType,\n parseAccount,\n} from '../../accounts/utils/parseAccount.js'\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Account, ParseAccount } from '../../types/account.js'\nimport type { Chain, DeriveChain } from '../../types/chain.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n ContractFunctionParameters,\n ContractFunctionReturnType,\n ExtractAbiFunctionForArgs,\n} from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type {\n IsNarrowable,\n NoInfer,\n Prettify,\n UnionEvaluate,\n UnionOmit,\n} from '../../types/utils.js'\nimport {\n type DecodeFunctionResultErrorType,\n decodeFunctionResult,\n} from '../../utils/abi/decodeFunctionResult.js'\nimport {\n type EncodeFunctionDataErrorType,\n encodeFunctionData,\n} from '../../utils/abi/encodeFunctionData.js'\nimport {\n type GetContractErrorReturnType,\n getContractError,\n} from '../../utils/errors/getContractError.js'\nimport type { WriteContractParameters } from '../wallet/writeContract.js'\n\nimport type { TransactionRequest } from '../../types/transaction.js'\nimport { getAction } from '../../utils/getAction.js'\nimport { type CallErrorType, type CallParameters, call } from './call.js'\n\nexport type GetMutabilityAwareValue<\n abi extends Abi | readonly unknown[],\n mutability extends AbiStateMutability = AbiStateMutability,\n functionName extends ContractFunctionName<\n abi,\n mutability\n > = ContractFunctionName<abi, mutability>,\n valueType = TransactionRequest['value'],\n args extends ContractFunctionArgs<\n abi,\n mutability,\n functionName\n > = ContractFunctionArgs<abi, mutability, functionName>,\n abiFunction extends AbiFunction = abi extends Abi\n ? ExtractAbiFunctionForArgs<abi, mutability, functionName, args>\n : AbiFunction,\n _Narrowable extends boolean = IsNarrowable<abi, Abi>,\n> = _Narrowable extends true\n ? abiFunction['stateMutability'] extends 'payable'\n ? { value?: NoInfer<valueType> | undefined }\n : abiFunction['payable'] extends true\n ? { value?: NoInfer<valueType> | undefined }\n : { value?: undefined }\n : { value?: NoInfer<valueType> | undefined }\n\nexport type SimulateContractParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends ContractFunctionName<\n abi,\n 'nonpayable' | 'payable'\n > = ContractFunctionName<abi, 'nonpayable' | 'payable'>,\n args extends ContractFunctionArgs<\n abi,\n 'nonpayable' | 'payable',\n functionName\n > = ContractFunctionArgs<abi, 'nonpayable' | 'payable', functionName>,\n chain extends Chain | undefined = Chain | undefined,\n chainOverride extends Chain | undefined = Chain | undefined,\n accountOverride extends Account | Address | undefined = undefined,\n ///\n derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>,\n> = {\n account?: accountOverride | undefined\n chain?: chainOverride | undefined\n /** Data to append to the end of the calldata. Useful for adding a [\"domain\" tag](https://opensea.notion.site/opensea/Seaport-Order-Attributions-ec2d69bf455041a5baa490941aad307f). */\n dataSuffix?: Hex | undefined\n} & ContractFunctionParameters<\n abi,\n 'nonpayable' | 'payable',\n functionName,\n args\n> &\n UnionOmit<\n CallParameters<derivedChain>,\n | 'account'\n | 'batch'\n | 'code'\n | 'to'\n | 'data'\n | 'factory'\n | 'factoryData'\n | 'value'\n > &\n GetMutabilityAwareValue<\n abi,\n 'nonpayable' | 'payable',\n functionName,\n CallParameters<derivedChain> extends CallParameters\n ? CallParameters<derivedChain>['value']\n : CallParameters['value'],\n args\n >\n\nexport type SimulateContractReturnType<\n out abi extends Abi | readonly unknown[] = Abi,\n in out functionName extends ContractFunctionName<\n abi,\n 'nonpayable' | 'payable'\n > = ContractFunctionName<abi, 'nonpayable' | 'payable'>,\n in out args extends ContractFunctionArgs<\n abi,\n 'nonpayable' | 'payable',\n functionName\n > = ContractFunctionArgs<abi, 'nonpayable' | 'payable', functionName>,\n /** @ts-expect-error cast variance */\n out chain extends Chain | undefined = Chain | undefined,\n out account extends Account | undefined = Account | undefined,\n out chainOverride extends Chain | undefined = Chain | undefined,\n out accountOverride extends Account | Address | undefined =\n | Account\n | Address\n | undefined,\n ///\n in out minimizedAbi extends Abi = readonly [\n ExtractAbiFunctionForArgs<\n abi extends Abi ? abi : Abi,\n 'nonpayable' | 'payable',\n functionName,\n args\n >,\n ],\n out resolvedAccount extends Account | undefined = accountOverride extends\n | Account\n | Address\n ? ParseAccount<accountOverride>\n : account,\n> = {\n result: ContractFunctionReturnType<\n minimizedAbi,\n 'nonpayable' | 'payable',\n functionName,\n args\n >\n request: Prettify<\n UnionEvaluate<\n UnionOmit<\n WriteContractParameters<\n minimizedAbi,\n functionName,\n args,\n chain,\n undefined,\n chainOverride\n >,\n 'account' | 'abi' | 'args' | 'chain' | 'functionName'\n >\n > &\n ContractFunctionParameters<\n minimizedAbi,\n 'nonpayable' | 'payable',\n functionName,\n args\n > & {\n chain: DeriveChain<chain, chainOverride>\n } & (resolvedAccount extends Account\n ? { account: resolvedAccount }\n : { account?: undefined })\n >\n}\n\nexport type SimulateContractErrorType =\n | ParseAccountErrorType\n | EncodeFunctionDataErrorType\n | GetContractErrorReturnType<CallErrorType | DecodeFunctionResultErrorType>\n | ErrorType\n\n/**\n * Simulates/validates a contract interaction. This is useful for retrieving **return data** and **revert reasons** of contract write functions.\n *\n * - Docs: https://viem.sh/docs/contract/simulateContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts_writing-to-contracts\n *\n * This function does not require gas to execute and _**does not**_ change the state of the blockchain. It is almost identical to [`readContract`](https://viem.sh/docs/contract/readContract), but also supports contract write functions.\n *\n * Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * @param client - Client to use\n * @param parameters - {@link SimulateContractParameters}\n * @returns The simulation result and write request. {@link SimulateContractReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { simulateContract } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const result = await simulateContract(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function mint(uint32) view returns (uint32)']),\n * functionName: 'mint',\n * args: ['69420'],\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n */\nexport async function simulateContract<\n chain extends Chain | undefined,\n account extends Account | undefined,\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName<abi, 'nonpayable' | 'payable'>,\n const args extends ContractFunctionArgs<\n abi,\n 'nonpayable' | 'payable',\n functionName\n >,\n chainOverride extends Chain | undefined = undefined,\n accountOverride extends Account | Address | undefined = undefined,\n>(\n client: Client<Transport, chain, account>,\n parameters: SimulateContractParameters<\n abi,\n functionName,\n args,\n chain,\n chainOverride,\n accountOverride\n >,\n): Promise<\n SimulateContractReturnType<\n abi,\n functionName,\n args,\n chain,\n account,\n chainOverride,\n accountOverride\n >\n> {\n const { abi, address, args, dataSuffix, functionName, ...callRequest } =\n parameters as SimulateContractParameters\n\n const account = callRequest.account\n ? parseAccount(callRequest.account)\n : client.account\n const calldata = encodeFunctionData({ abi, args, functionName })\n try {\n const { data } = await getAction(\n client,\n call,\n 'call',\n )({\n batch: false,\n data: `${calldata}${dataSuffix ? dataSuffix.replace('0x', '') : ''}`,\n to: address,\n ...callRequest,\n account,\n })\n const result = decodeFunctionResult({\n abi,\n args,\n functionName,\n data: data || '0x',\n })\n const minimizedAbi = abi.filter(\n (abiItem) =>\n 'name' in abiItem && abiItem.name === parameters.functionName,\n )\n return {\n result,\n request: {\n abi: minimizedAbi,\n address,\n args,\n dataSuffix,\n functionName,\n ...callRequest,\n account,\n },\n } as unknown as SimulateContractReturnType<\n abi,\n functionName,\n args,\n chain,\n account,\n chainOverride,\n accountOverride\n >\n } catch (error) {\n throw getContractError(error as BaseError, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/simulateContract',\n functionName,\n sender: account?.address,\n })\n }\n}\n","import type { Address } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type {\n ByteArray,\n Hex,\n SignableMessage,\n Signature,\n} from '../../types/misc.js'\nimport type { Prettify } from '../../types/utils.js'\nimport { hashMessage } from '../../utils/signature/hashMessage.js'\nimport type { HashMessageErrorType } from '../../utils/signature/hashMessage.js'\nimport {\n type VerifyHashErrorType,\n type VerifyHashParameters,\n verifyHash,\n} from './verifyHash.js'\n\nexport type VerifyMessageParameters = Prettify<\n Omit<VerifyHashParameters, 'hash'> & {\n /** The address that signed the original message. */\n address: Address\n /** The message to be verified. */\n message: SignableMessage\n /** The signature that was generated by signing the message with the address's private key. */\n signature: Hex | ByteArray | Signature\n }\n>\n\nexport type VerifyMessageReturnType = boolean\n\nexport type VerifyMessageErrorType =\n | HashMessageErrorType\n | VerifyHashErrorType\n | ErrorType\n\n/**\n * Verify that a message was signed by the provided address.\n *\n * Compatible with Smart Contract Accounts & Externally Owned Accounts via [ERC-6492](https://eips.ethereum.org/EIPS/eip-6492).\n *\n * - Docs {@link https://viem.sh/docs/actions/public/verifyMessage}\n *\n * @param client - Client to use.\n * @param parameters - {@link VerifyMessageParameters}\n * @returns Whether or not the signature is valid. {@link VerifyMessageReturnType}\n */\nexport async function verifyMessage<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n {\n address,\n message,\n factory,\n factoryData,\n signature,\n ...callRequest\n }: VerifyMessageParameters,\n): Promise<VerifyMessageReturnType> {\n const hash = hashMessage(message)\n return verifyHash(client, {\n address,\n factory: factory!,\n factoryData: factoryData!,\n hash,\n signature,\n ...callRequest,\n })\n}\n","import type { Address, TypedData } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { ByteArray, Hex, Signature } from '../../types/misc.js'\nimport type { TypedDataDefinition } from '../../types/typedData.js'\nimport {\n type HashTypedDataErrorType,\n hashTypedData,\n} from '../../utils/signature/hashTypedData.js'\nimport {\n type VerifyHashErrorType,\n type VerifyHashParameters,\n verifyHash,\n} from './verifyHash.js'\n\nexport type VerifyTypedDataParameters<\n typedData extends TypedData | Record<string, unknown> = TypedData,\n primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData,\n> = Omit<VerifyHashParameters, 'hash'> &\n TypedDataDefinition<typedData, primaryType> & {\n /** The address to verify the typed data for. */\n address: Address\n /** The signature to verify */\n signature: Hex | ByteArray | Signature\n }\n\nexport type VerifyTypedDataReturnType = boolean\n\nexport type VerifyTypedDataErrorType =\n | HashTypedDataErrorType\n | VerifyHashErrorType\n | ErrorType\n\n/**\n * Verify that typed data was signed by the provided address.\n *\n * - Docs {@link https://viem.sh/docs/actions/public/verifyTypedData}\n *\n * @param client - Client to use.\n * @param parameters - {@link VerifyTypedDataParameters}\n * @returns Whether or not the signature is valid. {@link VerifyTypedDataReturnType}\n */\nexport async function verifyTypedData<\n const typedData extends TypedData | Record<string, unknown>,\n primaryType extends keyof typedData | 'EIP712Domain',\n chain extends Chain | undefined,\n>(\n client: Client<Transport, chain>,\n parameters: VerifyTypedDataParameters<typedData, primaryType>,\n): Promise<VerifyTypedDataReturnType> {\n const {\n address,\n factory,\n factoryData,\n signature,\n message,\n primaryType,\n types,\n domain,\n ...callRequest\n } = parameters as VerifyTypedDataParameters\n const hash = hashTypedData({ message, primaryType, types, domain })\n return verifyHash(client, {\n address,\n factory: factory!,\n factoryData: factoryData!,\n hash,\n signature,\n ...callRequest,\n })\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport { BlockNotFoundError } from '../../errors/block.js'\nimport {\n TransactionNotFoundError,\n TransactionReceiptNotFoundError,\n WaitForTransactionReceiptTimeoutError,\n} from '../../errors/transaction.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Hash } from '../../types/misc.js'\nimport type { Transaction } from '../../types/transaction.js'\nimport { getAction } from '../../utils/getAction.js'\nimport { type ObserveErrorType, observe } from '../../utils/observe.js'\nimport { withResolvers } from '../../utils/promise/withResolvers.js'\nimport {\n type WithRetryParameters,\n withRetry,\n} from '../../utils/promise/withRetry.js'\nimport { stringify } from '../../utils/stringify.js'\n\nimport { type GetBlockErrorType, getBlock } from './getBlock.js'\nimport {\n type GetTransactionErrorType,\n type GetTransactionReturnType,\n getTransaction,\n} from './getTransaction.js'\nimport {\n type GetTransactionReceiptErrorType,\n type GetTransactionReceiptReturnType,\n getTransactionReceipt,\n} from './getTransactionReceipt.js'\nimport {\n type WatchBlockNumberErrorType,\n watchBlockNumber,\n} from './watchBlockNumber.js'\n\nexport type ReplacementReason = 'cancelled' | 'replaced' | 'repriced'\nexport type ReplacementReturnType<\n chain extends Chain | undefined = Chain | undefined,\n> = {\n reason: ReplacementReason\n replacedTransaction: Transaction\n transaction: Transaction\n transactionReceipt: GetTransactionReceiptReturnType<chain>\n}\n\nexport type WaitForTransactionReceiptReturnType<\n chain extends Chain | undefined = Chain | undefined,\n> = GetTransactionReceiptReturnType<chain>\n\nexport type WaitForTransactionReceiptParameters<\n chain extends Chain | undefined = Chain | undefined,\n> = {\n /**\n * The number of confirmations (blocks that have passed) to wait before resolving.\n * @default 1\n */\n confirmations?: number | undefined\n /** The hash of the transaction. */\n hash: Hash\n /** Optional callback to emit if the transaction has been replaced. */\n onReplaced?: ((response: ReplacementReturnType<chain>) => void) | undefined\n /**\n * Polling frequency (in ms). Defaults to the client's pollingInterval config.\n * @default client.pollingInterval\n */\n pollingInterval?: number | undefined\n /**\n * Number of times to retry if the transaction or block is not found.\n * @default 6 (exponential backoff)\n */\n retryCount?: WithRetryParameters['retryCount'] | undefined\n /**\n * Time to wait (in ms) between retries.\n * @default `({ count }) => ~~(1 << count) * 200` (exponential backoff)\n */\n retryDelay?: WithRetryParameters['delay'] | undefined\n /**\n * Optional timeout (in milliseconds) to wait before stopping polling.\n * @default 180_000\n */\n timeout?: number | undefined\n}\n\nexport type WaitForTransactionReceiptErrorType =\n | ObserveErrorType\n | GetBlockErrorType\n | GetTransactionErrorType\n | GetTransactionReceiptErrorType\n | WatchBlockNumberErrorType\n | ErrorType\n\n/**\n * Waits for the [Transaction](https://viem.sh/docs/glossary/terms#transaction) to be included on a [Block](https://viem.sh/docs/glossary/terms#block) (one confirmation), and then returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms#transaction-receipt).\n *\n * - Docs: https://viem.sh/docs/actions/public/waitForTransactionReceipt\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_sending-transactions\n * - JSON-RPC Methods:\n * - Polls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt) on each block until it has been processed.\n * - If a Transaction has been replaced:\n * - Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) and extracts the transactions\n * - Checks if one of the Transactions is a replacement\n * - If so, calls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt).\n *\n * The `waitForTransactionReceipt` action additionally supports Replacement detection (e.g. sped up Transactions).\n *\n * Transactions can be replaced when a user modifies their transaction in their wallet (to speed up or cancel). Transactions are replaced when they are sent from the same nonce.\n *\n * There are 3 types of Transaction Replacement reasons:\n *\n * - `repriced`: The gas price has been modified (e.g. different `maxFeePerGas`)\n * - `cancelled`: The Transaction has been cancelled (e.g. `value === 0n`)\n * - `replaced`: The Transaction has been replaced (e.g. different `value` or `data`)\n *\n * @param client - Client to use\n * @param parameters - {@link WaitForTransactionReceiptParameters}\n * @returns The transaction receipt. {@link WaitForTransactionReceiptReturnType}\n *\n * @example\n * import { createPublicClient, waitForTransactionReceipt, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const transactionReceipt = await waitForTransactionReceipt(client, {\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\nexport async function waitForTransactionReceipt<\n chain extends Chain | undefined,\n>(\n client: Client<Transport, chain>,\n {\n confirmations = 1,\n hash,\n onReplaced,\n pollingInterval = client.pollingInterval,\n retryCount = 6,\n retryDelay = ({ count }) => ~~(1 << count) * 200, // exponential backoff\n timeout = 180_000,\n }: WaitForTransactionReceiptParameters<chain>,\n): Promise<WaitForTransactionReceiptReturnType<chain>> {\n const observerId = stringify(['waitForTransactionReceipt', client.uid, hash])\n\n let transaction: GetTransactionReturnType<chain> | undefined\n let replacedTransaction: GetTransactionReturnType<chain> | undefined\n let receipt: GetTransactionReceiptReturnType<chain>\n let retrying = false\n\n const { promise, resolve, reject } =\n withResolvers<WaitForTransactionReceiptReturnType<chain>>()\n\n const timer = timeout\n ? setTimeout(\n () => reject(new WaitForTransactionReceiptTimeoutError({ hash })),\n timeout,\n )\n : undefined\n\n const _unobserve = observe(\n observerId,\n { onReplaced, resolve, reject },\n (emit) => {\n const _unwatch = getAction(\n client,\n watchBlockNumber,\n 'watchBlockNumber',\n )({\n emitMissed: true,\n emitOnBegin: true,\n poll: true,\n pollingInterval,\n async onBlockNumber(blockNumber_) {\n const done = (fn: () => void) => {\n clearTimeout(timer)\n _unwatch()\n fn()\n _unobserve()\n }\n\n let blockNumber = blockNumber_\n\n if (retrying) return\n\n try {\n // If we already have a valid receipt, let's check if we have enough\n // confirmations. If we do, then we can resolve.\n if (receipt) {\n if (\n confirmations > 1 &&\n (!receipt.blockNumber ||\n blockNumber - receipt.blockNumber + 1n < confirmations)\n )\n return\n\n done(() => emit.resolve(receipt))\n return\n }\n\n // Get the transaction to check if it's been replaced.\n // We need to retry as some RPC Providers may be slow to sync\n // up mined transactions.\n if (!transaction) {\n retrying = true\n await withRetry(\n async () => {\n transaction = (await getAction(\n client,\n getTransaction,\n 'getTransaction',\n )({ hash })) as GetTransactionReturnType<chain>\n if (transaction.blockNumber)\n blockNumber = transaction.blockNumber\n },\n {\n delay: retryDelay,\n retryCount,\n },\n )\n retrying = false\n }\n\n // Get the receipt to check if it's been processed.\n receipt = await getAction(\n client,\n getTransactionReceipt,\n 'getTransactionReceipt',\n )({ hash })\n\n // Check if we have enough confirmations. If not, continue polling.\n if (\n confirmations > 1 &&\n (!receipt.blockNumber ||\n blockNumber - receipt.blockNumber + 1n < confirmations)\n )\n return\n\n done(() => emit.resolve(receipt))\n } catch (err) {\n // If the receipt is not found, the transaction will be pending.\n // We need to check if it has potentially been replaced.\n if (\n err instanceof TransactionNotFoundError ||\n err instanceof TransactionReceiptNotFoundError\n ) {\n if (!transaction) {\n retrying = false\n return\n }\n\n try {\n replacedTransaction = transaction\n\n // Let's retrieve the transactions from the current block.\n // We need to retry as some RPC Providers may be slow to sync\n // up mined blocks.\n retrying = true\n const block = await withRetry(\n () =>\n getAction(\n client,\n getBlock,\n 'getBlock',\n )({\n blockNumber,\n includeTransactions: true,\n }),\n {\n delay: retryDelay,\n retryCount,\n shouldRetry: ({ error }) =>\n error instanceof BlockNotFoundError,\n },\n )\n retrying = false\n\n const replacementTransaction = (\n block.transactions as {} as Transaction[]\n ).find(\n ({ from, nonce }) =>\n from === replacedTransaction!.from &&\n nonce === replacedTransaction!.nonce,\n )\n\n // If we couldn't find a replacement transaction, continue polling.\n if (!replacementTransaction) return\n\n // If we found a replacement transaction, return it's receipt.\n receipt = await getAction(\n client,\n getTransactionReceipt,\n 'getTransactionReceipt',\n )({\n hash: replacementTransaction.hash,\n })\n\n // Check if we have enough confirmations. If not, continue polling.\n if (\n confirmations > 1 &&\n (!receipt.blockNumber ||\n blockNumber - receipt.blockNumber + 1n < confirmations)\n )\n return\n\n let reason: ReplacementReason = 'replaced'\n if (\n replacementTransaction.to === replacedTransaction.to &&\n replacementTransaction.value === replacedTransaction.value\n ) {\n reason = 'repriced'\n } else if (\n replacementTransaction.from === replacementTransaction.to &&\n replacementTransaction.value === 0n\n ) {\n reason = 'cancelled'\n }\n\n done(() => {\n emit.onReplaced?.({\n reason,\n replacedTransaction: replacedTransaction! as any,\n transaction: replacementTransaction,\n transactionReceipt: receipt,\n })\n emit.resolve(receipt)\n })\n } catch (err_) {\n done(() => emit.reject(err_))\n }\n } else {\n done(() => emit.reject(err))\n }\n }\n },\n })\n },\n )\n\n return promise\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { HasTransportType } from '../../types/transport.js'\nimport { formatBlock } from '../../utils/formatters/block.js'\nimport { getAction } from '../../utils/getAction.js'\nimport { observe } from '../../utils/observe.js'\nimport { type PollErrorType, poll } from '../../utils/poll.js'\nimport { type StringifyErrorType, stringify } from '../../utils/stringify.js'\n\nimport { type GetBlockReturnType, getBlock } from './getBlock.js'\n\nexport type OnBlockParameter<\n chain extends Chain | undefined = Chain,\n includeTransactions extends boolean = false,\n blockTag extends BlockTag = 'latest',\n> = GetBlockReturnType<chain, includeTransactions, blockTag>\n\nexport type OnBlock<\n chain extends Chain | undefined = Chain,\n includeTransactions extends boolean = false,\n blockTag extends BlockTag = 'latest',\n> = (\n block: OnBlockParameter<chain, includeTransactions, blockTag>,\n prevBlock: OnBlockParameter<chain, includeTransactions, blockTag> | undefined,\n) => void\n\nexport type WatchBlocksParameters<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain,\n includeTransactions extends boolean = false,\n blockTag extends BlockTag = 'latest',\n> = {\n /** The callback to call when a new block is received. */\n onBlock: OnBlock<chain, includeTransactions, blockTag>\n /** The callback to call when an error occurred when trying to get for a new block. */\n onError?: ((error: Error) => void) | undefined\n} & (\n | (HasTransportType<transport, 'webSocket'> extends true\n ? {\n blockTag?: undefined\n emitMissed?: undefined\n emitOnBegin?: undefined\n includeTransactions?: undefined\n /** Whether or not the WebSocket Transport should poll the JSON-RPC, rather than using `eth_subscribe`. */\n poll?: false | undefined\n pollingInterval?: undefined\n }\n : never)\n | {\n /** The block tag. Defaults to \"latest\". */\n blockTag?: blockTag | BlockTag | undefined\n /** Whether or not to emit the missed blocks to the callback. */\n emitMissed?: boolean | undefined\n /** Whether or not to emit the block to the callback when the subscription opens. */\n emitOnBegin?: boolean | undefined\n /** Whether or not to include transaction data in the response. */\n includeTransactions?: includeTransactions | undefined\n poll?: true | undefined\n /** Polling frequency (in ms). Defaults to the client's pollingInterval config. */\n pollingInterval?: number | undefined\n }\n)\n\nexport type WatchBlocksReturnType = () => void\n\nexport type WatchBlocksErrorType =\n | StringifyErrorType\n | PollErrorType\n | ErrorType\n\n/**\n * Watches and returns information for incoming blocks.\n *\n * - Docs: https://viem.sh/docs/actions/public/watchBlocks\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks_watching-blocks\n * - JSON-RPC Methods:\n * - When `poll: true`, calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getBlockByNumber) on a polling interval.\n * - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `\"newHeads\"` event.\n *\n * @param client - Client to use\n * @param parameters - {@link WatchBlocksParameters}\n * @returns A function that can be invoked to stop watching for new block numbers. {@link WatchBlocksReturnType}\n *\n * @example\n * import { createPublicClient, watchBlocks, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = watchBlocks(client, {\n * onBlock: (block) => console.log(block),\n * })\n */\nexport function watchBlocks<\n transport extends Transport,\n chain extends Chain | undefined,\n includeTransactions extends boolean = false,\n blockTag extends BlockTag = 'latest',\n>(\n client: Client<transport, chain>,\n {\n blockTag = 'latest',\n emitMissed = false,\n emitOnBegin = false,\n onBlock,\n onError,\n includeTransactions: includeTransactions_,\n poll: poll_,\n pollingInterval = client.pollingInterval,\n }: WatchBlocksParameters<transport, chain, includeTransactions, blockTag>,\n): WatchBlocksReturnType {\n const enablePolling = (() => {\n if (typeof poll_ !== 'undefined') return poll_\n if (client.transport.type === 'webSocket') return false\n if (\n client.transport.type === 'fallback' &&\n client.transport.transports[0].config.type === 'webSocket'\n )\n return false\n return true\n })()\n const includeTransactions = includeTransactions_ ?? false\n\n let prevBlock:\n | GetBlockReturnType<chain, false | includeTransactions, 'latest'>\n | undefined\n\n const pollBlocks = () => {\n const observerId = stringify([\n 'watchBlocks',\n client.uid,\n blockTag,\n emitMissed,\n emitOnBegin,\n includeTransactions,\n pollingInterval,\n ])\n\n return observe(observerId, { onBlock, onError }, (emit) =>\n poll(\n async () => {\n try {\n const block = await getAction(\n client,\n getBlock,\n 'getBlock',\n )({\n blockTag,\n includeTransactions,\n })\n if (block.number && prevBlock?.number) {\n // If the current block number is the same as the previous,\n // we can skip.\n if (block.number === prevBlock.number) return\n\n // If we have missed out on some previous blocks, and the\n // `emitMissed` flag is truthy, let's emit those blocks.\n if (block.number - prevBlock.number > 1 && emitMissed) {\n for (let i = prevBlock?.number + 1n; i < block.number; i++) {\n const block = (await getAction(\n client,\n getBlock,\n 'getBlock',\n )({\n blockNumber: i,\n includeTransactions,\n })) as GetBlockReturnType<chain>\n emit.onBlock(block as any, prevBlock as any)\n prevBlock = block\n }\n }\n }\n\n if (\n // If no previous block exists, emit.\n !prevBlock?.number ||\n // If the block tag is \"pending\" with no block number, emit.\n (blockTag === 'pending' && !block?.number) ||\n // If the next block number is greater than the previous block number, emit.\n // We don't want to emit blocks in the past.\n (block.number && block.number > prevBlock.number)\n ) {\n emit.onBlock(block as any, prevBlock as any)\n prevBlock = block as any\n }\n } catch (err) {\n emit.onError?.(err as Error)\n }\n },\n {\n emitOnBegin,\n interval: pollingInterval,\n },\n ),\n )\n }\n\n const subscribeBlocks = () => {\n let active = true\n let emitFetched = true\n let unsubscribe = () => (active = false)\n ;(async () => {\n try {\n if (emitOnBegin) {\n getAction(\n client,\n getBlock,\n 'getBlock',\n )({\n blockTag,\n includeTransactions,\n }).then((block) => {\n if (!active) return\n if (!emitFetched) return\n onBlock(block as any, undefined)\n emitFetched = false\n })\n }\n\n const transport = (() => {\n if (client.transport.type === 'fallback') {\n const transport = client.transport.transports.find(\n (transport: ReturnType<Transport>) =>\n transport.config.type === 'webSocket',\n )\n if (!transport) return client.transport\n return transport.value\n }\n return client.transport\n })()\n\n const { unsubscribe: unsubscribe_ } = await transport.subscribe({\n params: ['newHeads'],\n onData(data: any) {\n if (!active) return\n const format =\n client.chain?.formatters?.block?.format || formatBlock\n const block = format(data.result)\n onBlock(block, prevBlock as any)\n emitFetched = false\n prevBlock = block\n },\n onError(error: Error) {\n onError?.(error)\n },\n })\n unsubscribe = unsubscribe_\n if (!active) unsubscribe()\n } catch (err) {\n onError?.(err as Error)\n }\n })()\n return () => unsubscribe()\n }\n\n return enablePolling ? pollBlocks() : subscribeBlocks()\n}\n","import type { Abi, Address, ExtractAbiEvent } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Filter } from '../../types/filter.js'\nimport type { Log } from '../../types/log.js'\n\nimport {\n DecodeLogDataMismatch,\n DecodeLogTopicsMismatch,\n} from '../../errors/abi.js'\nimport { InvalidInputRpcError } from '../../errors/rpc.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockNumber } from '../../types/block.js'\nimport type {\n ContractEventArgs,\n ContractEventName,\n} from '../../types/contract.js'\nimport type { LogTopic } from '../../types/misc.js'\nimport type { GetPollOptions } from '../../types/transport.js'\nimport { decodeEventLog } from '../../utils/abi/decodeEventLog.js'\nimport {\n type EncodeEventTopicsParameters,\n encodeEventTopics,\n} from '../../utils/abi/encodeEventTopics.js'\nimport { formatLog } from '../../utils/formatters/log.js'\nimport { getAction } from '../../utils/getAction.js'\nimport { type ObserveErrorType, observe } from '../../utils/observe.js'\nimport { poll } from '../../utils/poll.js'\nimport { type StringifyErrorType, stringify } from '../../utils/stringify.js'\nimport { createContractEventFilter } from './createContractEventFilter.js'\nimport { getBlockNumber } from './getBlockNumber.js'\nimport {\n type GetContractEventsParameters,\n getContractEvents,\n} from './getContractEvents.js'\nimport { getFilterChanges } from './getFilterChanges.js'\nimport { uninstallFilter } from './uninstallFilter.js'\n\nexport type WatchContractEventOnLogsParameter<\n abi extends Abi | readonly unknown[] = Abi,\n eventName extends ContractEventName<abi> = ContractEventName<abi>,\n strict extends boolean | undefined = undefined,\n> = abi extends Abi\n ? Abi extends abi\n ? Log[]\n : Log<bigint, number, false, ExtractAbiEvent<abi, eventName>, strict>[]\n : Log[]\n\nexport type WatchContractEventOnLogsFn<\n abi extends Abi | readonly unknown[] = Abi,\n eventName extends ContractEventName<abi> = ContractEventName<abi>,\n strict extends boolean | undefined = undefined,\n> = (logs: WatchContractEventOnLogsParameter<abi, eventName, strict>) => void\n\nexport type WatchContractEventParameters<\n abi extends Abi | readonly unknown[] = Abi,\n eventName extends ContractEventName<abi> | undefined = ContractEventName<abi>,\n strict extends boolean | undefined = undefined,\n transport extends Transport = Transport,\n> = {\n /** The address of the contract. */\n address?: Address | Address[] | undefined\n /** Contract ABI. */\n abi: abi\n args?:\n | ContractEventArgs<\n abi,\n eventName extends ContractEventName<abi>\n ? eventName\n : ContractEventName<abi>\n >\n | undefined\n /** Contract event. */\n eventName?: eventName | ContractEventName<abi> | undefined\n /** Block to start listening from. */\n fromBlock?: BlockNumber<bigint> | undefined\n /** The callback to call when an error occurred when trying to get for a new block. */\n onError?: ((error: Error) => void) | undefined\n /** The callback to call when new event logs are received. */\n onLogs: WatchContractEventOnLogsFn<\n abi,\n eventName extends ContractEventName<abi>\n ? eventName\n : ContractEventName<abi>,\n strict\n >\n /**\n * Whether or not the logs must match the indexed/non-indexed arguments on `event`.\n * @default false\n */\n strict?: strict | boolean | undefined\n} & GetPollOptions<transport>\n\nexport type WatchContractEventReturnType = () => void\n\nexport type WatchContractEventErrorType =\n | StringifyErrorType\n | ObserveErrorType\n | ErrorType\n\n/**\n * Watches and returns emitted contract event logs.\n *\n * - Docs: https://viem.sh/docs/contract/watchContractEvent\n *\n * This Action will batch up all the event logs found within the [`pollingInterval`](https://viem.sh/docs/contract/watchContractEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/contract/watchContractEvent#onLogs).\n *\n * `watchContractEvent` will attempt to create an [Event Filter](https://viem.sh/docs/contract/createContractEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchContractEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead.\n *\n * @param client - Client to use\n * @param parameters - {@link WatchContractEventParameters}\n * @returns A function that can be invoked to stop watching for new event logs. {@link WatchContractEventReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { watchContractEvent } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = watchContractEvent(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['event Transfer(address indexed from, address indexed to, uint256 value)']),\n * eventName: 'Transfer',\n * args: { from: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b' },\n * onLogs: (logs) => console.log(logs),\n * })\n */\nexport function watchContractEvent<\n chain extends Chain | undefined,\n const abi extends Abi | readonly unknown[],\n eventName extends ContractEventName<abi> | undefined = undefined,\n strict extends boolean | undefined = undefined,\n transport extends Transport = Transport,\n>(\n client: Client<transport, chain>,\n parameters: WatchContractEventParameters<abi, eventName, strict, transport>,\n): WatchContractEventReturnType {\n const {\n abi,\n address,\n args,\n batch = true,\n eventName,\n fromBlock,\n onError,\n onLogs,\n poll: poll_,\n pollingInterval = client.pollingInterval,\n strict: strict_,\n } = parameters\n\n const enablePolling = (() => {\n if (typeof poll_ !== 'undefined') return poll_\n if (typeof fromBlock === 'bigint') return true\n if (client.transport.type === 'webSocket') return false\n if (\n client.transport.type === 'fallback' &&\n client.transport.transports[0].config.type === 'webSocket'\n )\n return false\n return true\n })()\n\n const pollContractEvent = () => {\n const strict = strict_ ?? false\n const observerId = stringify([\n 'watchContractEvent',\n address,\n args,\n batch,\n client.uid,\n eventName,\n pollingInterval,\n strict,\n fromBlock,\n ])\n\n return observe(observerId, { onLogs, onError }, (emit) => {\n let previousBlockNumber: bigint\n if (fromBlock !== undefined) previousBlockNumber = fromBlock - 1n\n let filter: Filter<'event', abi, eventName> | undefined\n let initialized = false\n\n const unwatch = poll(\n async () => {\n if (!initialized) {\n try {\n filter = (await getAction(\n client,\n createContractEventFilter,\n 'createContractEventFilter',\n )({\n abi,\n address,\n args: args as any,\n eventName: eventName as any,\n strict: strict as any,\n fromBlock,\n })) as Filter<'event', abi, eventName>\n } catch {}\n initialized = true\n return\n }\n\n try {\n let logs: Log[]\n if (filter) {\n logs = await getAction(\n client,\n getFilterChanges,\n 'getFilterChanges',\n )({ filter })\n } else {\n // If the filter doesn't exist, we will fall back to use `getLogs`.\n // The fall back exists because some RPC Providers do not support filters.\n\n // Fetch the block number to use for `getLogs`.\n const blockNumber = await getAction(\n client,\n getBlockNumber,\n 'getBlockNumber',\n )({})\n\n // If the block number has changed, we will need to fetch the logs.\n // If the block number doesn't exist, we are yet to reach the first poll interval,\n // so do not emit any logs.\n if (previousBlockNumber && previousBlockNumber < blockNumber) {\n logs = await getAction(\n client,\n getContractEvents,\n 'getContractEvents',\n )({\n abi,\n address,\n args,\n eventName,\n fromBlock: previousBlockNumber + 1n,\n toBlock: blockNumber,\n strict,\n } as {} as GetContractEventsParameters)\n } else {\n logs = []\n }\n previousBlockNumber = blockNumber\n }\n\n if (logs.length === 0) return\n if (batch) emit.onLogs(logs as any)\n else for (const log of logs) emit.onLogs([log] as any)\n } catch (err) {\n // If a filter has been set and gets uninstalled, providers will throw an InvalidInput error.\n // Reinitialize the filter when this occurs\n if (filter && err instanceof InvalidInputRpcError)\n initialized = false\n emit.onError?.(err as Error)\n }\n },\n {\n emitOnBegin: true,\n interval: pollingInterval,\n },\n )\n\n return async () => {\n if (filter)\n await getAction(\n client,\n uninstallFilter,\n 'uninstallFilter',\n )({ filter })\n unwatch()\n }\n })\n }\n\n const subscribeContractEvent = () => {\n const strict = strict_ ?? false\n const observerId = stringify([\n 'watchContractEvent',\n address,\n args,\n batch,\n client.uid,\n eventName,\n pollingInterval,\n strict,\n ])\n\n let active = true\n let unsubscribe = () => (active = false)\n return observe(observerId, { onLogs, onError }, (emit) => {\n ;(async () => {\n try {\n const transport = (() => {\n if (client.transport.type === 'fallback') {\n const transport = client.transport.transports.find(\n (transport: ReturnType<Transport>) =>\n transport.config.type === 'webSocket',\n )\n if (!transport) return client.transport\n return transport.value\n }\n return client.transport\n })()\n\n const topics: LogTopic[] = eventName\n ? encodeEventTopics({\n abi: abi,\n eventName: eventName,\n args,\n } as EncodeEventTopicsParameters)\n : []\n\n const { unsubscribe: unsubscribe_ } = await transport.subscribe({\n params: ['logs', { address, topics }],\n onData(data: any) {\n if (!active) return\n const log = data.result\n try {\n const { eventName, args } = decodeEventLog({\n abi: abi,\n data: log.data,\n topics: log.topics as any,\n strict: strict_,\n })\n const formatted = formatLog(log, {\n args,\n eventName: eventName as string,\n })\n emit.onLogs([formatted] as any)\n } catch (err) {\n let eventName: string | undefined\n let isUnnamed: boolean | undefined\n if (\n err instanceof DecodeLogDataMismatch ||\n err instanceof DecodeLogTopicsMismatch\n ) {\n // If strict mode is on, and log data/topics do not match event definition, skip.\n if (strict_) return\n eventName = err.abiItem.name\n isUnnamed = err.abiItem.inputs?.some(\n (x) => !('name' in x && x.name),\n )\n }\n\n // Set args to empty if there is an error decoding (e.g. indexed/non-indexed params mismatch).\n const formatted = formatLog(log, {\n args: isUnnamed ? [] : {},\n eventName,\n })\n emit.onLogs([formatted] as any)\n }\n },\n onError(error: Error) {\n emit.onError?.(error)\n },\n })\n unsubscribe = unsubscribe_\n if (!active) unsubscribe()\n } catch (err) {\n onError?.(err as Error)\n }\n })()\n return () => unsubscribe()\n })\n }\n\n return enablePolling ? pollContractEvent() : subscribeContractEvent()\n}\n","import type { AbiEvent, Address } from 'abitype'\n\nimport type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { Chain } from '../../types/chain.js'\nimport type {\n MaybeAbiEventName,\n MaybeExtractEventArgsFromAbi,\n} from '../../types/contract.js'\nimport type { Filter } from '../../types/filter.js'\nimport type { Log } from '../../types/log.js'\nimport type { LogTopic } from '../../types/misc.js'\nimport type { GetPollOptions } from '../../types/transport.js'\nimport {\n type EncodeEventTopicsParameters,\n encodeEventTopics,\n} from '../../utils/abi/encodeEventTopics.js'\nimport { type ObserveErrorType, observe } from '../../utils/observe.js'\nimport { poll } from '../../utils/poll.js'\nimport { type StringifyErrorType, stringify } from '../../utils/stringify.js'\n\nimport {\n DecodeLogDataMismatch,\n DecodeLogTopicsMismatch,\n} from '../../errors/abi.js'\nimport { InvalidInputRpcError } from '../../errors/rpc.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { BlockNumber } from '../../types/block.js'\nimport { decodeEventLog } from '../../utils/abi/decodeEventLog.js'\nimport { formatLog } from '../../utils/formatters/log.js'\nimport { getAction } from '../../utils/getAction.js'\nimport {\n type CreateEventFilterParameters,\n createEventFilter,\n} from './createEventFilter.js'\nimport { getBlockNumber } from './getBlockNumber.js'\nimport { getFilterChanges } from './getFilterChanges.js'\nimport { type GetLogsParameters, getLogs } from './getLogs.js'\nimport { uninstallFilter } from './uninstallFilter.js'\n\nexport type WatchEventOnLogsParameter<\n abiEvent extends AbiEvent | undefined = undefined,\n abiEvents extends\n | readonly AbiEvent[]\n | readonly unknown[]\n | undefined = abiEvent extends AbiEvent ? [abiEvent] : undefined,\n strict extends boolean | undefined = undefined,\n eventName extends string | undefined = MaybeAbiEventName<abiEvent>,\n> = Log<bigint, number, false, abiEvent, strict, abiEvents, eventName>[]\nexport type WatchEventOnLogsFn<\n abiEvent extends AbiEvent | undefined = undefined,\n abiEvents extends\n | readonly AbiEvent[]\n | readonly unknown[]\n | undefined = abiEvent extends AbiEvent ? [abiEvent] : undefined,\n strict extends boolean | undefined = undefined,\n //\n _eventName extends string | undefined = MaybeAbiEventName<abiEvent>,\n> = (\n logs: WatchEventOnLogsParameter<abiEvent, abiEvents, strict, _eventName>,\n) => void\n\nexport type WatchEventParameters<\n abiEvent extends AbiEvent | undefined = undefined,\n abiEvents extends\n | readonly AbiEvent[]\n | readonly unknown[]\n | undefined = abiEvent extends AbiEvent ? [abiEvent] : undefined,\n strict extends boolean | undefined = undefined,\n transport extends Transport = Transport,\n //\n _eventName extends string | undefined = MaybeAbiEventName<abiEvent>,\n> = {\n /** The address of the contract. */\n address?: Address | Address[] | undefined\n /** Block to start listening from. */\n fromBlock?: BlockNumber<bigint> | undefined\n /** The callback to call when an error occurred when trying to get for a new block. */\n onError?: ((error: Error) => void) | undefined\n /** The callback to call when new event logs are received. */\n onLogs: WatchEventOnLogsFn<abiEvent, abiEvents, strict, _eventName>\n} & GetPollOptions<transport> &\n (\n | {\n event: abiEvent\n events?: undefined\n args?: MaybeExtractEventArgsFromAbi<abiEvents, _eventName> | undefined\n /**\n * Whether or not the logs must match the indexed/non-indexed arguments on `event`.\n * @default false\n */\n strict?: strict | undefined\n }\n | {\n event?: undefined\n events?: abiEvents | undefined\n args?: undefined\n /**\n * Whether or not the logs must match the indexed/non-indexed arguments on `event`.\n * @default false\n */\n strict?: strict | undefined\n }\n | {\n event?: undefined\n events?: undefined\n args?: undefined\n strict?: undefined\n }\n )\n\nexport type WatchEventReturnType = () => void\n\nexport type WatchEventErrorType =\n | StringifyErrorType\n | ObserveErrorType\n | ErrorType\n\n/**\n * Watches and returns emitted [Event Logs](https://viem.sh/docs/glossary/terms#event-log).\n *\n * - Docs: https://viem.sh/docs/actions/public/watchEvent\n * - JSON-RPC Methods:\n * - **RPC Provider supports `eth_newFilter`:**\n * - Calls [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter) to create a filter (called on initialize).\n * - On a polling interval, it will call [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges).\n * - **RPC Provider does not support `eth_newFilter`:**\n * - Calls [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs) for each block between the polling interval.\n *\n * This Action will batch up all the Event Logs found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/actions/public/watchEvent#onLogs).\n *\n * `watchEvent` will attempt to create an [Event Filter](https://viem.sh/docs/actions/public/createEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead.\n *\n * @param client - Client to use\n * @param parameters - {@link WatchEventParameters}\n * @returns A function that can be invoked to stop watching for new Event Logs. {@link WatchEventReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { watchEvent } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = watchEvent(client, {\n * onLogs: (logs) => console.log(logs),\n * })\n */\nexport function watchEvent<\n chain extends Chain | undefined,\n const abiEvent extends AbiEvent | undefined = undefined,\n const abiEvents extends\n | readonly AbiEvent[]\n | readonly unknown[]\n | undefined = abiEvent extends AbiEvent ? [abiEvent] : undefined,\n strict extends boolean | undefined = undefined,\n transport extends Transport = Transport,\n _eventName extends string | undefined = undefined,\n>(\n client: Client<transport, chain>,\n {\n address,\n args,\n batch = true,\n event,\n events,\n fromBlock,\n onError,\n onLogs,\n poll: poll_,\n pollingInterval = client.pollingInterval,\n strict: strict_,\n }: WatchEventParameters<abiEvent, abiEvents, strict, transport>,\n): WatchEventReturnType {\n const enablePolling = (() => {\n if (typeof poll_ !== 'undefined') return poll_\n if (typeof fromBlock === 'bigint') return true\n if (client.transport.type === 'webSocket') return false\n if (\n client.transport.type === 'fallback' &&\n client.transport.transports[0].config.type === 'webSocket'\n )\n return false\n return true\n })()\n const strict = strict_ ?? false\n\n const pollEvent = () => {\n const observerId = stringify([\n 'watchEvent',\n address,\n args,\n batch,\n client.uid,\n event,\n pollingInterval,\n fromBlock,\n ])\n\n return observe(observerId, { onLogs, onError }, (emit) => {\n let previousBlockNumber: bigint\n if (fromBlock !== undefined) previousBlockNumber = fromBlock - 1n\n let filter: Filter<'event', abiEvents, _eventName, any>\n let initialized = false\n\n const unwatch = poll(\n async () => {\n if (!initialized) {\n try {\n filter = (await getAction(\n client,\n createEventFilter as any,\n 'createEventFilter',\n )({\n address,\n args,\n event: event!,\n events,\n strict,\n fromBlock,\n } as unknown as CreateEventFilterParameters)) as unknown as Filter<\n 'event',\n abiEvents,\n _eventName\n >\n } catch {}\n initialized = true\n return\n }\n\n try {\n let logs: Log[]\n if (filter) {\n logs = await getAction(\n client,\n getFilterChanges,\n 'getFilterChanges',\n )({ filter })\n } else {\n // If the filter doesn't exist, we will fall back to use `getLogs`.\n // The fall back exists because some RPC Providers do not support filters.\n\n // Fetch the block number to use for `getLogs`.\n const blockNumber = await getAction(\n client,\n getBlockNumber,\n 'getBlockNumber',\n )({})\n\n // If the block number has changed, we will need to fetch the logs.\n // If the block number doesn't exist, we are yet to reach the first poll interval,\n // so do not emit any logs.\n if (previousBlockNumber && previousBlockNumber !== blockNumber) {\n logs = await getAction(\n client,\n getLogs,\n 'getLogs',\n )({\n address,\n args,\n event: event!,\n events,\n fromBlock: previousBlockNumber + 1n,\n toBlock: blockNumber,\n } as unknown as GetLogsParameters)\n } else {\n logs = []\n }\n previousBlockNumber = blockNumber\n }\n\n if (logs.length === 0) return\n if (batch) emit.onLogs(logs as any)\n else for (const log of logs) emit.onLogs([log] as any)\n } catch (err) {\n // If a filter has been set and gets uninstalled, providers will throw an InvalidInput error.\n // Reinitialize the filter when this occurs\n if (filter && err instanceof InvalidInputRpcError)\n initialized = false\n emit.onError?.(err as Error)\n }\n },\n {\n emitOnBegin: true,\n interval: pollingInterval,\n },\n )\n\n return async () => {\n if (filter)\n await getAction(\n client,\n uninstallFilter,\n 'uninstallFilter',\n )({ filter })\n unwatch()\n }\n })\n }\n\n const subscribeEvent = () => {\n let active = true\n let unsubscribe = () => (active = false)\n ;(async () => {\n try {\n const transport = (() => {\n if (client.transport.type === 'fallback') {\n const transport = client.transport.transports.find(\n (transport: ReturnType<Transport>) =>\n transport.config.type === 'webSocket',\n )\n if (!transport) return client.transport\n return transport.value\n }\n return client.transport\n })()\n\n const events_ = events ?? (event ? [event] : undefined)\n let topics: LogTopic[] = []\n if (events_) {\n const encoded = (events_ as AbiEvent[]).flatMap((event) =>\n encodeEventTopics({\n abi: [event],\n eventName: (event as AbiEvent).name,\n args,\n } as EncodeEventTopicsParameters),\n )\n // TODO: Clean up type casting\n topics = [encoded as LogTopic]\n if (event) topics = topics[0] as LogTopic[]\n }\n\n const { unsubscribe: unsubscribe_ } = await transport.subscribe({\n params: ['logs', { address, topics }],\n onData(data: any) {\n if (!active) return\n const log = data.result\n try {\n const { eventName, args } = decodeEventLog({\n abi: events_ ?? [],\n data: log.data,\n topics: log.topics,\n strict,\n })\n const formatted = formatLog(log, { args, eventName })\n onLogs([formatted] as any)\n } catch (err) {\n let eventName: string | undefined\n let isUnnamed: boolean | undefined\n if (\n err instanceof DecodeLogDataMismatch ||\n err instanceof DecodeLogTopicsMismatch\n ) {\n // If strict mode is on, and log data/topics do not match event definition, skip.\n if (strict_) return\n eventName = err.abiItem.name\n isUnnamed = err.abiItem.inputs?.some(\n (x) => !('name' in x && x.name),\n )\n }\n\n // Set args to empty if there is an error decoding (e.g. indexed/non-indexed params mismatch).\n const formatted = formatLog(log, {\n args: isUnnamed ? [] : {},\n eventName,\n })\n onLogs([formatted] as any)\n }\n },\n onError(error: Error) {\n onError?.(error)\n },\n })\n unsubscribe = unsubscribe_\n if (!active) unsubscribe()\n } catch (err) {\n onError?.(err as Error)\n }\n })()\n return () => unsubscribe()\n }\n\n return enablePolling ? pollEvent() : subscribeEvent()\n}\n","import type { Client } from '../../clients/createClient.js'\nimport type { Transport } from '../../clients/transports/createTransport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { Filter } from '../../types/filter.js'\nimport type { Hash } from '../../types/misc.js'\nimport type { GetPollOptions } from '../../types/transport.js'\nimport { getAction } from '../../utils/getAction.js'\nimport { type ObserveErrorType, observe } from '../../utils/observe.js'\nimport { poll } from '../../utils/poll.js'\nimport { type StringifyErrorType, stringify } from '../../utils/stringify.js'\n\nimport { createPendingTransactionFilter } from './createPendingTransactionFilter.js'\nimport { getFilterChanges } from './getFilterChanges.js'\nimport { uninstallFilter } from './uninstallFilter.js'\n\nexport type OnTransactionsParameter = Hash[]\nexport type OnTransactionsFn = (transactions: OnTransactionsParameter) => void\n\nexport type WatchPendingTransactionsParameters<\n transport extends Transport = Transport,\n> = {\n /** The callback to call when an error occurred when trying to get for a new block. */\n onError?: ((error: Error) => void) | undefined\n /** The callback to call when new transactions are received. */\n onTransactions: OnTransactionsFn\n} & GetPollOptions<transport>\n\nexport type WatchPendingTransactionsReturnType = () => void\n\nexport type WatchPendingTransactionsErrorType =\n | StringifyErrorType\n | ObserveErrorType\n | ErrorType\n\n/**\n * Watches and returns pending transaction hashes.\n *\n * - Docs: https://viem.sh/docs/actions/public/watchPendingTransactions\n * - JSON-RPC Methods:\n * - When `poll: true`\n * - Calls [`eth_newPendingTransactionFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter) to initialize the filter.\n * - Calls [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getFilterChanges) on a polling interval.\n * - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `\"newPendingTransactions\"` event.\n *\n * This Action will batch up all the pending transactions found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchPendingTransactions#pollinginterval-optional), and invoke them via [`onTransactions`](https://viem.sh/docs/actions/public/watchPendingTransactions#ontransactions).\n *\n * @param client - Client to use\n * @param parameters - {@link WatchPendingTransactionsParameters}\n * @returns A function that can be invoked to stop watching for new pending transaction hashes. {@link WatchPendingTransactionsReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { watchPendingTransactions } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = await watchPendingTransactions(client, {\n * onTransactions: (hashes) => console.log(hashes),\n * })\n */\nexport function watchPendingTransactions<\n transport extends Transport,\n chain extends Chain | undefined,\n>(\n client: Client<transport, chain>,\n {\n batch = true,\n onError,\n onTransactions,\n poll: poll_,\n pollingInterval = client.pollingInterval,\n }: WatchPendingTransactionsParameters<transport>,\n) {\n const enablePolling =\n typeof poll_ !== 'undefined' ? poll_ : client.transport.type !== 'webSocket'\n\n const pollPendingTransactions = () => {\n const observerId = stringify([\n 'watchPendingTransactions',\n client.uid,\n batch,\n pollingInterval,\n ])\n return observe(observerId, { onTransactions, onError }, (emit) => {\n let filter: Filter<'transaction'>\n\n const unwatch = poll(\n async () => {\n try {\n if (!filter) {\n try {\n filter = await getAction(\n client,\n createPendingTransactionFilter,\n 'createPendingTransactionFilter',\n )({})\n return\n } catch (err) {\n unwatch()\n throw err\n }\n }\n\n const hashes = await getAction(\n client,\n getFilterChanges,\n 'getFilterChanges',\n )({ filter })\n if (hashes.length === 0) return\n if (batch) emit.onTransactions(hashes)\n else for (const hash of hashes) emit.onTransactions([hash])\n } catch (err) {\n emit.onError?.(err as Error)\n }\n },\n {\n emitOnBegin: true,\n interval: pollingInterval,\n },\n )\n\n return async () => {\n if (filter)\n await getAction(\n client,\n uninstallFilter,\n 'uninstallFilter',\n )({ filter })\n unwatch()\n }\n })\n }\n\n const subscribePendingTransactions = () => {\n let active = true\n let unsubscribe = () => (active = false)\n ;(async () => {\n try {\n const { unsubscribe: unsubscribe_ } = await client.transport.subscribe({\n params: ['newPendingTransactions'],\n onData(data: any) {\n if (!active) return\n const transaction = data.result\n onTransactions([transaction])\n },\n onError(error: Error) {\n onError?.(error)\n },\n })\n unsubscribe = unsubscribe_\n if (!active) unsubscribe()\n } catch (err) {\n onError?.(err as Error)\n }\n })()\n return () => unsubscribe()\n }\n\n return enablePolling\n ? pollPendingTransactions()\n : subscribePendingTransactions()\n}\n","import { LruMap } from '../lru.js'\n\n/** @internal */\nexport const promiseCache = /*#__PURE__*/ new LruMap<Promise<any>>(8192)\n\ntype WithDedupeOptions = {\n enabled?: boolean | undefined\n id?: string | undefined\n}\n\n/** Deduplicates in-flight promises. */\nexport function withDedupe<data>(\n fn: () => Promise<data>,\n { enabled = true, id }: WithDedupeOptions,\n): Promise<data> {\n if (!enabled || !id) return fn()\n if (promiseCache.get(id)) return promiseCache.get(id)!\n const promise = fn().finally(() => promiseCache.delete(id))\n promiseCache.set(id, promise)\n return promise\n}\n","import { BaseError } from '../errors/base.js'\nimport {\n HttpRequestError,\n type HttpRequestErrorType,\n type RpcRequestErrorType,\n type TimeoutErrorType,\n type WebSocketRequestErrorType,\n} from '../errors/request.js'\nimport {\n ChainDisconnectedError,\n type ChainDisconnectedErrorType,\n InternalRpcError,\n type InternalRpcErrorType,\n InvalidInputRpcError,\n type InvalidInputRpcErrorType,\n InvalidParamsRpcError,\n type InvalidParamsRpcErrorType,\n InvalidRequestRpcError,\n type InvalidRequestRpcErrorType,\n JsonRpcVersionUnsupportedError,\n type JsonRpcVersionUnsupportedErrorType,\n LimitExceededRpcError,\n type LimitExceededRpcErrorType,\n MethodNotFoundRpcError,\n type MethodNotFoundRpcErrorType,\n MethodNotSupportedRpcError,\n type MethodNotSupportedRpcErrorType,\n ParseRpcError,\n type ParseRpcErrorType,\n ProviderDisconnectedError,\n type ProviderDisconnectedErrorType,\n type ProviderRpcErrorCode,\n ResourceNotFoundRpcError,\n type ResourceNotFoundRpcErrorType,\n ResourceUnavailableRpcError,\n type ResourceUnavailableRpcErrorType,\n type RpcError,\n type RpcErrorCode,\n type RpcErrorType,\n SwitchChainError,\n type SwitchChainErrorType,\n TransactionRejectedRpcError,\n type TransactionRejectedRpcErrorType,\n UnauthorizedProviderError,\n type UnauthorizedProviderErrorType,\n UnknownRpcError,\n type UnknownRpcErrorType,\n UnsupportedProviderMethodError,\n type UnsupportedProviderMethodErrorType,\n UserRejectedRequestError,\n type UserRejectedRequestErrorType,\n} from '../errors/rpc.js'\nimport type { ErrorType } from '../errors/utils.js'\nimport type {\n EIP1193RequestFn,\n EIP1193RequestOptions,\n} from '../types/eip1193.js'\nimport { stringToHex } from './encoding/toHex.js'\nimport { keccak256 } from './hash/keccak256.js'\nimport type { CreateBatchSchedulerErrorType } from './promise/createBatchScheduler.js'\nimport { withDedupe } from './promise/withDedupe.js'\nimport { type WithRetryErrorType, withRetry } from './promise/withRetry.js'\nimport type { GetSocketRpcClientErrorType } from './rpc/socket.js'\nimport { stringify } from './stringify.js'\n\nexport type RequestErrorType =\n | ChainDisconnectedErrorType\n | CreateBatchSchedulerErrorType\n | HttpRequestErrorType\n | InternalRpcErrorType\n | InvalidInputRpcErrorType\n | InvalidParamsRpcErrorType\n | InvalidRequestRpcErrorType\n | GetSocketRpcClientErrorType\n | JsonRpcVersionUnsupportedErrorType\n | LimitExceededRpcErrorType\n | MethodNotFoundRpcErrorType\n | MethodNotSupportedRpcErrorType\n | ParseRpcErrorType\n | ProviderDisconnectedErrorType\n | ResourceNotFoundRpcErrorType\n | ResourceUnavailableRpcErrorType\n | RpcErrorType\n | RpcRequestErrorType\n | SwitchChainErrorType\n | TimeoutErrorType\n | TransactionRejectedRpcErrorType\n | UnauthorizedProviderErrorType\n | UnknownRpcErrorType\n | UnsupportedProviderMethodErrorType\n | UserRejectedRequestErrorType\n | WebSocketRequestErrorType\n | WithRetryErrorType\n | ErrorType\n\nexport function buildRequest<request extends (args: any) => Promise<any>>(\n request: request,\n options: EIP1193RequestOptions = {},\n): EIP1193RequestFn {\n return async (args, overrideOptions = {}) => {\n const {\n dedupe = false,\n retryDelay = 150,\n retryCount = 3,\n uid,\n } = {\n ...options,\n ...overrideOptions,\n }\n const requestId = dedupe\n ? keccak256(stringToHex(`${uid}.${stringify(args)}`))\n : undefined\n return withDedupe(\n () =>\n withRetry(\n async () => {\n try {\n return await request(args)\n } catch (err_) {\n const err = err_ as unknown as RpcError<\n RpcErrorCode | ProviderRpcErrorCode\n >\n switch (err.code) {\n // -32700\n case ParseRpcError.code:\n throw new ParseRpcError(err)\n // -32600\n case InvalidRequestRpcError.code:\n throw new InvalidRequestRpcError(err)\n // -32601\n case MethodNotFoundRpcError.code:\n throw new MethodNotFoundRpcError(err, { method: args.method })\n // -32602\n case InvalidParamsRpcError.code:\n throw new InvalidParamsRpcError(err)\n // -32603\n case InternalRpcError.code:\n throw new InternalRpcError(err)\n // -32000\n case InvalidInputRpcError.code:\n throw new InvalidInputRpcError(err)\n // -32001\n case ResourceNotFoundRpcError.code:\n throw new ResourceNotFoundRpcError(err)\n // -32002\n case ResourceUnavailableRpcError.code:\n throw new ResourceUnavailableRpcError(err)\n // -32003\n case TransactionRejectedRpcError.code:\n throw new TransactionRejectedRpcError(err)\n // -32004\n case MethodNotSupportedRpcError.code:\n throw new MethodNotSupportedRpcError(err, {\n method: args.method,\n })\n // -32005\n case LimitExceededRpcError.code:\n throw new LimitExceededRpcError(err)\n // -32006\n case JsonRpcVersionUnsupportedError.code:\n throw new JsonRpcVersionUnsupportedError(err)\n // 4001\n case UserRejectedRequestError.code:\n throw new UserRejectedRequestError(err)\n // 4100\n case UnauthorizedProviderError.code:\n throw new UnauthorizedProviderError(err)\n // 4200\n case UnsupportedProviderMethodError.code:\n throw new UnsupportedProviderMethodError(err)\n // 4900\n case ProviderDisconnectedError.code:\n throw new ProviderDisconnectedError(err)\n // 4901\n case ChainDisconnectedError.code:\n throw new ChainDisconnectedError(err)\n // 4902\n case SwitchChainError.code:\n throw new SwitchChainError(err)\n // CAIP-25: User Rejected Error\n // https://docs.walletconnect.com/2.0/specs/clients/sign/error-codes#rejected-caip-25\n case 5000:\n throw new UserRejectedRequestError(err)\n default:\n if (err_ instanceof BaseError) throw err_\n throw new UnknownRpcError(err as Error)\n }\n }\n },\n {\n delay: ({ count, error }) => {\n // If we find a Retry-After header, let's retry after the given time.\n if (error && error instanceof HttpRequestError) {\n const retryAfter = error?.headers?.get('Retry-After')\n if (retryAfter?.match(/\\d/))\n return Number.parseInt(retryAfter) * 1000\n }\n\n // Otherwise, let's retry with an exponential backoff.\n return ~~(1 << count) * retryDelay\n },\n retryCount,\n shouldRetry: ({ error }) => shouldRetry(error),\n },\n ),\n { enabled: dedupe, id: requestId },\n )\n }\n}\n\n/** @internal */\nexport function shouldRetry(error: Error) {\n if ('code' in error && typeof error.code === 'number') {\n if (error.code === -1) return true // Unknown error\n if (error.code === LimitExceededRpcError.code) return true\n if (error.code === InternalRpcError.code) return true\n return false\n }\n if (error instanceof HttpRequestError && error.status) {\n // Forbidden\n if (error.status === 403) return true\n // Request Timeout\n if (error.status === 408) return true\n // Request Entity Too Large\n if (error.status === 413) return true\n // Too Many Requests\n if (error.status === 429) return true\n // Internal Server Error\n if (error.status === 500) return true\n // Bad Gateway\n if (error.status === 502) return true\n // Service Unavailable\n if (error.status === 503) return true\n // Gateway Timeout\n if (error.status === 504) return true\n return false\n }\n return true\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { EIP1193RequestFn } from '../../types/eip1193.js'\nimport { buildRequest } from '../../utils/buildRequest.js'\nimport { uid as uid_ } from '../../utils/uid.js'\nimport type { ClientConfig } from '../createClient.js'\n\nexport type TransportConfig<\n type extends string = string,\n eip1193RequestFn extends EIP1193RequestFn = EIP1193RequestFn,\n> = {\n /** The name of the transport. */\n name: string\n /** The key of the transport. */\n key: string\n /** The JSON-RPC request function that matches the EIP-1193 request spec. */\n request: eip1193RequestFn\n /** The base delay (in ms) between retries. */\n retryDelay?: number | undefined\n /** The max number of times to retry. */\n retryCount?: number | undefined\n /** The timeout (in ms) for requests. */\n timeout?: number | undefined\n /** The type of the transport. */\n type: type\n}\n\nexport type Transport<\n type extends string = string,\n rpcAttributes = Record<string, any>,\n eip1193RequestFn extends EIP1193RequestFn = EIP1193RequestFn,\n> = <chain extends Chain | undefined = Chain>({\n chain,\n}: {\n chain?: chain | undefined\n pollingInterval?: ClientConfig['pollingInterval'] | undefined\n retryCount?: TransportConfig['retryCount'] | undefined\n timeout?: TransportConfig['timeout'] | undefined\n}) => {\n config: TransportConfig<type>\n request: eip1193RequestFn\n value?: rpcAttributes | undefined\n}\n\nexport type CreateTransportErrorType = ErrorType\n\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport<\n type extends string,\n rpcAttributes extends Record<string, any>,\n>(\n {\n key,\n name,\n request,\n retryCount = 3,\n retryDelay = 150,\n timeout,\n type,\n }: TransportConfig<type>,\n value?: rpcAttributes | undefined,\n): ReturnType<Transport<type, rpcAttributes>> {\n const uid = uid_()\n return {\n config: {\n key,\n name,\n request,\n retryCount,\n retryDelay,\n timeout,\n type,\n },\n request: buildRequest(request, { retryCount, retryDelay, uid }),\n value,\n }\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport {\n type CreateTransportErrorType,\n type Transport,\n type TransportConfig,\n createTransport,\n} from './createTransport.js'\n\ntype EthereumProvider = { request(...args: any): Promise<any> }\n\nexport type CustomTransportConfig = {\n /** The key of the transport. */\n key?: TransportConfig['key'] | undefined\n /** The name of the transport. */\n name?: TransportConfig['name'] | undefined\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount'] | undefined\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay'] | undefined\n}\n\nexport type CustomTransport = Transport<\n 'custom',\n {},\n EthereumProvider['request']\n>\n\nexport type CustomTransportErrorType = CreateTransportErrorType | ErrorType\n\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom<provider extends EthereumProvider>(\n provider: provider,\n config: CustomTransportConfig = {},\n): CustomTransport {\n const { key = 'custom', name = 'Custom Provider', retryDelay } = config\n return ({ retryCount: defaultRetryCount }) =>\n createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n retryCount: config.retryCount ?? defaultRetryCount,\n retryDelay,\n type: 'custom',\n })\n}\n","import { BaseError } from './base.js'\n\nexport type UrlRequiredErrorType = UrlRequiredError & {\n name: 'UrlRequiredError'\n}\nexport class UrlRequiredError extends BaseError {\n constructor() {\n super(\n 'No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.',\n {\n docsPath: '/docs/clients/intro',\n name: 'UrlRequiredError',\n },\n )\n }\n}\n","function createIdStore() {\n return {\n current: 0,\n take() {\n return this.current++\n },\n reset() {\n this.current = 0\n },\n }\n}\n\nexport const idCache = /*#__PURE__*/ createIdStore()\n","import {\n HttpRequestError,\n type HttpRequestErrorType as HttpRequestErrorType_,\n TimeoutError,\n type TimeoutErrorType,\n} from '../../errors/request.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { RpcRequest, RpcResponse } from '../../types/rpc.js'\nimport type { MaybePromise } from '../../types/utils.js'\nimport {\n type WithTimeoutErrorType,\n withTimeout,\n} from '../promise/withTimeout.js'\nimport { stringify } from '../stringify.js'\nimport { idCache } from './id.js'\n\nexport type HttpRpcClientOptions = {\n /** Request configuration to pass to `fetch`. */\n fetchOptions?: Omit<RequestInit, 'body'> | undefined\n /** A callback to handle the request. */\n onRequest?:\n | ((\n request: Request,\n init: RequestInit,\n ) => MaybePromise<\n void | undefined | (RequestInit & { url?: string | undefined })\n >)\n | undefined\n /** A callback to handle the response. */\n onResponse?: ((response: Response) => Promise<void> | void) | undefined\n /** The timeout (in ms) for the request. */\n timeout?: number | undefined\n}\n\nexport type HttpRequestParameters<\n body extends RpcRequest | RpcRequest[] = RpcRequest,\n> = {\n /** The RPC request body. */\n body: body\n /** Request configuration to pass to `fetch`. */\n fetchOptions?: HttpRpcClientOptions['fetchOptions'] | undefined\n /** A callback to handle the response. */\n onRequest?:\n | ((\n request: Request,\n init: RequestInit,\n ) => MaybePromise<\n void | undefined | (RequestInit & { url?: string | undefined })\n >)\n | undefined\n /** A callback to handle the response. */\n onResponse?: ((response: Response) => Promise<void> | void) | undefined\n /** The timeout (in ms) for the request. */\n timeout?: HttpRpcClientOptions['timeout'] | undefined\n}\n\nexport type HttpRequestReturnType<\n body extends RpcRequest | RpcRequest[] = RpcRequest,\n> = body extends RpcRequest[] ? RpcResponse[] : RpcResponse\n\nexport type HttpRequestErrorType =\n | HttpRequestErrorType_\n | TimeoutErrorType\n | WithTimeoutErrorType\n | ErrorType\n\nexport type HttpRpcClient = {\n request<body extends RpcRequest | RpcRequest[]>(\n params: HttpRequestParameters<body>,\n ): Promise<HttpRequestReturnType<body>>\n}\n\nexport function getHttpRpcClient(\n url: string,\n options: HttpRpcClientOptions = {},\n): HttpRpcClient {\n return {\n async request(params) {\n const {\n body,\n onRequest = options.onRequest,\n onResponse = options.onResponse,\n timeout = options.timeout ?? 10_000,\n } = params\n\n const fetchOptions = {\n ...(options.fetchOptions ?? {}),\n ...(params.fetchOptions ?? {}),\n }\n\n const { headers, method, signal: signal_ } = fetchOptions\n\n try {\n const response = await withTimeout(\n async ({ signal }) => {\n const init: RequestInit = {\n ...fetchOptions,\n body: Array.isArray(body)\n ? stringify(\n body.map((body) => ({\n jsonrpc: '2.0',\n id: body.id ?? idCache.take(),\n ...body,\n })),\n )\n : stringify({\n jsonrpc: '2.0',\n id: body.id ?? idCache.take(),\n ...body,\n }),\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n method: method || 'POST',\n signal: signal_ || (timeout > 0 ? signal : null),\n }\n const request = new Request(url, init)\n const args = (await onRequest?.(request, init)) ?? { ...init, url }\n const response = await fetch(args.url ?? url, args)\n return response\n },\n {\n errorInstance: new TimeoutError({ body, url }),\n timeout,\n signal: true,\n },\n )\n\n if (onResponse) await onResponse(response)\n\n let data: any\n if (\n response.headers.get('Content-Type')?.startsWith('application/json')\n )\n data = await response.json()\n else {\n data = await response.text()\n try {\n data = JSON.parse(data || '{}')\n } catch (err) {\n if (response.ok) throw err\n data = { error: data }\n }\n }\n\n if (!response.ok) {\n throw new HttpRequestError({\n body,\n details: stringify(data.error) || response.statusText,\n headers: response.headers,\n status: response.status,\n url,\n })\n }\n\n return data\n } catch (err) {\n if (err instanceof HttpRequestError) throw err\n if (err instanceof TimeoutError) throw err\n throw new HttpRequestError({\n body,\n cause: err as Error,\n url,\n })\n }\n },\n }\n}\n","import type { ErrorType } from '../../errors/utils.js'\n\nexport type WithTimeoutErrorType = ErrorType\n\nexport function withTimeout<data>(\n fn: ({\n signal,\n }: { signal: AbortController['signal'] | null }) => Promise<data>,\n {\n errorInstance = new Error('timed out'),\n timeout,\n signal,\n }: {\n // The error instance to throw when the timeout is reached.\n errorInstance?: Error | undefined\n // The timeout (in ms).\n timeout: number\n // Whether or not the timeout should use an abort signal.\n signal?: boolean | undefined\n },\n): Promise<data> {\n return new Promise((resolve, reject) => {\n ;(async () => {\n let timeoutId!: NodeJS.Timeout\n try {\n const controller = new AbortController()\n if (timeout > 0) {\n timeoutId = setTimeout(() => {\n if (signal) {\n controller.abort()\n } else {\n reject(errorInstance)\n }\n }, timeout) as NodeJS.Timeout // need to cast because bun globals.d.ts overrides @types/node\n }\n resolve(await fn({ signal: controller?.signal || null }))\n } catch (err) {\n if ((err as Error)?.name === 'AbortError') reject(errorInstance)\n reject(err)\n } finally {\n clearTimeout(timeoutId)\n }\n })()\n })\n}\n","import { RpcRequestError } from '../../errors/request.js'\nimport {\n UrlRequiredError,\n type UrlRequiredErrorType,\n} from '../../errors/transport.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { RpcRequest } from '../../types/rpc.js'\nimport { createBatchScheduler } from '../../utils/promise/createBatchScheduler.js'\nimport {\n type HttpRpcClientOptions,\n getHttpRpcClient,\n} from '../../utils/rpc/http.js'\n\nimport {\n type CreateTransportErrorType,\n type Transport,\n type TransportConfig,\n createTransport,\n} from './createTransport.js'\n\nexport type HttpTransportConfig = {\n /**\n * Whether to enable Batch JSON-RPC.\n * @link https://www.jsonrpc.org/specification#batch\n */\n batch?:\n | boolean\n | {\n /** The maximum number of JSON-RPC requests to send in a batch. @default 1_000 */\n batchSize?: number | undefined\n /** The maximum number of milliseconds to wait before sending a batch. @default 0 */\n wait?: number | undefined\n }\n | undefined\n /**\n * Request configuration to pass to `fetch`.\n * @link https://developer.mozilla.org/en-US/docs/Web/API/fetch\n */\n fetchOptions?: HttpRpcClientOptions['fetchOptions'] | undefined\n /** A callback to handle the response from `fetch`. */\n onFetchRequest?: HttpRpcClientOptions['onRequest'] | undefined\n /** A callback to handle the response from `fetch`. */\n onFetchResponse?: HttpRpcClientOptions['onResponse'] | undefined\n /** The key of the HTTP transport. */\n key?: TransportConfig['key'] | undefined\n /** The name of the HTTP transport. */\n name?: TransportConfig['name'] | undefined\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount'] | undefined\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay'] | undefined\n /** The timeout (in ms) for the HTTP request. Default: 10_000 */\n timeout?: TransportConfig['timeout'] | undefined\n}\n\nexport type HttpTransport = Transport<\n 'http',\n {\n fetchOptions?: HttpTransportConfig['fetchOptions'] | undefined\n url?: string | undefined\n }\n>\n\nexport type HttpTransportErrorType =\n | CreateTransportErrorType\n | UrlRequiredErrorType\n | ErrorType\n\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string | undefined,\n config: HttpTransportConfig = {},\n): HttpTransport {\n const {\n batch,\n fetchOptions,\n key = 'http',\n name = 'HTTP JSON-RPC',\n onFetchRequest,\n onFetchResponse,\n retryDelay,\n } = config\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const { batchSize = 1000, wait = 0 } =\n typeof batch === 'object' ? batch : {}\n const retryCount = config.retryCount ?? retryCount_\n const timeout = timeout_ ?? config.timeout ?? 10_000\n const url_ = url || chain?.rpcUrls.default.http[0]\n if (!url_) throw new UrlRequiredError()\n\n const rpcClient = getHttpRpcClient(url_, {\n fetchOptions,\n onRequest: onFetchRequest,\n onResponse: onFetchResponse,\n timeout,\n })\n\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const body = { method, params }\n\n const { schedule } = createBatchScheduler({\n id: url_,\n wait,\n shouldSplitBatch(requests) {\n return requests.length > batchSize\n },\n fn: (body: RpcRequest[]) =>\n rpcClient.request({\n body,\n }),\n sort: (a, b) => a.id - b.id,\n })\n\n const fn = async (body: RpcRequest) =>\n batch\n ? schedule(body)\n : [\n await rpcClient.request({\n body,\n }),\n ]\n\n const [{ error, result }] = await fn(body)\n if (error)\n throw new RpcRequestError({\n body,\n error,\n url: url_,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'http',\n },\n {\n fetchOptions,\n url: url_,\n },\n )\n }\n}\n","/* [Multicall3](https://github.com/mds1/multicall) */\nexport const multicall3Abi = [\n {\n inputs: [\n {\n components: [\n {\n name: 'target',\n type: 'address',\n },\n {\n name: 'allowFailure',\n type: 'bool',\n },\n {\n name: 'callData',\n type: 'bytes',\n },\n ],\n name: 'calls',\n type: 'tuple[]',\n },\n ],\n name: 'aggregate3',\n outputs: [\n {\n components: [\n {\n name: 'success',\n type: 'bool',\n },\n {\n name: 'returnData',\n type: 'bytes',\n },\n ],\n name: 'returnData',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n\nconst universalResolverErrors = [\n {\n inputs: [],\n name: 'ResolverNotFound',\n type: 'error',\n },\n {\n inputs: [],\n name: 'ResolverWildcardNotSupported',\n type: 'error',\n },\n {\n inputs: [],\n name: 'ResolverNotContract',\n type: 'error',\n },\n {\n inputs: [\n {\n name: 'returnData',\n type: 'bytes',\n },\n ],\n name: 'ResolverError',\n type: 'error',\n },\n {\n inputs: [\n {\n components: [\n {\n name: 'status',\n type: 'uint16',\n },\n {\n name: 'message',\n type: 'string',\n },\n ],\n name: 'errors',\n type: 'tuple[]',\n },\n ],\n name: 'HttpError',\n type: 'error',\n },\n] as const\n\nexport const universalResolverResolveAbi = [\n ...universalResolverErrors,\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n { name: 'gateways', type: 'string[]' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n] as const\n\nexport const universalResolverReverseAbi = [\n ...universalResolverErrors,\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ type: 'bytes', name: 'reverseName' }],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { type: 'bytes', name: 'reverseName' },\n { type: 'string[]', name: 'gateways' },\n ],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n] as const\n\nexport const textResolverAbi = [\n {\n name: 'text',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes32' },\n { name: 'key', type: 'string' },\n ],\n outputs: [{ name: '', type: 'string' }],\n },\n] as const\n\nexport const addressResolverAbi = [\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'name', type: 'bytes32' }],\n outputs: [{ name: '', type: 'address' }],\n },\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes32' },\n { name: 'coinType', type: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bytes' }],\n },\n] as const\n\n// ERC-1271\n// isValidSignature(bytes32 hash, bytes signature) → bytes4 magicValue\n/** @internal */\nexport const smartAccountAbi = [\n {\n name: 'isValidSignature',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'hash', type: 'bytes32' },\n { name: 'signature', type: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4' }],\n },\n] as const\n\n// ERC-6492 - universal deployless signature validator contract\n// constructor(address _signer, bytes32 _hash, bytes _signature) → bytes4 returnValue\n// returnValue is either 0x1 (valid) or 0x0 (invalid)\nexport const universalSignatureValidatorAbi = [\n {\n inputs: [\n {\n name: '_signer',\n type: 'address',\n },\n {\n name: '_hash',\n type: 'bytes32',\n },\n {\n name: '_signature',\n type: 'bytes',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n {\n inputs: [\n {\n name: '_signer',\n type: 'address',\n },\n {\n name: '_hash',\n type: 'bytes32',\n },\n {\n name: '_signature',\n type: 'bytes',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n name: 'isValidSig',\n },\n] as const\n\n/** [ERC-20 Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-20) */\nexport const erc20Abi = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'allowance',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'decimals',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint8',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transfer',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n] as const\n\n/**\n * [bytes32-flavored ERC-20](https://docs.makerdao.com/smart-contract-modules/mkr-module#4.-gotchas-potential-source-of-user-error)\n * for tokens (ie. Maker) that use bytes32 instead of string.\n */\nexport const erc20Abi_bytes32 = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'allowance',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'decimals',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint8',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'bytes32',\n },\n ],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'bytes32',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transfer',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n] as const\n\n/** [ERC-721 Non-Fungible Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-721) */\nexport const erc721Abi = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'ApprovalForAll',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'operator',\n type: 'address',\n },\n {\n indexed: false,\n name: 'approved',\n type: 'bool',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: true,\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'getApproved',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'address',\n },\n ],\n },\n {\n type: 'function',\n name: 'isApprovedForAll',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'operator',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'ownerOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'id',\n type: 'uint256',\n },\n {\n name: 'data',\n type: 'bytes',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'setApprovalForAll',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'operator',\n type: 'address',\n },\n {\n name: 'approved',\n type: 'bool',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenByIndex',\n stateMutability: 'view',\n inputs: [\n {\n name: 'index',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenByIndex',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'index',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenURI',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'tokeId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n] as const\n\n/** [ERC-4626 Tokenized Vaults Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-4626) */\nexport const erc4626Abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'Approval',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'receiver',\n type: 'address',\n },\n {\n indexed: false,\n name: 'assets',\n type: 'uint256',\n },\n {\n indexed: false,\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'Deposit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'Transfer',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'receiver',\n type: 'address',\n },\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: false,\n name: 'assets',\n type: 'uint256',\n },\n {\n indexed: false,\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'Withdraw',\n type: 'event',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n name: 'allowance',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'approve',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'asset',\n outputs: [\n {\n name: 'assetTokenAddress',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'convertToAssets',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'convertToShares',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n ],\n name: 'deposit',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'caller',\n type: 'address',\n },\n ],\n name: 'maxDeposit',\n outputs: [\n {\n name: 'maxAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'caller',\n type: 'address',\n },\n ],\n name: 'maxMint',\n outputs: [\n {\n name: 'maxShares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'maxRedeem',\n outputs: [\n {\n name: 'maxShares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'maxWithdraw',\n outputs: [\n {\n name: 'maxAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n ],\n name: 'mint',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'previewDeposit',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'previewMint',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'previewRedeem',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'previewWithdraw',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'redeem',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalAssets',\n outputs: [\n {\n name: 'totalManagedAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalSupply',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transfer',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transferFrom',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'withdraw',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n","export const deploylessCallViaBytecodeBytecode =\n '0x608060405234801561001057600080fd5b5060405161018e38038061018e83398101604081905261002f91610124565b6000808351602085016000f59050803b61004857600080fd5b6000808351602085016000855af16040513d6000823e81610067573d81fd5b3d81f35b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009257600080fd5b81516001600160401b038111156100ab576100ab61006b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d9576100d961006b565b6040528181528382016020018510156100f157600080fd5b60005b82811015610110576020818601810151838301820152016100f4565b506000918101602001919091529392505050565b6000806040838503121561013757600080fd5b82516001600160401b0381111561014d57600080fd5b61015985828601610081565b602085015190935090506001600160401b0381111561017757600080fd5b61018385828601610081565b915050925092905056fe'\n\nexport const deploylessCallViaFactoryBytecode =\n '0x608060405234801561001057600080fd5b506040516102c03803806102c083398101604081905261002f916101e6565b836001600160a01b03163b6000036100e457600080836001600160a01b03168360405161005c9190610270565b6000604051808303816000865af19150503d8060008114610099576040519150601f19603f3d011682016040523d82523d6000602084013e61009e565b606091505b50915091508115806100b857506001600160a01b0386163b155b156100e1578060405163101bb98d60e01b81526004016100d8919061028c565b60405180910390fd5b50505b6000808451602086016000885af16040513d6000823e81610103573d81fd5b3d81f35b80516001600160a01b038116811461011e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561015457818101518382015260200161013c565b50506000910152565b600082601f83011261016e57600080fd5b81516001600160401b0381111561018757610187610123565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101b5576101b5610123565b6040528181528382016020018510156101cd57600080fd5b6101de826020830160208701610139565b949350505050565b600080600080608085870312156101fc57600080fd5b61020585610107565b60208601519094506001600160401b0381111561022157600080fd5b61022d8782880161015d565b93505061023c60408601610107565b60608601519092506001600160401b0381111561025857600080fd5b6102648782880161015d565b91505092959194509250565b60008251610282818460208701610139565b9190910192915050565b60208152600082518060208401526102ab816040850160208701610139565b601f01601f1916919091016040019291505056fe'\n\nexport const universalSignatureValidatorByteCode =\n '0x608060405234801561001057600080fd5b5060405161069438038061069483398101604081905261002f9161051e565b600061003c848484610048565b9050806000526001601ff35b60007f64926492649264926492649264926492649264926492649264926492649264926100748361040c565b036101e7576000606080848060200190518101906100929190610577565b60405192955090935091506000906001600160a01b038516906100b69085906105dd565b6000604051808303816000865af19150503d80600081146100f3576040519150601f19603f3d011682016040523d82523d6000602084013e6100f8565b606091505b50509050876001600160a01b03163b60000361016057806101605760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90610190908b9087906004016105f9565b602060405180830381865afa1580156101ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d19190610633565b6001600160e01b03191614945050505050610405565b6001600160a01b0384163b1561027a57604051630b135d3f60e11b808252906001600160a01b03861690631626ba7e9061022790879087906004016105f9565b602060405180830381865afa158015610244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102689190610633565b6001600160e01b031916149050610405565b81516041146102df5760405162461bcd60e51b815260206004820152603a602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e6774680000000000006064820152608401610157565b6102e7610425565b5060208201516040808401518451859392600091859190811061030c5761030c61065d565b016020015160f81c9050601b811480159061032b57508060ff16601c14155b1561038c5760405162461bcd60e51b815260206004820152603b602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c756500000000006064820152608401610157565b60408051600081526020810180835289905260ff83169181019190915260608101849052608081018390526001600160a01b0389169060019060a0016020604051602081039080840390855afa1580156103ea573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149450505050505b9392505050565b600060208251101561041d57600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b038116811461045857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561048c578181015183820152602001610474565b50506000910152565b600082601f8301126104a657600080fd5b81516001600160401b038111156104bf576104bf61045b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045b565b60405281815283820160200185101561050557600080fd5b610516826020830160208701610471565b949350505050565b60008060006060848603121561053357600080fd5b835161053e81610443565b6020850151604086015191945092506001600160401b0381111561056157600080fd5b61056d86828701610495565b9150509250925092565b60008060006060848603121561058c57600080fd5b835161059781610443565b60208501519093506001600160401b038111156105b357600080fd5b6105bf86828701610495565b604086015190935090506001600160401b0381111561056157600080fd5b600082516105ef818460208701610471565b9190910192915050565b828152604060208201526000825180604084015261061e816060850160208701610471565b601f01601f1916919091016060019392505050565b60006020828403121561064557600080fd5b81516001600160e01b03198116811461040557600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572'\n","// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-4844.md#parameters\n\nexport const versionedHashVersionKzg = 1\n","export const maxInt8 = 2n ** (8n - 1n) - 1n\nexport const maxInt16 = 2n ** (16n - 1n) - 1n\nexport const maxInt24 = 2n ** (24n - 1n) - 1n\nexport const maxInt32 = 2n ** (32n - 1n) - 1n\nexport const maxInt40 = 2n ** (40n - 1n) - 1n\nexport const maxInt48 = 2n ** (48n - 1n) - 1n\nexport const maxInt56 = 2n ** (56n - 1n) - 1n\nexport const maxInt64 = 2n ** (64n - 1n) - 1n\nexport const maxInt72 = 2n ** (72n - 1n) - 1n\nexport const maxInt80 = 2n ** (80n - 1n) - 1n\nexport const maxInt88 = 2n ** (88n - 1n) - 1n\nexport const maxInt96 = 2n ** (96n - 1n) - 1n\nexport const maxInt104 = 2n ** (104n - 1n) - 1n\nexport const maxInt112 = 2n ** (112n - 1n) - 1n\nexport const maxInt120 = 2n ** (120n - 1n) - 1n\nexport const maxInt128 = 2n ** (128n - 1n) - 1n\nexport const maxInt136 = 2n ** (136n - 1n) - 1n\nexport const maxInt144 = 2n ** (144n - 1n) - 1n\nexport const maxInt152 = 2n ** (152n - 1n) - 1n\nexport const maxInt160 = 2n ** (160n - 1n) - 1n\nexport const maxInt168 = 2n ** (168n - 1n) - 1n\nexport const maxInt176 = 2n ** (176n - 1n) - 1n\nexport const maxInt184 = 2n ** (184n - 1n) - 1n\nexport const maxInt192 = 2n ** (192n - 1n) - 1n\nexport const maxInt200 = 2n ** (200n - 1n) - 1n\nexport const maxInt208 = 2n ** (208n - 1n) - 1n\nexport const maxInt216 = 2n ** (216n - 1n) - 1n\nexport const maxInt224 = 2n ** (224n - 1n) - 1n\nexport const maxInt232 = 2n ** (232n - 1n) - 1n\nexport const maxInt240 = 2n ** (240n - 1n) - 1n\nexport const maxInt248 = 2n ** (248n - 1n) - 1n\nexport const maxInt256 = 2n ** (256n - 1n) - 1n\n\nexport const minInt8 = -(2n ** (8n - 1n))\nexport const minInt16 = -(2n ** (16n - 1n))\nexport const minInt24 = -(2n ** (24n - 1n))\nexport const minInt32 = -(2n ** (32n - 1n))\nexport const minInt40 = -(2n ** (40n - 1n))\nexport const minInt48 = -(2n ** (48n - 1n))\nexport const minInt56 = -(2n ** (56n - 1n))\nexport const minInt64 = -(2n ** (64n - 1n))\nexport const minInt72 = -(2n ** (72n - 1n))\nexport const minInt80 = -(2n ** (80n - 1n))\nexport const minInt88 = -(2n ** (88n - 1n))\nexport const minInt96 = -(2n ** (96n - 1n))\nexport const minInt104 = -(2n ** (104n - 1n))\nexport const minInt112 = -(2n ** (112n - 1n))\nexport const minInt120 = -(2n ** (120n - 1n))\nexport const minInt128 = -(2n ** (128n - 1n))\nexport const minInt136 = -(2n ** (136n - 1n))\nexport const minInt144 = -(2n ** (144n - 1n))\nexport const minInt152 = -(2n ** (152n - 1n))\nexport const minInt160 = -(2n ** (160n - 1n))\nexport const minInt168 = -(2n ** (168n - 1n))\nexport const minInt176 = -(2n ** (176n - 1n))\nexport const minInt184 = -(2n ** (184n - 1n))\nexport const minInt192 = -(2n ** (192n - 1n))\nexport const minInt200 = -(2n ** (200n - 1n))\nexport const minInt208 = -(2n ** (208n - 1n))\nexport const minInt216 = -(2n ** (216n - 1n))\nexport const minInt224 = -(2n ** (224n - 1n))\nexport const minInt232 = -(2n ** (232n - 1n))\nexport const minInt240 = -(2n ** (240n - 1n))\nexport const minInt248 = -(2n ** (248n - 1n))\nexport const minInt256 = -(2n ** (256n - 1n))\n\nexport const maxUint8 = 2n ** 8n - 1n\nexport const maxUint16 = 2n ** 16n - 1n\nexport const maxUint24 = 2n ** 24n - 1n\nexport const maxUint32 = 2n ** 32n - 1n\nexport const maxUint40 = 2n ** 40n - 1n\nexport const maxUint48 = 2n ** 48n - 1n\nexport const maxUint56 = 2n ** 56n - 1n\nexport const maxUint64 = 2n ** 64n - 1n\nexport const maxUint72 = 2n ** 72n - 1n\nexport const maxUint80 = 2n ** 80n - 1n\nexport const maxUint88 = 2n ** 88n - 1n\nexport const maxUint96 = 2n ** 96n - 1n\nexport const maxUint104 = 2n ** 104n - 1n\nexport const maxUint112 = 2n ** 112n - 1n\nexport const maxUint120 = 2n ** 120n - 1n\nexport const maxUint128 = 2n ** 128n - 1n\nexport const maxUint136 = 2n ** 136n - 1n\nexport const maxUint144 = 2n ** 144n - 1n\nexport const maxUint152 = 2n ** 152n - 1n\nexport const maxUint160 = 2n ** 160n - 1n\nexport const maxUint168 = 2n ** 168n - 1n\nexport const maxUint176 = 2n ** 176n - 1n\nexport const maxUint184 = 2n ** 184n - 1n\nexport const maxUint192 = 2n ** 192n - 1n\nexport const maxUint200 = 2n ** 200n - 1n\nexport const maxUint208 = 2n ** 208n - 1n\nexport const maxUint216 = 2n ** 216n - 1n\nexport const maxUint224 = 2n ** 224n - 1n\nexport const maxUint232 = 2n ** 232n - 1n\nexport const maxUint240 = 2n ** 240n - 1n\nexport const maxUint248 = 2n ** 248n - 1n\nexport const maxUint256 = 2n ** 256n - 1n\n","import type { AbiError } from 'abitype'\n\n// https://docs.soliditylang.org/en/v0.8.16/control-structures.html#panic-via-assert-and-error-via-require\nexport const panicReasons = {\n 1: 'An `assert` condition failed.',\n 17: 'Arithmetic operation resulted in underflow or overflow.',\n 18: 'Division or modulo by zero (e.g. `5 / 0` or `23 % 0`).',\n 33: 'Attempted to convert to an invalid type.',\n 34: 'Attempted to access a storage byte array that is incorrectly encoded.',\n 49: 'Performed `.pop()` on an empty array',\n 50: 'Array index is out of bounds.',\n 65: 'Allocated too much memory or created an array which is too large.',\n 81: 'Attempted to call a zero-initialized variable of internal function type.',\n} as const\n\nexport const solidityError: AbiError = {\n inputs: [\n {\n name: 'message',\n type: 'string',\n },\n ],\n name: 'Error',\n type: 'error',\n}\nexport const solidityPanic: AbiError = {\n inputs: [\n {\n name: 'reason',\n type: 'uint256',\n },\n ],\n name: 'Panic',\n type: 'error',\n}\n","export const etherUnits = {\n gwei: 9,\n wei: 18,\n}\nexport const gweiUnits = {\n ether: -9,\n wei: 9,\n}\nexport const weiUnits = {\n ether: -18,\n gwei: -9,\n}\n","import type { Abi, AbiEvent, AbiParameter } from 'abitype'\n\nimport type { Hex } from '../types/misc.js'\nimport { formatAbiItem, formatAbiParams } from '../utils/abi/formatAbiItem.js'\nimport { size } from '../utils/data/size.js'\n\nimport { BaseError } from './base.js'\n\nexport type AbiConstructorNotFoundErrorType = AbiConstructorNotFoundError & {\n name: 'AbiConstructorNotFoundError'\n}\nexport class AbiConstructorNotFoundError extends BaseError {\n constructor({ docsPath }: { docsPath: string }) {\n super(\n [\n 'A constructor was not found on the ABI.',\n 'Make sure you are using the correct ABI and that the constructor exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiConstructorNotFoundError',\n },\n )\n }\n}\n\nexport type AbiConstructorParamsNotFoundErrorType =\n AbiConstructorParamsNotFoundError & {\n name: 'AbiConstructorParamsNotFoundError'\n }\n\nexport class AbiConstructorParamsNotFoundError extends BaseError {\n constructor({ docsPath }: { docsPath: string }) {\n super(\n [\n 'Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.',\n 'Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiConstructorParamsNotFoundError',\n },\n )\n }\n}\n\nexport type AbiDecodingDataSizeInvalidErrorType =\n AbiDecodingDataSizeInvalidError & {\n name: 'AbiDecodingDataSizeInvalidError'\n }\nexport class AbiDecodingDataSizeInvalidError extends BaseError {\n constructor({ data, size }: { data: Hex; size: number }) {\n super(\n [\n `Data size of ${size} bytes is invalid.`,\n 'Size must be in increments of 32 bytes (size % 32 === 0).',\n ].join('\\n'),\n {\n metaMessages: [`Data: ${data} (${size} bytes)`],\n name: 'AbiDecodingDataSizeInvalidError',\n },\n )\n }\n}\n\nexport type AbiDecodingDataSizeTooSmallErrorType =\n AbiDecodingDataSizeTooSmallError & {\n name: 'AbiDecodingDataSizeTooSmallError'\n }\nexport class AbiDecodingDataSizeTooSmallError extends BaseError {\n data: Hex\n params: readonly AbiParameter[]\n size: number\n\n constructor({\n data,\n params,\n size,\n }: { data: Hex; params: readonly AbiParameter[]; size: number }) {\n super(\n [`Data size of ${size} bytes is too small for given parameters.`].join(\n '\\n',\n ),\n {\n metaMessages: [\n `Params: (${formatAbiParams(params, { includeName: true })})`,\n `Data: ${data} (${size} bytes)`,\n ],\n name: 'AbiDecodingDataSizeTooSmallError',\n },\n )\n\n this.data = data\n this.params = params\n this.size = size\n }\n}\n\nexport type AbiDecodingZeroDataErrorType = AbiDecodingZeroDataError & {\n name: 'AbiDecodingZeroDataError'\n}\nexport class AbiDecodingZeroDataError extends BaseError {\n constructor() {\n super('Cannot decode zero data (\"0x\") with ABI parameters.', {\n name: 'AbiDecodingZeroDataError',\n })\n }\n}\n\nexport type AbiEncodingArrayLengthMismatchErrorType =\n AbiEncodingArrayLengthMismatchError & {\n name: 'AbiEncodingArrayLengthMismatchError'\n }\nexport class AbiEncodingArrayLengthMismatchError extends BaseError {\n constructor({\n expectedLength,\n givenLength,\n type,\n }: { expectedLength: number; givenLength: number; type: string }) {\n super(\n [\n `ABI encoding array length mismatch for type ${type}.`,\n `Expected length: ${expectedLength}`,\n `Given length: ${givenLength}`,\n ].join('\\n'),\n { name: 'AbiEncodingArrayLengthMismatchError' },\n )\n }\n}\n\nexport type AbiEncodingBytesSizeMismatchErrorType =\n AbiEncodingBytesSizeMismatchError & {\n name: 'AbiEncodingBytesSizeMismatchError'\n }\nexport class AbiEncodingBytesSizeMismatchError extends BaseError {\n constructor({ expectedSize, value }: { expectedSize: number; value: Hex }) {\n super(\n `Size of bytes \"${value}\" (bytes${size(\n value,\n )}) does not match expected size (bytes${expectedSize}).`,\n { name: 'AbiEncodingBytesSizeMismatchError' },\n )\n }\n}\n\nexport type AbiEncodingLengthMismatchErrorType =\n AbiEncodingLengthMismatchError & {\n name: 'AbiEncodingLengthMismatchError'\n }\nexport class AbiEncodingLengthMismatchError extends BaseError {\n constructor({\n expectedLength,\n givenLength,\n }: { expectedLength: number; givenLength: number }) {\n super(\n [\n 'ABI encoding params/values length mismatch.',\n `Expected length (params): ${expectedLength}`,\n `Given length (values): ${givenLength}`,\n ].join('\\n'),\n { name: 'AbiEncodingLengthMismatchError' },\n )\n }\n}\n\nexport type AbiErrorInputsNotFoundErrorType = AbiErrorInputsNotFoundError & {\n name: 'AbiErrorInputsNotFoundError'\n}\nexport class AbiErrorInputsNotFoundError extends BaseError {\n constructor(errorName: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Arguments (\\`args\\`) were provided to \"${errorName}\", but \"${errorName}\" on the ABI does not contain any parameters (\\`inputs\\`).`,\n 'Cannot encode error result without knowing what the parameter types are.',\n 'Make sure you are using the correct ABI and that the inputs exist on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiErrorInputsNotFoundError',\n },\n )\n }\n}\n\nexport type AbiErrorNotFoundErrorType = AbiErrorNotFoundError & {\n name: 'AbiErrorNotFoundError'\n}\nexport class AbiErrorNotFoundError extends BaseError {\n constructor(\n errorName?: string | undefined,\n { docsPath }: { docsPath?: string | undefined } = {},\n ) {\n super(\n [\n `Error ${errorName ? `\"${errorName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiErrorNotFoundError',\n },\n )\n }\n}\n\nexport type AbiErrorSignatureNotFoundErrorType =\n AbiErrorSignatureNotFoundError & {\n name: 'AbiErrorSignatureNotFoundError'\n }\nexport class AbiErrorSignatureNotFoundError extends BaseError {\n signature: Hex\n\n constructor(signature: Hex, { docsPath }: { docsPath: string }) {\n super(\n [\n `Encoded error signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiErrorSignatureNotFoundError',\n },\n )\n this.signature = signature\n }\n}\n\nexport type AbiEventSignatureEmptyTopicsErrorType =\n AbiEventSignatureEmptyTopicsError & {\n name: 'AbiEventSignatureEmptyTopicsError'\n }\nexport class AbiEventSignatureEmptyTopicsError extends BaseError {\n constructor({ docsPath }: { docsPath: string }) {\n super('Cannot extract event signature from empty topics.', {\n docsPath,\n name: 'AbiEventSignatureEmptyTopicsError',\n })\n }\n}\n\nexport type AbiEventSignatureNotFoundErrorType =\n AbiEventSignatureNotFoundError & {\n name: 'AbiEventSignatureNotFoundError'\n }\nexport class AbiEventSignatureNotFoundError extends BaseError {\n constructor(signature: Hex, { docsPath }: { docsPath: string }) {\n super(\n [\n `Encoded event signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the event exists on it.',\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiEventSignatureNotFoundError',\n },\n )\n }\n}\n\nexport type AbiEventNotFoundErrorType = AbiEventNotFoundError & {\n name: 'AbiEventNotFoundError'\n}\nexport class AbiEventNotFoundError extends BaseError {\n constructor(\n eventName?: string | undefined,\n { docsPath }: { docsPath?: string | undefined } = {},\n ) {\n super(\n [\n `Event ${eventName ? `\"${eventName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the event exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiEventNotFoundError',\n },\n )\n }\n}\n\nexport type AbiFunctionNotFoundErrorType = AbiFunctionNotFoundError & {\n name: 'AbiFunctionNotFoundError'\n}\nexport class AbiFunctionNotFoundError extends BaseError {\n constructor(\n functionName?: string | undefined,\n { docsPath }: { docsPath?: string | undefined } = {},\n ) {\n super(\n [\n `Function ${functionName ? `\"${functionName}\" ` : ''}not found on ABI.`,\n 'Make sure you are using the correct ABI and that the function exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiFunctionNotFoundError',\n },\n )\n }\n}\n\nexport type AbiFunctionOutputsNotFoundErrorType =\n AbiFunctionOutputsNotFoundError & {\n name: 'AbiFunctionOutputsNotFoundError'\n }\nexport class AbiFunctionOutputsNotFoundError extends BaseError {\n constructor(functionName: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Function \"${functionName}\" does not contain any \\`outputs\\` on ABI.`,\n 'Cannot decode function result without knowing what the parameter types are.',\n 'Make sure you are using the correct ABI and that the function exists on it.',\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiFunctionOutputsNotFoundError',\n },\n )\n }\n}\n\nexport type AbiFunctionSignatureNotFoundErrorType =\n AbiFunctionSignatureNotFoundError & {\n name: 'AbiFunctionSignatureNotFoundError'\n }\nexport class AbiFunctionSignatureNotFoundError extends BaseError {\n constructor(signature: Hex, { docsPath }: { docsPath: string }) {\n super(\n [\n `Encoded function signature \"${signature}\" not found on ABI.`,\n 'Make sure you are using the correct ABI and that the function exists on it.',\n `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ].join('\\n'),\n {\n docsPath,\n name: 'AbiFunctionSignatureNotFoundError',\n },\n )\n }\n}\n\nexport type AbiItemAmbiguityErrorType = AbiItemAmbiguityError & {\n name: 'AbiItemAmbiguityError'\n}\nexport class AbiItemAmbiguityError extends BaseError {\n constructor(\n x: { abiItem: Abi[number]; type: string },\n y: { abiItem: Abi[number]; type: string },\n ) {\n super('Found ambiguous types in overloaded ABI items.', {\n metaMessages: [\n `\\`${x.type}\\` in \\`${formatAbiItem(x.abiItem)}\\`, and`,\n `\\`${y.type}\\` in \\`${formatAbiItem(y.abiItem)}\\``,\n '',\n 'These types encode differently and cannot be distinguished at runtime.',\n 'Remove one of the ambiguous items in the ABI.',\n ],\n name: 'AbiItemAmbiguityError',\n })\n }\n}\n\nexport type BytesSizeMismatchErrorType = BytesSizeMismatchError & {\n name: 'BytesSizeMismatchError'\n}\nexport class BytesSizeMismatchError extends BaseError {\n constructor({\n expectedSize,\n givenSize,\n }: { expectedSize: number; givenSize: number }) {\n super(`Expected bytes${expectedSize}, got bytes${givenSize}.`, {\n name: 'BytesSizeMismatchError',\n })\n }\n}\n\nexport type DecodeLogDataMismatchErrorType = DecodeLogDataMismatch & {\n name: 'DecodeLogDataMismatch'\n}\nexport class DecodeLogDataMismatch extends BaseError {\n abiItem: AbiEvent\n data: Hex\n params: readonly AbiParameter[]\n size: number\n\n constructor({\n abiItem,\n data,\n params,\n size,\n }: {\n abiItem: AbiEvent\n data: Hex\n params: readonly AbiParameter[]\n size: number\n }) {\n super(\n [\n `Data size of ${size} bytes is too small for non-indexed event parameters.`,\n ].join('\\n'),\n {\n metaMessages: [\n `Params: (${formatAbiParams(params, { includeName: true })})`,\n `Data: ${data} (${size} bytes)`,\n ],\n name: 'DecodeLogDataMismatch',\n },\n )\n\n this.abiItem = abiItem\n this.data = data\n this.params = params\n this.size = size\n }\n}\n\nexport type DecodeLogTopicsMismatchErrorType = DecodeLogTopicsMismatch & {\n name: 'DecodeLogTopicsMismatch'\n}\nexport class DecodeLogTopicsMismatch extends BaseError {\n abiItem: AbiEvent\n\n constructor({\n abiItem,\n param,\n }: {\n abiItem: AbiEvent\n param: AbiParameter & { indexed: boolean }\n }) {\n super(\n [\n `Expected a topic for indexed event parameter${\n param.name ? ` \"${param.name}\"` : ''\n } on event \"${formatAbiItem(abiItem, { includeName: true })}\".`,\n ].join('\\n'),\n { name: 'DecodeLogTopicsMismatch' },\n )\n\n this.abiItem = abiItem\n }\n}\n\nexport type InvalidAbiEncodingTypeErrorType = InvalidAbiEncodingTypeError & {\n name: 'InvalidAbiEncodingTypeError'\n}\nexport class InvalidAbiEncodingTypeError extends BaseError {\n constructor(type: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Type \"${type}\" is not a valid encoding type.`,\n 'Please provide a valid ABI type.',\n ].join('\\n'),\n { docsPath, name: 'InvalidAbiEncodingType' },\n )\n }\n}\n\nexport type InvalidAbiDecodingTypeErrorType = InvalidAbiDecodingTypeError & {\n name: 'InvalidAbiDecodingTypeError'\n}\nexport class InvalidAbiDecodingTypeError extends BaseError {\n constructor(type: string, { docsPath }: { docsPath: string }) {\n super(\n [\n `Type \"${type}\" is not a valid decoding type.`,\n 'Please provide a valid ABI type.',\n ].join('\\n'),\n { docsPath, name: 'InvalidAbiDecodingType' },\n )\n }\n}\n\nexport type InvalidArrayErrorType = InvalidArrayError & {\n name: 'InvalidArrayError'\n}\nexport class InvalidArrayError extends BaseError {\n constructor(value: unknown) {\n super([`Value \"${value}\" is not a valid array.`].join('\\n'), {\n name: 'InvalidArrayError',\n })\n }\n}\n\nexport type InvalidDefinitionTypeErrorType = InvalidDefinitionTypeError & {\n name: 'InvalidDefinitionTypeError'\n}\nexport class InvalidDefinitionTypeError extends BaseError {\n constructor(type: string) {\n super(\n [\n `\"${type}\" is not a valid definition type.`,\n 'Valid types: \"function\", \"event\", \"error\"',\n ].join('\\n'),\n { name: 'InvalidDefinitionTypeError' },\n )\n }\n}\n\nexport type UnsupportedPackedAbiTypeErrorType = UnsupportedPackedAbiType & {\n name: 'UnsupportedPackedAbiType'\n}\nexport class UnsupportedPackedAbiType extends BaseError {\n constructor(type: unknown) {\n super(`Type \"${type}\" is not supported for packed encoding.`, {\n name: 'UnsupportedPackedAbiType',\n })\n }\n}\n","import { BaseError } from './base.js'\n\nexport type InvalidAddressErrorType = InvalidAddressError & {\n name: 'InvalidAddressError'\n}\nexport class InvalidAddressError extends BaseError {\n constructor({ address }: { address: string }) {\n super(`Address \"${address}\" is invalid.`, {\n metaMessages: [\n '- Address must be a hex value of 20 bytes (40 hex characters).',\n '- Address must match its checksum counterpart.',\n ],\n name: 'InvalidAddressError',\n })\n }\n}\n","export const version = '2.21.44'\n","import { version } from './version.js'\n\ntype ErrorConfig = {\n getDocsUrl?: ((args: BaseErrorParameters) => string | undefined) | undefined\n version?: string | undefined\n}\n\nlet errorConfig: ErrorConfig = {\n getDocsUrl: ({\n docsBaseUrl,\n docsPath = '',\n docsSlug,\n }: BaseErrorParameters) =>\n docsPath\n ? `${docsBaseUrl ?? 'https://viem.sh'}${docsPath}${\n docsSlug ? `#${docsSlug}` : ''\n }`\n : undefined,\n version: `viem@${version}`,\n}\n\nexport function setErrorConfig(config: ErrorConfig) {\n errorConfig = config\n}\n\ntype BaseErrorParameters = {\n cause?: BaseError | Error | undefined\n details?: string | undefined\n docsBaseUrl?: string | undefined\n docsPath?: string | undefined\n docsSlug?: string | undefined\n metaMessages?: string[] | undefined\n name?: string | undefined\n}\n\nexport type BaseErrorType = BaseError & { name: 'BaseError' }\nexport class BaseError extends Error {\n details: string\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n shortMessage: string\n version: string\n\n override name = 'BaseError'\n\n constructor(shortMessage: string, args: BaseErrorParameters = {}) {\n const details = (() => {\n if (args.cause instanceof BaseError) return args.cause.details\n if (args.cause?.message) return args.cause.message\n return args.details!\n })()\n const docsPath = (() => {\n if (args.cause instanceof BaseError)\n return args.cause.docsPath || args.docsPath\n return args.docsPath\n })()\n const docsUrl = errorConfig.getDocsUrl?.({ ...args, docsPath })\n\n const message = [\n shortMessage || 'An error occurred.',\n '',\n ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n ...(docsUrl ? [`Docs: ${docsUrl}`] : []),\n ...(details ? [`Details: ${details}`] : []),\n ...(errorConfig.version ? [`Version: ${errorConfig.version}`] : []),\n ].join('\\n')\n\n super(message, args.cause ? { cause: args.cause } : undefined)\n\n this.details = details\n this.docsPath = docsPath\n this.metaMessages = args.metaMessages\n this.name = args.name ?? this.name\n this.shortMessage = shortMessage\n this.version = version\n }\n\n walk(): Error\n walk(fn: (err: unknown) => boolean): Error | null\n walk(fn?: any): any {\n return walk(this, fn)\n }\n}\n\nfunction walk(\n err: unknown,\n fn?: ((err: unknown) => boolean) | undefined,\n): unknown {\n if (fn?.(err)) return err\n if (\n err &&\n typeof err === 'object' &&\n 'cause' in err &&\n err.cause !== undefined\n )\n return walk(err.cause, fn)\n return fn ? null : err\n}\n","import { versionedHashVersionKzg } from '../constants/kzg.js'\nimport type { Hash } from '../types/misc.js'\n\nimport { BaseError } from './base.js'\n\nexport type BlobSizeTooLargeErrorType = BlobSizeTooLargeError & {\n name: 'BlobSizeTooLargeError'\n}\nexport class BlobSizeTooLargeError extends BaseError {\n constructor({ maxSize, size }: { maxSize: number; size: number }) {\n super('Blob size is too large.', {\n metaMessages: [`Max: ${maxSize} bytes`, `Given: ${size} bytes`],\n name: 'BlobSizeTooLargeError',\n })\n }\n}\n\nexport type EmptyBlobErrorType = EmptyBlobError & {\n name: 'EmptyBlobError'\n}\nexport class EmptyBlobError extends BaseError {\n constructor() {\n super('Blob data must not be empty.', { name: 'EmptyBlobError' })\n }\n}\n\nexport type InvalidVersionedHashSizeErrorType =\n InvalidVersionedHashSizeError & {\n name: 'InvalidVersionedHashSizeError'\n }\nexport class InvalidVersionedHashSizeError extends BaseError {\n constructor({\n hash,\n size,\n }: {\n hash: Hash\n size: number\n }) {\n super(`Versioned hash \"${hash}\" size is invalid.`, {\n metaMessages: ['Expected: 32', `Received: ${size}`],\n name: 'InvalidVersionedHashSizeError',\n })\n }\n}\n\nexport type InvalidVersionedHashVersionErrorType =\n InvalidVersionedHashVersionError & {\n name: 'InvalidVersionedHashVersionError'\n }\nexport class InvalidVersionedHashVersionError extends BaseError {\n constructor({\n hash,\n version,\n }: {\n hash: Hash\n version: number\n }) {\n super(`Versioned hash \"${hash}\" version is invalid.`, {\n metaMessages: [\n `Expected: ${versionedHashVersionKzg}`,\n `Received: ${version}`,\n ],\n name: 'InvalidVersionedHashVersionError',\n })\n }\n}\n","import type { Hash } from '../types/misc.js'\n\nimport { BaseError } from './base.js'\n\nexport type BlockNotFoundErrorType = BlockNotFoundError & {\n name: 'BlockNotFoundError'\n}\nexport class BlockNotFoundError extends BaseError {\n constructor({\n blockHash,\n blockNumber,\n }: {\n blockHash?: Hash | undefined\n blockNumber?: bigint | undefined\n }) {\n let identifier = 'Block'\n if (blockHash) identifier = `Block at hash \"${blockHash}\"`\n if (blockNumber) identifier = `Block at number \"${blockNumber}\"`\n super(`${identifier} could not be found.`, { name: 'BlockNotFoundError' })\n }\n}\n","import type { Chain } from '../types/chain.js'\n\nimport { BaseError } from './base.js'\n\nexport type ChainDoesNotSupportContractErrorType =\n ChainDoesNotSupportContract & {\n name: 'ChainDoesNotSupportContract'\n }\nexport class ChainDoesNotSupportContract extends BaseError {\n constructor({\n blockNumber,\n chain,\n contract,\n }: {\n blockNumber?: bigint | undefined\n chain: Chain\n contract: { name: string; blockCreated?: number | undefined }\n }) {\n super(\n `Chain \"${chain.name}\" does not support contract \"${contract.name}\".`,\n {\n metaMessages: [\n 'This could be due to any of the following:',\n ...(blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n ? [\n `- The contract \"${contract.name}\" was not deployed until block ${contract.blockCreated} (current block ${blockNumber}).`,\n ]\n : [\n `- The chain does not have the contract \"${contract.name}\" configured.`,\n ]),\n ],\n name: 'ChainDoesNotSupportContract',\n },\n )\n }\n}\n\nexport type ChainMismatchErrorType = ChainMismatchError & {\n name: 'ChainMismatchError'\n}\nexport class ChainMismatchError extends BaseError {\n constructor({\n chain,\n currentChainId,\n }: {\n chain: Chain\n currentChainId: number\n }) {\n super(\n `The current chain of the wallet (id: ${currentChainId}) does not match the target chain for the transaction (id: ${chain.id} – ${chain.name}).`,\n {\n metaMessages: [\n `Current Chain ID: ${currentChainId}`,\n `Expected Chain ID: ${chain.id} – ${chain.name}`,\n ],\n name: 'ChainMismatchError',\n },\n )\n }\n}\n\nexport type ChainNotFoundErrorType = ChainNotFoundError & {\n name: 'ChainNotFoundError'\n}\nexport class ChainNotFoundError extends BaseError {\n constructor() {\n super(\n [\n 'No chain was provided to the request.',\n 'Please provide a chain with the `chain` argument on the Action, or by supplying a `chain` to WalletClient.',\n ].join('\\n'),\n {\n name: 'ChainNotFoundError',\n },\n )\n }\n}\n\nexport type ClientChainNotConfiguredErrorType =\n ClientChainNotConfiguredError & {\n name: 'ClientChainNotConfiguredError'\n }\nexport class ClientChainNotConfiguredError extends BaseError {\n constructor() {\n super('No chain was provided to the Client.', {\n name: 'ClientChainNotConfiguredError',\n })\n }\n}\n\nexport type InvalidChainIdErrorType = InvalidChainIdError & {\n name: 'InvalidChainIdError'\n}\nexport class InvalidChainIdError extends BaseError {\n constructor({ chainId }: { chainId?: number | undefined }) {\n super(\n typeof chainId === 'number'\n ? `Chain ID \"${chainId}\" is invalid.`\n : 'Chain ID is invalid.',\n { name: 'InvalidChainIdError' },\n )\n }\n}\n","import type { AbiParameter } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { AbiItem } from '../../types/contract.js'\nimport { stringify } from '../stringify.js'\n\nexport type FormatAbiItemWithArgsErrorType = ErrorType\n\nexport function formatAbiItemWithArgs({\n abiItem,\n args,\n includeFunctionName = true,\n includeName = false,\n}: {\n abiItem: AbiItem\n args: readonly unknown[]\n includeFunctionName?: boolean | undefined\n includeName?: boolean | undefined\n}) {\n if (!('name' in abiItem)) return\n if (!('inputs' in abiItem)) return\n if (!abiItem.inputs) return\n return `${includeFunctionName ? abiItem.name : ''}(${abiItem.inputs\n .map(\n (input: AbiParameter, i: number) =>\n `${includeName && input.name ? `${input.name}: ` : ''}${\n typeof args[i] === 'object' ? stringify(args[i]) : args[i]\n }`,\n )\n .join(', ')})`\n}\n","import type { Abi, Address } from 'abitype'\n\nimport { parseAccount } from '../accounts/utils/parseAccount.js'\nimport type { CallParameters } from '../actions/public/call.js'\nimport { panicReasons } from '../constants/solidity.js'\nimport type { Chain } from '../types/chain.js'\nimport type { Hex } from '../types/misc.js'\nimport {\n type DecodeErrorResultReturnType,\n decodeErrorResult,\n} from '../utils/abi/decodeErrorResult.js'\nimport { formatAbiItem } from '../utils/abi/formatAbiItem.js'\nimport { formatAbiItemWithArgs } from '../utils/abi/formatAbiItemWithArgs.js'\nimport { getAbiItem } from '../utils/abi/getAbiItem.js'\nimport { formatEther } from '../utils/unit/formatEther.js'\nimport { formatGwei } from '../utils/unit/formatGwei.js'\n\nimport { AbiErrorSignatureNotFoundError } from './abi.js'\nimport { BaseError } from './base.js'\nimport { prettyStateOverride } from './stateOverride.js'\nimport { prettyPrint } from './transaction.js'\nimport { getContractAddress } from './utils.js'\n\nexport type CallExecutionErrorType = CallExecutionError & {\n name: 'CallExecutionError'\n}\nexport class CallExecutionError extends BaseError {\n override cause: BaseError\n\n constructor(\n cause: BaseError,\n {\n account: account_,\n docsPath,\n chain,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n stateOverride,\n }: CallParameters & {\n chain?: Chain | undefined\n docsPath?: string | undefined\n },\n ) {\n const account = account_ ? parseAccount(account_) : undefined\n let prettyArgs = prettyPrint({\n from: account?.address,\n to,\n value:\n typeof value !== 'undefined' &&\n `${formatEther(value)} ${chain?.nativeCurrency?.symbol || 'ETH'}`,\n data,\n gas,\n gasPrice:\n typeof gasPrice !== 'undefined' && `${formatGwei(gasPrice)} gwei`,\n maxFeePerGas:\n typeof maxFeePerGas !== 'undefined' &&\n `${formatGwei(maxFeePerGas)} gwei`,\n maxPriorityFeePerGas:\n typeof maxPriorityFeePerGas !== 'undefined' &&\n `${formatGwei(maxPriorityFeePerGas)} gwei`,\n nonce,\n })\n\n if (stateOverride) {\n prettyArgs += `\\n${prettyStateOverride(stateOverride)}`\n }\n\n super(cause.shortMessage, {\n cause,\n docsPath,\n metaMessages: [\n ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n 'Raw Call Arguments:',\n prettyArgs,\n ].filter(Boolean) as string[],\n name: 'CallExecutionError',\n })\n this.cause = cause\n }\n}\n\nexport type ContractFunctionExecutionErrorType =\n ContractFunctionExecutionError & {\n name: 'ContractFunctionExecutionError'\n }\nexport class ContractFunctionExecutionError extends BaseError {\n abi: Abi\n args?: unknown[] | undefined\n override cause: BaseError\n contractAddress?: Address | undefined\n formattedArgs?: string | undefined\n functionName: string\n sender?: Address | undefined\n\n constructor(\n cause: BaseError,\n {\n abi,\n args,\n contractAddress,\n docsPath,\n functionName,\n sender,\n }: {\n abi: Abi\n args?: any | undefined\n contractAddress?: Address | undefined\n docsPath?: string | undefined\n functionName: string\n sender?: Address | undefined\n },\n ) {\n const abiItem = getAbiItem({ abi, args, name: functionName })\n const formattedArgs = abiItem\n ? formatAbiItemWithArgs({\n abiItem,\n args,\n includeFunctionName: false,\n includeName: false,\n })\n : undefined\n const functionWithParams = abiItem\n ? formatAbiItem(abiItem, { includeName: true })\n : undefined\n\n const prettyArgs = prettyPrint({\n address: contractAddress && getContractAddress(contractAddress),\n function: functionWithParams,\n args:\n formattedArgs &&\n formattedArgs !== '()' &&\n `${[...Array(functionName?.length ?? 0).keys()]\n .map(() => ' ')\n .join('')}${formattedArgs}`,\n sender,\n })\n\n super(\n cause.shortMessage ||\n `An unknown error occurred while executing the contract function \"${functionName}\".`,\n {\n cause,\n docsPath,\n metaMessages: [\n ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n prettyArgs && 'Contract Call:',\n prettyArgs,\n ].filter(Boolean) as string[],\n name: 'ContractFunctionExecutionError',\n },\n )\n this.abi = abi\n this.args = args\n this.cause = cause\n this.contractAddress = contractAddress\n this.functionName = functionName\n this.sender = sender\n }\n}\n\nexport type ContractFunctionRevertedErrorType =\n ContractFunctionRevertedError & {\n name: 'ContractFunctionRevertedError'\n }\nexport class ContractFunctionRevertedError extends BaseError {\n data?: DecodeErrorResultReturnType | undefined\n reason?: string | undefined\n signature?: Hex | undefined\n\n constructor({\n abi,\n data,\n functionName,\n message,\n }: {\n abi: Abi\n data?: Hex | undefined\n functionName: string\n message?: string | undefined\n }) {\n let cause: Error | undefined\n let decodedData: DecodeErrorResultReturnType | undefined = undefined\n let metaMessages: string[] | undefined\n let reason: string | undefined\n if (data && data !== '0x') {\n try {\n decodedData = decodeErrorResult({ abi, data })\n const { abiItem, errorName, args: errorArgs } = decodedData\n if (errorName === 'Error') {\n reason = (errorArgs as [string])[0]\n } else if (errorName === 'Panic') {\n const [firstArg] = errorArgs as [number]\n reason = panicReasons[firstArg as keyof typeof panicReasons]\n } else {\n const errorWithParams = abiItem\n ? formatAbiItem(abiItem, { includeName: true })\n : undefined\n const formattedArgs =\n abiItem && errorArgs\n ? formatAbiItemWithArgs({\n abiItem,\n args: errorArgs,\n includeFunctionName: false,\n includeName: false,\n })\n : undefined\n\n metaMessages = [\n errorWithParams ? `Error: ${errorWithParams}` : '',\n formattedArgs && formattedArgs !== '()'\n ? ` ${[...Array(errorName?.length ?? 0).keys()]\n .map(() => ' ')\n .join('')}${formattedArgs}`\n : '',\n ]\n }\n } catch (err) {\n cause = err as Error\n }\n } else if (message) reason = message\n\n let signature: Hex | undefined\n if (cause instanceof AbiErrorSignatureNotFoundError) {\n signature = cause.signature\n metaMessages = [\n `Unable to decode signature \"${signature}\" as it was not found on the provided ABI.`,\n 'Make sure you are using the correct ABI and that the error exists on it.',\n `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`,\n ]\n }\n\n super(\n (reason && reason !== 'execution reverted') || signature\n ? [\n `The contract function \"${functionName}\" reverted with the following ${\n signature ? 'signature' : 'reason'\n }:`,\n reason || signature,\n ].join('\\n')\n : `The contract function \"${functionName}\" reverted.`,\n {\n cause,\n metaMessages,\n name: 'ContractFunctionRevertedError',\n },\n )\n\n this.data = decodedData\n this.reason = reason\n this.signature = signature\n }\n}\n\nexport type ContractFunctionZeroDataErrorType =\n ContractFunctionZeroDataError & {\n name: 'ContractFunctionZeroDataError'\n }\nexport class ContractFunctionZeroDataError extends BaseError {\n constructor({ functionName }: { functionName: string }) {\n super(`The contract function \"${functionName}\" returned no data (\"0x\").`, {\n metaMessages: [\n 'This could be due to any of the following:',\n ` - The contract does not have the function \"${functionName}\",`,\n ' - The parameters passed to the contract function may be invalid, or',\n ' - The address is not a contract.',\n ],\n name: 'ContractFunctionZeroDataError',\n })\n }\n}\n\nexport type CounterfactualDeploymentFailedErrorType =\n CounterfactualDeploymentFailedError & {\n name: 'CounterfactualDeploymentFailedError'\n }\nexport class CounterfactualDeploymentFailedError extends BaseError {\n constructor({ factory }: { factory?: Address | undefined }) {\n super(\n `Deployment for counterfactual contract call failed${\n factory ? ` for factory \"${factory}\".` : ''\n }`,\n {\n metaMessages: [\n 'Please ensure:',\n '- The `factory` is a valid contract deployment factory (ie. Create2 Factory, ERC-4337 Factory, etc).',\n '- The `factoryData` is a valid encoded function call for contract deployment function on the factory.',\n ],\n name: 'CounterfactualDeploymentFailedError',\n },\n )\n }\n}\n\nexport type RawContractErrorType = RawContractError & {\n name: 'RawContractError'\n}\nexport class RawContractError extends BaseError {\n code = 3\n\n data?: Hex | { data?: Hex | undefined } | undefined\n\n constructor({\n data,\n message,\n }: {\n data?: Hex | { data?: Hex | undefined } | undefined\n message?: string | undefined\n }) {\n super(message || '', { name: 'RawContractError' })\n this.data = data\n }\n}\n","import { BaseError } from './base.js'\n\nexport type NegativeOffsetErrorType = NegativeOffsetError & {\n name: 'NegativeOffsetError'\n}\nexport class NegativeOffsetError extends BaseError {\n constructor({ offset }: { offset: number }) {\n super(`Offset \\`${offset}\\` cannot be negative.`, {\n name: 'NegativeOffsetError',\n })\n }\n}\n\nexport type PositionOutOfBoundsErrorType = PositionOutOfBoundsError & {\n name: 'PositionOutOfBoundsError'\n}\nexport class PositionOutOfBoundsError extends BaseError {\n constructor({ length, position }: { length: number; position: number }) {\n super(\n `Position \\`${position}\\` is out of bounds (\\`0 < position < ${length}\\`).`,\n { name: 'PositionOutOfBoundsError' },\n )\n }\n}\n\nexport type RecursiveReadLimitExceededErrorType =\n RecursiveReadLimitExceededError & {\n name: 'RecursiveReadLimitExceededError'\n }\nexport class RecursiveReadLimitExceededError extends BaseError {\n constructor({ count, limit }: { count: number; limit: number }) {\n super(\n `Recursive read limit of \\`${limit}\\` exceeded (recursive read count: \\`${count}\\`).`,\n { name: 'RecursiveReadLimitExceededError' },\n )\n }\n}\n","import { BaseError } from './base.js'\n\nexport type SliceOffsetOutOfBoundsErrorType = SliceOffsetOutOfBoundsError & {\n name: 'SliceOffsetOutOfBoundsError'\n}\nexport class SliceOffsetOutOfBoundsError extends BaseError {\n constructor({\n offset,\n position,\n size,\n }: { offset: number; position: 'start' | 'end'; size: number }) {\n super(\n `Slice ${\n position === 'start' ? 'starting' : 'ending'\n } at offset \"${offset}\" is out-of-bounds (size: ${size}).`,\n { name: 'SliceOffsetOutOfBoundsError' },\n )\n }\n}\n\nexport type SizeExceedsPaddingSizeErrorType = SizeExceedsPaddingSizeError & {\n name: 'SizeExceedsPaddingSizeError'\n}\nexport class SizeExceedsPaddingSizeError extends BaseError {\n constructor({\n size,\n targetSize,\n type,\n }: {\n size: number\n targetSize: number\n type: 'hex' | 'bytes'\n }) {\n super(\n `${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} size (${size}) exceeds padding size (${targetSize}).`,\n { name: 'SizeExceedsPaddingSizeError' },\n )\n }\n}\n\nexport type InvalidBytesLengthErrorType = InvalidBytesLengthError & {\n name: 'InvalidBytesLengthError'\n}\nexport class InvalidBytesLengthError extends BaseError {\n constructor({\n size,\n targetSize,\n type,\n }: {\n size: number\n targetSize: number\n type: 'hex' | 'bytes'\n }) {\n super(\n `${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} is expected to be ${targetSize} ${type} long, but is ${size} ${type} long.`,\n { name: 'InvalidBytesLengthError' },\n )\n }\n}\n","import type { ByteArray, Hex } from '../types/misc.js'\n\nimport { BaseError } from './base.js'\n\nexport type IntegerOutOfRangeErrorType = IntegerOutOfRangeError & {\n name: 'IntegerOutOfRangeError'\n}\nexport class IntegerOutOfRangeError extends BaseError {\n constructor({\n max,\n min,\n signed,\n size,\n value,\n }: {\n max?: string | undefined\n min: string\n signed?: boolean | undefined\n size?: number | undefined\n value: string\n }) {\n super(\n `Number \"${value}\" is not in safe ${\n size ? `${size * 8}-bit ${signed ? 'signed' : 'unsigned'} ` : ''\n }integer range ${max ? `(${min} to ${max})` : `(above ${min})`}`,\n { name: 'IntegerOutOfRangeError' },\n )\n }\n}\n\nexport type InvalidBytesBooleanErrorType = InvalidBytesBooleanError & {\n name: 'InvalidBytesBooleanError'\n}\nexport class InvalidBytesBooleanError extends BaseError {\n constructor(bytes: ByteArray) {\n super(\n `Bytes value \"${bytes}\" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`,\n {\n name: 'InvalidBytesBooleanError',\n },\n )\n }\n}\n\nexport type InvalidHexBooleanErrorType = InvalidHexBooleanError & {\n name: 'InvalidHexBooleanError'\n}\nexport class InvalidHexBooleanError extends BaseError {\n constructor(hex: Hex) {\n super(\n `Hex value \"${hex}\" is not a valid boolean. The hex value must be \"0x0\" (false) or \"0x1\" (true).`,\n { name: 'InvalidHexBooleanError' },\n )\n }\n}\n\nexport type InvalidHexValueErrorType = InvalidHexValueError & {\n name: 'InvalidHexValueError'\n}\nexport class InvalidHexValueError extends BaseError {\n constructor(value: Hex) {\n super(\n `Hex value \"${value}\" is an odd length (${value.length}). It must be an even length.`,\n { name: 'InvalidHexValueError' },\n )\n }\n}\n\nexport type SizeOverflowErrorType = SizeOverflowError & {\n name: 'SizeOverflowError'\n}\nexport class SizeOverflowError extends BaseError {\n constructor({ givenSize, maxSize }: { givenSize: number; maxSize: number }) {\n super(\n `Size cannot exceed ${maxSize} bytes. Given size: ${givenSize} bytes.`,\n { name: 'SizeOverflowError' },\n )\n }\n}\n","import { formatGwei } from '../utils/unit/formatGwei.js'\nimport { BaseError } from './base.js'\n\nexport type BaseFeeScalarErrorType = BaseFeeScalarError & {\n name: 'BaseFeeScalarError'\n}\nexport class BaseFeeScalarError extends BaseError {\n constructor() {\n super('`baseFeeMultiplier` must be greater than 1.', {\n name: 'BaseFeeScalarError',\n })\n }\n}\n\nexport type Eip1559FeesNotSupportedErrorType = Eip1559FeesNotSupportedError & {\n name: 'Eip1559FeesNotSupportedError'\n}\nexport class Eip1559FeesNotSupportedError extends BaseError {\n constructor() {\n super('Chain does not support EIP-1559 fees.', {\n name: 'Eip1559FeesNotSupportedError',\n })\n }\n}\n\nexport type MaxFeePerGasTooLowErrorType = MaxFeePerGasTooLowError & {\n name: 'MaxFeePerGasTooLowError'\n}\nexport class MaxFeePerGasTooLowError extends BaseError {\n constructor({ maxPriorityFeePerGas }: { maxPriorityFeePerGas: bigint }) {\n super(\n `\\`maxFeePerGas\\` cannot be less than the \\`maxPriorityFeePerGas\\` (${formatGwei(\n maxPriorityFeePerGas,\n )} gwei).`,\n { name: 'MaxFeePerGasTooLowError' },\n )\n }\n}\n","import { formatGwei } from '../utils/unit/formatGwei.js'\n\nimport { BaseError } from './base.js'\n\n/**\n * geth: https://github.com/ethereum/go-ethereum/blob/master/core/error.go\n * https://github.com/ethereum/go-ethereum/blob/master/core/types/transaction.go#L34-L41\n *\n * erigon: https://github.com/ledgerwatch/erigon/blob/master/core/error.go\n * https://github.com/ledgerwatch/erigon/blob/master/core/types/transaction.go#L41-L46\n *\n * anvil: https://github.com/foundry-rs/foundry/blob/master/anvil/src/eth/error.rs#L108\n */\nexport type ExecutionRevertedErrorType = ExecutionRevertedError & {\n code: 3\n name: 'ExecutionRevertedError'\n}\nexport class ExecutionRevertedError extends BaseError {\n static code = 3\n static nodeMessage = /execution reverted/\n\n constructor({\n cause,\n message,\n }: { cause?: BaseError | undefined; message?: string | undefined } = {}) {\n const reason = message\n ?.replace('execution reverted: ', '')\n ?.replace('execution reverted', '')\n super(\n `Execution reverted ${\n reason ? `with reason: ${reason}` : 'for an unknown reason'\n }.`,\n {\n cause,\n name: 'ExecutionRevertedError',\n },\n )\n }\n}\n\nexport type FeeCapTooHighErrorType = FeeCapTooHighError & {\n name: 'FeeCapTooHighError'\n}\nexport class FeeCapTooHighError extends BaseError {\n static nodeMessage =\n /max fee per gas higher than 2\\^256-1|fee cap higher than 2\\^256-1/\n constructor({\n cause,\n maxFeePerGas,\n }: {\n cause?: BaseError | undefined\n maxFeePerGas?: bigint | undefined\n } = {}) {\n super(\n `The fee cap (\\`maxFeePerGas\\`${\n maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)} gwei` : ''\n }) cannot be higher than the maximum allowed value (2^256-1).`,\n {\n cause,\n name: 'FeeCapTooHighError',\n },\n )\n }\n}\n\nexport type FeeCapTooLowErrorType = FeeCapTooLowError & {\n name: 'FeeCapTooLowError'\n}\nexport class FeeCapTooLowError extends BaseError {\n static nodeMessage =\n /max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/\n constructor({\n cause,\n maxFeePerGas,\n }: {\n cause?: BaseError | undefined\n maxFeePerGas?: bigint | undefined\n } = {}) {\n super(\n `The fee cap (\\`maxFeePerGas\\`${\n maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)}` : ''\n } gwei) cannot be lower than the block base fee.`,\n {\n cause,\n name: 'FeeCapTooLowError',\n },\n )\n }\n}\n\nexport type NonceTooHighErrorType = NonceTooHighError & {\n name: 'NonceTooHighError'\n}\nexport class NonceTooHighError extends BaseError {\n static nodeMessage = /nonce too high/\n constructor({\n cause,\n nonce,\n }: { cause?: BaseError | undefined; nonce?: number | undefined } = {}) {\n super(\n `Nonce provided for the transaction ${\n nonce ? `(${nonce}) ` : ''\n }is higher than the next one expected.`,\n { cause, name: 'NonceTooHighError' },\n )\n }\n}\n\nexport type NonceTooLowErrorType = NonceTooLowError & {\n name: 'NonceTooLowError'\n}\nexport class NonceTooLowError extends BaseError {\n static nodeMessage =\n /nonce too low|transaction already imported|already known/\n constructor({\n cause,\n nonce,\n }: { cause?: BaseError | undefined; nonce?: number | undefined } = {}) {\n super(\n [\n `Nonce provided for the transaction ${\n nonce ? `(${nonce}) ` : ''\n }is lower than the current nonce of the account.`,\n 'Try increasing the nonce or find the latest nonce with `getTransactionCount`.',\n ].join('\\n'),\n { cause, name: 'NonceTooLowError' },\n )\n }\n}\n\nexport type NonceMaxValueErrorType = NonceMaxValueError & {\n name: 'NonceMaxValueError'\n}\nexport class NonceMaxValueError extends BaseError {\n static nodeMessage = /nonce has max value/\n constructor({\n cause,\n nonce,\n }: { cause?: BaseError | undefined; nonce?: number | undefined } = {}) {\n super(\n `Nonce provided for the transaction ${\n nonce ? `(${nonce}) ` : ''\n }exceeds the maximum allowed nonce.`,\n { cause, name: 'NonceMaxValueError' },\n )\n }\n}\n\nexport type InsufficientFundsErrorType = InsufficientFundsError & {\n name: 'InsufficientFundsError'\n}\nexport class InsufficientFundsError extends BaseError {\n static nodeMessage =\n /insufficient funds|exceeds transaction sender account balance/\n constructor({ cause }: { cause?: BaseError | undefined } = {}) {\n super(\n [\n 'The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account.',\n ].join('\\n'),\n {\n cause,\n metaMessages: [\n 'This error could arise when the account does not have enough funds to:',\n ' - pay for the total gas fee,',\n ' - pay for the value to send.',\n ' ',\n 'The cost of the transaction is calculated as `gas * gas fee + value`, where:',\n ' - `gas` is the amount of gas needed for transaction to execute,',\n ' - `gas fee` is the gas fee,',\n ' - `value` is the amount of ether to send to the recipient.',\n ],\n name: 'InsufficientFundsError',\n },\n )\n }\n}\n\nexport type IntrinsicGasTooHighErrorType = IntrinsicGasTooHighError & {\n name: 'IntrinsicGasTooHighError'\n}\nexport class IntrinsicGasTooHighError extends BaseError {\n static nodeMessage = /intrinsic gas too high|gas limit reached/\n constructor({\n cause,\n gas,\n }: { cause?: BaseError | undefined; gas?: bigint | undefined } = {}) {\n super(\n `The amount of gas ${\n gas ? `(${gas}) ` : ''\n }provided for the transaction exceeds the limit allowed for the block.`,\n {\n cause,\n name: 'IntrinsicGasTooHighError',\n },\n )\n }\n}\n\nexport type IntrinsicGasTooLowErrorType = IntrinsicGasTooLowError & {\n name: 'IntrinsicGasTooLowError'\n}\nexport class IntrinsicGasTooLowError extends BaseError {\n static nodeMessage = /intrinsic gas too low/\n constructor({\n cause,\n gas,\n }: { cause?: BaseError | undefined; gas?: bigint | undefined } = {}) {\n super(\n `The amount of gas ${\n gas ? `(${gas}) ` : ''\n }provided for the transaction is too low.`,\n {\n cause,\n name: 'IntrinsicGasTooLowError',\n },\n )\n }\n}\n\nexport type TransactionTypeNotSupportedErrorType =\n TransactionTypeNotSupportedError & {\n name: 'TransactionTypeNotSupportedError'\n }\nexport class TransactionTypeNotSupportedError extends BaseError {\n static nodeMessage = /transaction type not valid/\n constructor({ cause }: { cause?: BaseError | undefined }) {\n super('The transaction type is not supported for this chain.', {\n cause,\n name: 'TransactionTypeNotSupportedError',\n })\n }\n}\n\nexport type TipAboveFeeCapErrorType = TipAboveFeeCapError & {\n name: 'TipAboveFeeCapError'\n}\nexport class TipAboveFeeCapError extends BaseError {\n static nodeMessage =\n /max priority fee per gas higher than max fee per gas|tip higher than fee cap/\n constructor({\n cause,\n maxPriorityFeePerGas,\n maxFeePerGas,\n }: {\n cause?: BaseError | undefined\n maxPriorityFeePerGas?: bigint | undefined\n maxFeePerGas?: bigint | undefined\n } = {}) {\n super(\n [\n `The provided tip (\\`maxPriorityFeePerGas\\`${\n maxPriorityFeePerGas\n ? ` = ${formatGwei(maxPriorityFeePerGas)} gwei`\n : ''\n }) cannot be higher than the fee cap (\\`maxFeePerGas\\`${\n maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)} gwei` : ''\n }).`,\n ].join('\\n'),\n {\n cause,\n name: 'TipAboveFeeCapError',\n },\n )\n }\n}\n\nexport type UnknownNodeErrorType = UnknownNodeError & {\n name: 'UnknownNodeError'\n}\nexport class UnknownNodeError extends BaseError {\n constructor({ cause }: { cause?: BaseError | undefined }) {\n super(`An error occurred while executing: ${cause?.shortMessage}`, {\n cause,\n name: 'UnknownNodeError',\n })\n }\n}\n","import { stringify } from '../utils/stringify.js'\n\nimport { BaseError } from './base.js'\nimport { getUrl } from './utils.js'\n\nexport type HttpRequestErrorType = HttpRequestError & {\n name: 'HttpRequestError'\n}\nexport class HttpRequestError extends BaseError {\n body?: { [x: string]: unknown } | { [y: string]: unknown }[] | undefined\n headers?: Headers | undefined\n status?: number | undefined\n url: string\n\n constructor({\n body,\n cause,\n details,\n headers,\n status,\n url,\n }: {\n body?: { [x: string]: unknown } | { [y: string]: unknown }[] | undefined\n cause?: Error | undefined\n details?: string | undefined\n headers?: Headers | undefined\n status?: number | undefined\n url: string\n }) {\n super('HTTP request failed.', {\n cause,\n details,\n metaMessages: [\n status && `Status: ${status}`,\n `URL: ${getUrl(url)}`,\n body && `Request body: ${stringify(body)}`,\n ].filter(Boolean) as string[],\n name: 'HttpRequestError',\n })\n this.body = body\n this.headers = headers\n this.status = status\n this.url = url\n }\n}\n\nexport type WebSocketRequestErrorType = WebSocketRequestError & {\n name: 'WebSocketRequestError'\n}\nexport class WebSocketRequestError extends BaseError {\n constructor({\n body,\n cause,\n details,\n url,\n }: {\n body?: { [key: string]: unknown } | undefined\n cause?: Error | undefined\n details?: string | undefined\n url: string\n }) {\n super('WebSocket request failed.', {\n cause,\n details,\n metaMessages: [\n `URL: ${getUrl(url)}`,\n body && `Request body: ${stringify(body)}`,\n ].filter(Boolean) as string[],\n name: 'WebSocketRequestError',\n })\n }\n}\n\nexport type RpcRequestErrorType = RpcRequestError & {\n name: 'RpcRequestError'\n}\nexport class RpcRequestError extends BaseError {\n code: number\n\n constructor({\n body,\n error,\n url,\n }: {\n body: { [x: string]: unknown } | { [y: string]: unknown }[]\n error: { code: number; message: string }\n url: string\n }) {\n super('RPC Request failed.', {\n cause: error as any,\n details: error.message,\n metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],\n name: 'RpcRequestError',\n })\n this.code = error.code\n }\n}\n\nexport type SocketClosedErrorType = SocketClosedError & {\n name: 'SocketClosedError'\n}\nexport class SocketClosedError extends BaseError {\n constructor({\n url,\n }: {\n url?: string | undefined\n } = {}) {\n super('The socket has been closed.', {\n metaMessages: [url && `URL: ${getUrl(url)}`].filter(Boolean) as string[],\n name: 'SocketClosedError',\n })\n }\n}\n\nexport type TimeoutErrorType = TimeoutError & {\n name: 'TimeoutError'\n}\nexport class TimeoutError extends BaseError {\n constructor({\n body,\n url,\n }: {\n body: { [x: string]: unknown } | { [y: string]: unknown }[]\n url: string\n }) {\n super('The request took too long to respond.', {\n details: 'The request timed out.',\n metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],\n name: 'TimeoutError',\n })\n }\n}\n","import type { Prettify } from '../types/utils.js'\nimport { BaseError } from './base.js'\nimport { RpcRequestError } from './request.js'\n\nconst unknownErrorCode = -1\n\nexport type RpcErrorCode =\n | -1\n | -32700 // Parse error\n | -32600 // Invalid request\n | -32601 // Method not found\n | -32602 // Invalid params\n | -32603 // Internal error\n | -32000 // Invalid input\n | -32001 // Resource not found\n | -32002 // Resource unavailable\n | -32003 // Transaction rejected\n | -32004 // Method not supported\n | -32005 // Limit exceeded\n | -32006 // JSON-RPC version not supported\n | -32042 // Method not found\n\ntype RpcErrorOptions<code extends number = RpcErrorCode> = {\n code?: code | (number & {}) | undefined\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n name?: string | undefined\n shortMessage: string\n}\n\n/**\n * Error subclass implementing JSON RPC 2.0 errors and Ethereum RPC errors per EIP-1474.\n *\n * - EIP https://eips.ethereum.org/EIPS/eip-1474\n */\nexport type RpcErrorType = RpcError & { name: 'RpcError' }\nexport class RpcError<code_ extends number = RpcErrorCode> extends BaseError {\n code: code_ | (number & {})\n\n constructor(\n cause: Error,\n {\n code,\n docsPath,\n metaMessages,\n name,\n shortMessage,\n }: RpcErrorOptions<code_>,\n ) {\n super(shortMessage, {\n cause,\n docsPath,\n metaMessages:\n metaMessages || (cause as { metaMessages?: string[] })?.metaMessages,\n name: name || 'RpcError',\n })\n this.name = name || cause.name\n this.code = (\n cause instanceof RpcRequestError ? cause.code : (code ?? unknownErrorCode)\n ) as code_\n }\n}\n\nexport type ProviderRpcErrorCode =\n | 4001 // User Rejected Request\n | 4100 // Unauthorized\n | 4200 // Unsupported Method\n | 4900 // Disconnected\n | 4901 // Chain Disconnected\n | 4902 // Chain Not Recognized\n\n/**\n * Error subclass implementing Ethereum Provider errors per EIP-1193.\n *\n * - EIP https://eips.ethereum.org/EIPS/eip-1193\n */\nexport type ProviderRpcErrorType = ProviderRpcError & {\n name: 'ProviderRpcError'\n}\nexport class ProviderRpcError<\n T = undefined,\n> extends RpcError<ProviderRpcErrorCode> {\n data?: T | undefined\n\n constructor(\n cause: Error,\n options: Prettify<\n RpcErrorOptions<ProviderRpcErrorCode> & {\n data?: T | undefined\n }\n >,\n ) {\n super(cause, options)\n\n this.data = options.data\n }\n}\n\n/**\n * Subclass for a \"Parse error\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type ParseRpcErrorType = ParseRpcError & {\n code: -32700\n name: 'ParseRpcError'\n}\nexport class ParseRpcError extends RpcError {\n static code = -32700 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: ParseRpcError.code,\n name: 'ParseRpcError',\n shortMessage:\n 'Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.',\n })\n }\n}\n\n/**\n * Subclass for a \"Invalid request\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type InvalidRequestRpcErrorType = InvalidRequestRpcError & {\n code: -32600\n name: 'InvalidRequestRpcError'\n}\nexport class InvalidRequestRpcError extends RpcError {\n static code = -32600 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: InvalidRequestRpcError.code,\n name: 'InvalidRequestRpcError',\n shortMessage: 'JSON is not a valid request object.',\n })\n }\n}\n\n/**\n * Subclass for a \"Method not found\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type MethodNotFoundRpcErrorType = MethodNotFoundRpcError & {\n code: -32601\n name: 'MethodNotFoundRpcError'\n}\nexport class MethodNotFoundRpcError extends RpcError {\n static code = -32601 as const\n\n constructor(cause: Error, { method }: { method?: string } = {}) {\n super(cause, {\n code: MethodNotFoundRpcError.code,\n name: 'MethodNotFoundRpcError',\n shortMessage: `The method${method ? ` \"${method}\"` : ''} does not exist / is not available.`,\n })\n }\n}\n\n/**\n * Subclass for an \"Invalid params\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type InvalidParamsRpcErrorType = InvalidParamsRpcError & {\n code: -32602\n name: 'InvalidParamsRpcError'\n}\nexport class InvalidParamsRpcError extends RpcError {\n static code = -32602 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: InvalidParamsRpcError.code,\n name: 'InvalidParamsRpcError',\n shortMessage: [\n 'Invalid parameters were provided to the RPC method.',\n 'Double check you have provided the correct parameters.',\n ].join('\\n'),\n })\n }\n}\n\n/**\n * Subclass for an \"Internal error\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type InternalRpcErrorType = InternalRpcError & {\n code: -32603\n name: 'InternalRpcError'\n}\nexport class InternalRpcError extends RpcError {\n static code = -32603 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: InternalRpcError.code,\n name: 'InternalRpcError',\n shortMessage: 'An internal error was received.',\n })\n }\n}\n\n/**\n * Subclass for an \"Invalid input\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type InvalidInputRpcErrorType = InvalidInputRpcError & {\n code: -32000\n name: 'InvalidInputRpcError'\n}\nexport class InvalidInputRpcError extends RpcError {\n static code = -32000 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: InvalidInputRpcError.code,\n name: 'InvalidInputRpcError',\n shortMessage: [\n 'Missing or invalid parameters.',\n 'Double check you have provided the correct parameters.',\n ].join('\\n'),\n })\n }\n}\n\n/**\n * Subclass for a \"Resource not found\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type ResourceNotFoundRpcErrorType = ResourceNotFoundRpcError & {\n code: -32001\n name: 'ResourceNotFoundRpcError'\n}\nexport class ResourceNotFoundRpcError extends RpcError {\n override name = 'ResourceNotFoundRpcError'\n static code = -32001 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: ResourceNotFoundRpcError.code,\n name: 'ResourceNotFoundRpcError',\n shortMessage: 'Requested resource not found.',\n })\n }\n}\n\n/**\n * Subclass for a \"Resource unavailable\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type ResourceUnavailableRpcErrorType = ResourceUnavailableRpcError & {\n code: -32002\n name: 'ResourceUnavailableRpcError'\n}\nexport class ResourceUnavailableRpcError extends RpcError {\n static code = -32002 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: ResourceUnavailableRpcError.code,\n name: 'ResourceUnavailableRpcError',\n shortMessage: 'Requested resource not available.',\n })\n }\n}\n\n/**\n * Subclass for a \"Transaction rejected\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type TransactionRejectedRpcErrorType = TransactionRejectedRpcError & {\n code: -32003\n name: 'TransactionRejectedRpcError'\n}\nexport class TransactionRejectedRpcError extends RpcError {\n static code = -32003 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: TransactionRejectedRpcError.code,\n name: 'TransactionRejectedRpcError',\n shortMessage: 'Transaction creation failed.',\n })\n }\n}\n\n/**\n * Subclass for a \"Method not supported\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type MethodNotSupportedRpcErrorType = MethodNotSupportedRpcError & {\n code: -32004\n name: 'MethodNotSupportedRpcError'\n}\nexport class MethodNotSupportedRpcError extends RpcError {\n static code = -32004 as const\n\n constructor(cause: Error, { method }: { method?: string } = {}) {\n super(cause, {\n code: MethodNotSupportedRpcError.code,\n name: 'MethodNotSupportedRpcError',\n shortMessage: `Method${method ? ` \"${method}\"` : ''} is not implemented.`,\n })\n }\n}\n\n/**\n * Subclass for a \"Limit exceeded\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type LimitExceededRpcErrorType = LimitExceededRpcError & {\n code: -32005\n name: 'LimitExceededRpcError'\n}\nexport class LimitExceededRpcError extends RpcError {\n static code = -32005 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: LimitExceededRpcError.code,\n name: 'LimitExceededRpcError',\n shortMessage: 'Request exceeds defined limit.',\n })\n }\n}\n\n/**\n * Subclass for a \"JSON-RPC version not supported\" EIP-1474 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1474#error-codes\n */\nexport type JsonRpcVersionUnsupportedErrorType =\n JsonRpcVersionUnsupportedError & {\n code: -32006\n name: 'JsonRpcVersionUnsupportedError'\n }\nexport class JsonRpcVersionUnsupportedError extends RpcError {\n static code = -32006 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: JsonRpcVersionUnsupportedError.code,\n name: 'JsonRpcVersionUnsupportedError',\n shortMessage: 'Version of JSON-RPC protocol is not supported.',\n })\n }\n}\n\n/**\n * Subclass for a \"User Rejected Request\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type UserRejectedRequestErrorType = UserRejectedRequestError & {\n code: 4001\n name: 'UserRejectedRequestError'\n}\nexport class UserRejectedRequestError extends ProviderRpcError {\n static code = 4001 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: UserRejectedRequestError.code,\n name: 'UserRejectedRequestError',\n shortMessage: 'User rejected the request.',\n })\n }\n}\n\n/**\n * Subclass for an \"Unauthorized\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type UnauthorizedProviderErrorType = UnauthorizedProviderError & {\n code: 4100\n name: 'UnauthorizedProviderError'\n}\nexport class UnauthorizedProviderError extends ProviderRpcError {\n static code = 4100 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: UnauthorizedProviderError.code,\n name: 'UnauthorizedProviderError',\n shortMessage:\n 'The requested method and/or account has not been authorized by the user.',\n })\n }\n}\n\n/**\n * Subclass for an \"Unsupported Method\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type UnsupportedProviderMethodErrorType =\n UnsupportedProviderMethodError & {\n code: 4200\n name: 'UnsupportedProviderMethodError'\n }\nexport class UnsupportedProviderMethodError extends ProviderRpcError {\n static code = 4200 as const\n\n constructor(cause: Error, { method }: { method?: string } = {}) {\n super(cause, {\n code: UnsupportedProviderMethodError.code,\n name: 'UnsupportedProviderMethodError',\n shortMessage: `The Provider does not support the requested method${method ? ` \" ${method}\"` : ''}.`,\n })\n }\n}\n\n/**\n * Subclass for an \"Disconnected\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type ProviderDisconnectedErrorType = ProviderDisconnectedError & {\n code: 4900\n name: 'ProviderDisconnectedError'\n}\nexport class ProviderDisconnectedError extends ProviderRpcError {\n static code = 4900 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: ProviderDisconnectedError.code,\n name: 'ProviderDisconnectedError',\n shortMessage: 'The Provider is disconnected from all chains.',\n })\n }\n}\n\n/**\n * Subclass for an \"Chain Disconnected\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type ChainDisconnectedErrorType = ChainDisconnectedError & {\n code: 4901\n name: 'ChainDisconnectedError'\n}\nexport class ChainDisconnectedError extends ProviderRpcError {\n static code = 4901 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: ChainDisconnectedError.code,\n name: 'ChainDisconnectedError',\n shortMessage: 'The Provider is not connected to the requested chain.',\n })\n }\n}\n\n/**\n * Subclass for an \"Switch Chain\" EIP-1193 error.\n *\n * EIP https://eips.ethereum.org/EIPS/eip-1193#provider-errors\n */\nexport type SwitchChainErrorType = SwitchChainError & {\n code: 4902\n name: 'SwitchChainError'\n}\nexport class SwitchChainError extends ProviderRpcError {\n static code = 4902 as const\n\n constructor(cause: Error) {\n super(cause, {\n code: SwitchChainError.code,\n name: 'SwitchChainError',\n shortMessage: 'An error occurred when attempting to switch chain.',\n })\n }\n}\n\n/**\n * Subclass for an unknown RPC error.\n */\nexport type UnknownRpcErrorType = UnknownRpcError & {\n name: 'UnknownRpcError'\n}\nexport class UnknownRpcError extends RpcError {\n constructor(cause: Error) {\n super(cause, {\n name: 'UnknownRpcError',\n shortMessage: 'An unknown RPC error occurred.',\n })\n }\n}\n","import type { StateMapping, StateOverride } from '../types/stateOverride.js'\nimport { BaseError } from './base.js'\n\nexport type AccountStateConflictErrorType = AccountStateConflictError & {\n name: 'AccountStateConflictError'\n}\n\nexport class AccountStateConflictError extends BaseError {\n constructor({ address }: { address: string }) {\n super(`State for account \"${address}\" is set multiple times.`, {\n name: 'AccountStateConflictError',\n })\n }\n}\n\nexport type StateAssignmentConflictErrorType = StateAssignmentConflictError & {\n name: 'StateAssignmentConflictError'\n}\n\nexport class StateAssignmentConflictError extends BaseError {\n constructor() {\n super('state and stateDiff are set on the same account.', {\n name: 'StateAssignmentConflictError',\n })\n }\n}\n\n/** @internal */\nexport function prettyStateMapping(stateMapping: StateMapping) {\n return stateMapping.reduce((pretty, { slot, value }) => {\n return `${pretty} ${slot}: ${value}\\n`\n }, '')\n}\n\nexport function prettyStateOverride(stateOverride: StateOverride) {\n return stateOverride\n .reduce((pretty, { address, ...state }) => {\n let val = `${pretty} ${address}:\\n`\n if (state.nonce) val += ` nonce: ${state.nonce}\\n`\n if (state.balance) val += ` balance: ${state.balance}\\n`\n if (state.code) val += ` code: ${state.code}\\n`\n if (state.state) {\n val += ' state:\\n'\n val += prettyStateMapping(state.state)\n }\n if (state.stateDiff) {\n val += ' stateDiff:\\n'\n val += prettyStateMapping(state.stateDiff)\n }\n return val\n }, ' State Override:\\n')\n .slice(0, -1)\n}\n","import type { Account } from '../accounts/types.js'\nimport type { SendTransactionParameters } from '../actions/wallet/sendTransaction.js'\nimport type { BlockTag } from '../types/block.js'\nimport type { Chain } from '../types/chain.js'\nimport type { Hash, Hex } from '../types/misc.js'\nimport type { TransactionType } from '../types/transaction.js'\nimport { formatEther } from '../utils/unit/formatEther.js'\nimport { formatGwei } from '../utils/unit/formatGwei.js'\n\nimport { BaseError } from './base.js'\n\nexport function prettyPrint(\n args: Record<string, bigint | number | string | undefined | false | unknown>,\n) {\n const entries = Object.entries(args)\n .map(([key, value]) => {\n if (value === undefined || value === false) return null\n return [key, value]\n })\n .filter(Boolean) as [string, string][]\n const maxLength = entries.reduce((acc, [key]) => Math.max(acc, key.length), 0)\n return entries\n .map(([key, value]) => ` ${`${key}:`.padEnd(maxLength + 1)} ${value}`)\n .join('\\n')\n}\n\nexport type FeeConflictErrorType = FeeConflictError & {\n name: 'FeeConflictError'\n}\nexport class FeeConflictError extends BaseError {\n constructor() {\n super(\n [\n 'Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.',\n 'Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others.',\n ].join('\\n'),\n { name: 'FeeConflictError' },\n )\n }\n}\n\nexport type InvalidLegacyVErrorType = InvalidLegacyVError & {\n name: 'InvalidLegacyVError'\n}\nexport class InvalidLegacyVError extends BaseError {\n constructor({ v }: { v: bigint }) {\n super(`Invalid \\`v\\` value \"${v}\". Expected 27 or 28.`, {\n name: 'InvalidLegacyVError',\n })\n }\n}\n\nexport type InvalidSerializableTransactionErrorType =\n InvalidSerializableTransactionError & {\n name: 'InvalidSerializableTransactionError'\n }\nexport class InvalidSerializableTransactionError extends BaseError {\n constructor({ transaction }: { transaction: Record<string, unknown> }) {\n super('Cannot infer a transaction type from provided transaction.', {\n metaMessages: [\n 'Provided Transaction:',\n '{',\n prettyPrint(transaction),\n '}',\n '',\n 'To infer the type, either provide:',\n '- a `type` to the Transaction, or',\n '- an EIP-1559 Transaction with `maxFeePerGas`, or',\n '- an EIP-2930 Transaction with `gasPrice` & `accessList`, or',\n '- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or',\n '- an EIP-7702 Transaction with `authorizationList`, or',\n '- a Legacy Transaction with `gasPrice`',\n ],\n name: 'InvalidSerializableTransactionError',\n })\n }\n}\n\nexport type InvalidSerializedTransactionTypeErrorType =\n InvalidSerializedTransactionTypeError & {\n name: 'InvalidSerializedTransactionTypeError'\n }\nexport class InvalidSerializedTransactionTypeError extends BaseError {\n serializedType: Hex\n\n constructor({ serializedType }: { serializedType: Hex }) {\n super(`Serialized transaction type \"${serializedType}\" is invalid.`, {\n name: 'InvalidSerializedTransactionType',\n })\n\n this.serializedType = serializedType\n }\n}\n\nexport type InvalidSerializedTransactionErrorType =\n InvalidSerializedTransactionError & {\n name: 'InvalidSerializedTransactionError'\n }\nexport class InvalidSerializedTransactionError extends BaseError {\n serializedTransaction: Hex\n type: TransactionType\n\n constructor({\n attributes,\n serializedTransaction,\n type,\n }: {\n attributes: Record<string, unknown>\n serializedTransaction: Hex\n type: TransactionType\n }) {\n const missing = Object.entries(attributes)\n .map(([key, value]) => (typeof value === 'undefined' ? key : undefined))\n .filter(Boolean)\n super(`Invalid serialized transaction of type \"${type}\" was provided.`, {\n metaMessages: [\n `Serialized Transaction: \"${serializedTransaction}\"`,\n missing.length > 0 ? `Missing Attributes: ${missing.join(', ')}` : '',\n ].filter(Boolean),\n name: 'InvalidSerializedTransactionError',\n })\n\n this.serializedTransaction = serializedTransaction\n this.type = type\n }\n}\n\nexport type InvalidStorageKeySizeErrorType = InvalidStorageKeySizeError & {\n name: 'InvalidStorageKeySizeError'\n}\nexport class InvalidStorageKeySizeError extends BaseError {\n constructor({ storageKey }: { storageKey: Hex }) {\n super(\n `Size for storage key \"${storageKey}\" is invalid. Expected 32 bytes. Got ${Math.floor(\n (storageKey.length - 2) / 2,\n )} bytes.`,\n { name: 'InvalidStorageKeySizeError' },\n )\n }\n}\n\nexport type TransactionExecutionErrorType = TransactionExecutionError & {\n name: 'TransactionExecutionError'\n}\nexport class TransactionExecutionError extends BaseError {\n override cause: BaseError\n\n constructor(\n cause: BaseError,\n {\n account,\n docsPath,\n chain,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n }: Omit<SendTransactionParameters, 'account' | 'chain'> & {\n account: Account | null\n chain?: Chain | undefined\n docsPath?: string | undefined\n },\n ) {\n const prettyArgs = prettyPrint({\n chain: chain && `${chain?.name} (id: ${chain?.id})`,\n from: account?.address,\n to,\n value:\n typeof value !== 'undefined' &&\n `${formatEther(value)} ${chain?.nativeCurrency?.symbol || 'ETH'}`,\n data,\n gas,\n gasPrice:\n typeof gasPrice !== 'undefined' && `${formatGwei(gasPrice)} gwei`,\n maxFeePerGas:\n typeof maxFeePerGas !== 'undefined' &&\n `${formatGwei(maxFeePerGas)} gwei`,\n maxPriorityFeePerGas:\n typeof maxPriorityFeePerGas !== 'undefined' &&\n `${formatGwei(maxPriorityFeePerGas)} gwei`,\n nonce,\n })\n\n super(cause.shortMessage, {\n cause,\n docsPath,\n metaMessages: [\n ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n 'Request Arguments:',\n prettyArgs,\n ].filter(Boolean) as string[],\n name: 'TransactionExecutionError',\n })\n this.cause = cause\n }\n}\n\nexport type TransactionNotFoundErrorType = TransactionNotFoundError & {\n name: 'TransactionNotFoundError'\n}\nexport class TransactionNotFoundError extends BaseError {\n constructor({\n blockHash,\n blockNumber,\n blockTag,\n hash,\n index,\n }: {\n blockHash?: Hash | undefined\n blockNumber?: bigint | undefined\n blockTag?: BlockTag | undefined\n hash?: Hash | undefined\n index?: number | undefined\n }) {\n let identifier = 'Transaction'\n if (blockTag && index !== undefined)\n identifier = `Transaction at block time \"${blockTag}\" at index \"${index}\"`\n if (blockHash && index !== undefined)\n identifier = `Transaction at block hash \"${blockHash}\" at index \"${index}\"`\n if (blockNumber && index !== undefined)\n identifier = `Transaction at block number \"${blockNumber}\" at index \"${index}\"`\n if (hash) identifier = `Transaction with hash \"${hash}\"`\n super(`${identifier} could not be found.`, {\n name: 'TransactionNotFoundError',\n })\n }\n}\n\nexport type TransactionReceiptNotFoundErrorType =\n TransactionReceiptNotFoundError & {\n name: 'TransactionReceiptNotFoundError'\n }\nexport class TransactionReceiptNotFoundError extends BaseError {\n constructor({ hash }: { hash: Hash }) {\n super(\n `Transaction receipt with hash \"${hash}\" could not be found. The Transaction may not be processed on a block yet.`,\n {\n name: 'TransactionReceiptNotFoundError',\n },\n )\n }\n}\n\nexport type WaitForTransactionReceiptTimeoutErrorType =\n WaitForTransactionReceiptTimeoutError & {\n name: 'WaitForTransactionReceiptTimeoutError'\n }\nexport class WaitForTransactionReceiptTimeoutError extends BaseError {\n constructor({ hash }: { hash: Hash }) {\n super(\n `Timed out while waiting for transaction with hash \"${hash}\" to be confirmed.`,\n { name: 'WaitForTransactionReceiptTimeoutError' },\n )\n }\n}\n","import type { Address } from 'abitype'\n\nexport type ErrorType<name extends string = 'Error'> = Error & { name: name }\n\nexport const getContractAddress = (address: Address) => address\nexport const getUrl = (url: string) => url\n","import type { ErrorType } from '../../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../../types/misc.js'\nimport {\n type ConcatHexErrorType,\n concatHex,\n} from '../../../utils/data/concat.js'\nimport {\n type HexToBytesErrorType,\n hexToBytes,\n} from '../../../utils/encoding/toBytes.js'\nimport {\n type NumberToHexErrorType,\n numberToHex,\n} from '../../../utils/encoding/toHex.js'\nimport { type ToRlpErrorType, toRlp } from '../../../utils/encoding/toRlp.js'\nimport {\n type Keccak256ErrorType,\n keccak256,\n} from '../../../utils/hash/keccak256.js'\nimport type { Authorization } from '../types/authorization.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type HashAuthorizationParameters<to extends To> = Authorization & {\n /** Output format. @default \"hex\" */\n to?: to | To | undefined\n}\n\nexport type HashAuthorizationReturnType<to extends To> =\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type HashAuthorizationErrorType =\n | Keccak256ErrorType\n | ConcatHexErrorType\n | ToRlpErrorType\n | NumberToHexErrorType\n | HexToBytesErrorType\n | ErrorType\n\n/**\n * Computes an Authorization hash in [EIP-7702 format](https://eips.ethereum.org/EIPS/eip-7702): `keccak256('0x05' || rlp([chain_id, address, nonce]))`.\n */\nexport function hashAuthorization<to extends To = 'hex'>(\n parameters: HashAuthorizationParameters<to>,\n): HashAuthorizationReturnType<to> {\n const { chainId, contractAddress, nonce, to } = parameters\n const hash = keccak256(\n concatHex([\n '0x05',\n toRlp([\n chainId ? numberToHex(chainId) : '0x',\n contractAddress,\n nonce ? numberToHex(nonce) : '0x',\n ]),\n ]),\n )\n if (to === 'bytes') return hexToBytes(hash) as HashAuthorizationReturnType<to>\n return hash as HashAuthorizationReturnType<to>\n}\n","import type { Address } from 'abitype'\n\nimport type { ErrorType } from '../../../errors/utils.js'\nimport type { ByteArray, Hex, Signature } from '../../../types/misc.js'\nimport type { OneOf } from '../../../types/utils.js'\nimport {\n type RecoverAddressErrorType,\n recoverAddress,\n} from '../../../utils/signature/recoverAddress.js'\nimport type {\n Authorization,\n SignedAuthorization,\n} from '../types/authorization.js'\nimport {\n type HashAuthorizationErrorType,\n hashAuthorization,\n} from './hashAuthorization.js'\n\nexport type RecoverAuthorizationAddressParameters<\n authorization extends OneOf<Authorization | SignedAuthorization> = OneOf<\n Authorization | SignedAuthorization\n >,\n //\n _signature = Hex | ByteArray | OneOf<Signature | SignedAuthorization>,\n> = {\n /**\n * The Authorization object.\n *\n * - If an unsigned `authorization` is provided, the `signature` property is required.\n * - If a signed `authorization` is provided, the `signature` property does not need to be provided.\n */\n authorization: authorization | OneOf<Authorization | SignedAuthorization>\n} & (authorization extends SignedAuthorization\n ? {\n /** Signature of the Authorization. Not required if the `authorization` is signed. */\n signature?: _signature | undefined\n }\n : {\n /** Signature of the Authorization. Not required if the `authorization` is signed. */\n signature: _signature\n })\n\nexport type RecoverAuthorizationAddressReturnType = Address\n\nexport type RecoverAuthorizationAddressErrorType =\n | HashAuthorizationErrorType\n | RecoverAddressErrorType\n | ErrorType\n\nexport async function recoverAuthorizationAddress<\n const authorization extends OneOf<Authorization | SignedAuthorization>,\n>(\n parameters: RecoverAuthorizationAddressParameters<authorization>,\n): Promise<RecoverAuthorizationAddressReturnType> {\n const { authorization, signature } = parameters\n\n return recoverAddress({\n hash: hashAuthorization(authorization as Authorization),\n signature: (signature ?? authorization) as Signature,\n })\n}\n","import type { ChainFormatters } from '../types/chain.js'\nimport type { RpcTransaction } from '../types/rpc.js'\nimport { hexToBigInt } from '../utils/encoding/fromHex.js'\nimport { defineBlock } from '../utils/formatters/block.js'\nimport {\n defineTransaction,\n formatTransaction,\n} from '../utils/formatters/transaction.js'\nimport { defineTransactionReceipt } from '../utils/formatters/transactionReceipt.js'\nimport type { OpStackBlock, OpStackRpcBlock } from './types/block.js'\nimport type {\n OpStackRpcTransaction,\n OpStackRpcTransactionReceipt,\n OpStackTransaction,\n OpStackTransactionReceipt,\n} from './types/transaction.js'\n\nexport const formatters = {\n block: /*#__PURE__*/ defineBlock({\n format(args: OpStackRpcBlock): OpStackBlock {\n const transactions = args.transactions?.map((transaction) => {\n if (typeof transaction === 'string') return transaction\n const formatted = formatTransaction(\n transaction as RpcTransaction,\n ) as OpStackTransaction\n if (formatted.typeHex === '0x7e') {\n formatted.isSystemTx = transaction.isSystemTx\n formatted.mint = transaction.mint\n ? hexToBigInt(transaction.mint)\n : undefined\n formatted.sourceHash = transaction.sourceHash\n formatted.type = 'deposit'\n }\n return formatted\n })\n return {\n transactions,\n stateRoot: args.stateRoot,\n } as OpStackBlock\n },\n }),\n transaction: /*#__PURE__*/ defineTransaction({\n format(args: OpStackRpcTransaction): OpStackTransaction {\n const transaction = {} as OpStackTransaction\n if (args.type === '0x7e') {\n transaction.isSystemTx = args.isSystemTx\n transaction.mint = args.mint ? hexToBigInt(args.mint) : undefined\n transaction.sourceHash = args.sourceHash\n transaction.type = 'deposit'\n }\n return transaction\n },\n }),\n transactionReceipt: /*#__PURE__*/ defineTransactionReceipt({\n format(args: OpStackRpcTransactionReceipt): OpStackTransactionReceipt {\n return {\n l1GasPrice: args.l1GasPrice ? hexToBigInt(args.l1GasPrice) : null,\n l1GasUsed: args.l1GasUsed ? hexToBigInt(args.l1GasUsed) : null,\n l1Fee: args.l1Fee ? hexToBigInt(args.l1Fee) : null,\n l1FeeScalar: args.l1FeeScalar ? Number(args.l1FeeScalar) : null,\n } as OpStackTransactionReceipt\n },\n }),\n} as const satisfies ChainFormatters\n","import { versionedHashVersionKzg } from '../../constants/kzg.js'\nimport { maxUint256 } from '../../constants/number.js'\nimport {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../../errors/address.js'\nimport { BaseError, type BaseErrorType } from '../../errors/base.js'\nimport {\n EmptyBlobError,\n type EmptyBlobErrorType,\n InvalidVersionedHashSizeError,\n type InvalidVersionedHashSizeErrorType,\n InvalidVersionedHashVersionError,\n type InvalidVersionedHashVersionErrorType,\n} from '../../errors/blob.js'\nimport {\n InvalidChainIdError,\n type InvalidChainIdErrorType,\n} from '../../errors/chain.js'\nimport {\n FeeCapTooHighError,\n type FeeCapTooHighErrorType,\n TipAboveFeeCapError,\n type TipAboveFeeCapErrorType,\n} from '../../errors/node.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type {\n TransactionSerializableEIP1559,\n TransactionSerializableEIP2930,\n TransactionSerializableEIP4844,\n TransactionSerializableEIP7702,\n TransactionSerializableLegacy,\n} from '../../types/transaction.js'\nimport { type IsAddressErrorType, isAddress } from '../address/isAddress.js'\nimport { size } from '../data/size.js'\nimport { slice } from '../data/slice.js'\nimport { hexToNumber } from '../encoding/fromHex.js'\n\nexport type AssertTransactionEIP7702ErrorType =\n | AssertTransactionEIP1559ErrorType\n | InvalidAddressErrorType\n | InvalidChainIdErrorType\n | ErrorType\n\nexport function assertTransactionEIP7702(\n transaction: TransactionSerializableEIP7702,\n) {\n const { authorizationList } = transaction\n if (authorizationList) {\n for (const authorization of authorizationList) {\n const { contractAddress, chainId } = authorization\n if (!isAddress(contractAddress))\n throw new InvalidAddressError({ address: contractAddress })\n if (chainId < 0) throw new InvalidChainIdError({ chainId })\n }\n }\n assertTransactionEIP1559(transaction as {} as TransactionSerializableEIP1559)\n}\n\nexport type AssertTransactionEIP4844ErrorType =\n | AssertTransactionEIP1559ErrorType\n | EmptyBlobErrorType\n | InvalidVersionedHashSizeErrorType\n | InvalidVersionedHashVersionErrorType\n | ErrorType\n\nexport function assertTransactionEIP4844(\n transaction: TransactionSerializableEIP4844,\n) {\n const { blobVersionedHashes } = transaction\n if (blobVersionedHashes) {\n if (blobVersionedHashes.length === 0) throw new EmptyBlobError()\n for (const hash of blobVersionedHashes) {\n const size_ = size(hash)\n const version = hexToNumber(slice(hash, 0, 1))\n if (size_ !== 32)\n throw new InvalidVersionedHashSizeError({ hash, size: size_ })\n if (version !== versionedHashVersionKzg)\n throw new InvalidVersionedHashVersionError({\n hash,\n version,\n })\n }\n }\n assertTransactionEIP1559(transaction as {} as TransactionSerializableEIP1559)\n}\n\nexport type AssertTransactionEIP1559ErrorType =\n | BaseErrorType\n | IsAddressErrorType\n | InvalidAddressErrorType\n | InvalidChainIdErrorType\n | FeeCapTooHighErrorType\n | TipAboveFeeCapErrorType\n | ErrorType\n\nexport function assertTransactionEIP1559(\n transaction: TransactionSerializableEIP1559,\n) {\n const { chainId, maxPriorityFeePerGas, maxFeePerGas, to } = transaction\n if (chainId <= 0) throw new InvalidChainIdError({ chainId })\n if (to && !isAddress(to)) throw new InvalidAddressError({ address: to })\n if (maxFeePerGas && maxFeePerGas > maxUint256)\n throw new FeeCapTooHighError({ maxFeePerGas })\n if (\n maxPriorityFeePerGas &&\n maxFeePerGas &&\n maxPriorityFeePerGas > maxFeePerGas\n )\n throw new TipAboveFeeCapError({ maxFeePerGas, maxPriorityFeePerGas })\n}\n\nexport type AssertTransactionEIP2930ErrorType =\n | BaseErrorType\n | IsAddressErrorType\n | InvalidAddressErrorType\n | InvalidChainIdErrorType\n | FeeCapTooHighErrorType\n | ErrorType\n\nexport function assertTransactionEIP2930(\n transaction: TransactionSerializableEIP2930,\n) {\n const { chainId, maxPriorityFeePerGas, gasPrice, maxFeePerGas, to } =\n transaction\n if (chainId <= 0) throw new InvalidChainIdError({ chainId })\n if (to && !isAddress(to)) throw new InvalidAddressError({ address: to })\n if (maxPriorityFeePerGas || maxFeePerGas)\n throw new BaseError(\n '`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.',\n )\n if (gasPrice && gasPrice > maxUint256)\n throw new FeeCapTooHighError({ maxFeePerGas: gasPrice })\n}\n\nexport type AssertTransactionLegacyErrorType =\n | BaseErrorType\n | IsAddressErrorType\n | InvalidAddressErrorType\n | InvalidChainIdErrorType\n | FeeCapTooHighErrorType\n | ErrorType\n\nexport function assertTransactionLegacy(\n transaction: TransactionSerializableLegacy,\n) {\n const { chainId, maxPriorityFeePerGas, gasPrice, maxFeePerGas, to } =\n transaction\n if (to && !isAddress(to)) throw new InvalidAddressError({ address: to })\n if (typeof chainId !== 'undefined' && chainId <= 0)\n throw new InvalidChainIdError({ chainId })\n if (maxPriorityFeePerGas || maxFeePerGas)\n throw new BaseError(\n '`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.',\n )\n if (gasPrice && gasPrice > maxUint256)\n throw new FeeCapTooHighError({ maxFeePerGas: gasPrice })\n}\n","import {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../../errors/address.js'\nimport {\n InvalidStorageKeySizeError,\n type InvalidStorageKeySizeErrorType,\n} from '../../errors/transaction.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { AccessList } from '../../types/transaction.js'\nimport { type IsAddressErrorType, isAddress } from '../address/isAddress.js'\nimport type { RecursiveArray } from '../encoding/toRlp.js'\n\nexport type SerializeAccessListErrorType =\n | InvalidStorageKeySizeErrorType\n | InvalidAddressErrorType\n | IsAddressErrorType\n | ErrorType\n\n/*\n * Serialize an EIP-2930 access list\n * @remarks\n * Use to create a transaction serializer with support for EIP-2930 access lists\n *\n * @param accessList - Array of objects of address and arrays of Storage Keys\n * @throws InvalidAddressError, InvalidStorageKeySizeError\n * @returns Array of hex strings\n */\nexport function serializeAccessList(\n accessList?: AccessList | undefined,\n): RecursiveArray<Hex> {\n if (!accessList || accessList.length === 0) return []\n\n const serializedAccessList = []\n for (let i = 0; i < accessList.length; i++) {\n const { address, storageKeys } = accessList[i]\n\n for (let j = 0; j < storageKeys.length; j++) {\n if (storageKeys[j].length - 2 !== 64) {\n throw new InvalidStorageKeySizeError({ storageKey: storageKeys[j] })\n }\n }\n\n if (!isAddress(address, { strict: false })) {\n throw new InvalidAddressError({ address })\n }\n\n serializedAccessList.push([address, storageKeys])\n }\n return serializedAccessList\n}\n","import {\n InvalidLegacyVError,\n type InvalidLegacyVErrorType,\n} from '../../errors/transaction.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type {\n ByteArray,\n Hex,\n Signature,\n SignatureLegacy,\n} from '../../types/misc.js'\nimport type {\n TransactionSerializable,\n TransactionSerializableEIP1559,\n TransactionSerializableEIP2930,\n TransactionSerializableEIP4844,\n TransactionSerializableEIP7702,\n TransactionSerializableGeneric,\n TransactionSerializableLegacy,\n TransactionSerialized,\n TransactionSerializedEIP1559,\n TransactionSerializedEIP2930,\n TransactionSerializedEIP4844,\n TransactionSerializedEIP7702,\n TransactionSerializedLegacy,\n TransactionType,\n} from '../../types/transaction.js'\nimport type { OneOf } from '../../types/utils.js'\nimport {\n type BlobsToCommitmentsErrorType,\n blobsToCommitments,\n} from '../blob/blobsToCommitments.js'\nimport {\n blobsToProofs,\n type blobsToProofsErrorType,\n} from '../blob/blobsToProofs.js'\nimport {\n type CommitmentsToVersionedHashesErrorType,\n commitmentsToVersionedHashes,\n} from '../blob/commitmentsToVersionedHashes.js'\nimport {\n type ToBlobSidecarsErrorType,\n toBlobSidecars,\n} from '../blob/toBlobSidecars.js'\nimport { type ConcatHexErrorType, concatHex } from '../data/concat.js'\nimport { trim } from '../data/trim.js'\nimport { type ToHexErrorType, bytesToHex, toHex } from '../encoding/toHex.js'\nimport { type ToRlpErrorType, toRlp } from '../encoding/toRlp.js'\n\nimport {\n type SerializeAuthorizationListErrorType,\n serializeAuthorizationList,\n} from '../../experimental/eip7702/utils/serializeAuthorizationList.js'\nimport {\n type AssertTransactionEIP1559ErrorType,\n type AssertTransactionEIP2930ErrorType,\n type AssertTransactionEIP4844ErrorType,\n type AssertTransactionEIP7702ErrorType,\n type AssertTransactionLegacyErrorType,\n assertTransactionEIP1559,\n assertTransactionEIP2930,\n assertTransactionEIP4844,\n assertTransactionEIP7702,\n assertTransactionLegacy,\n} from './assertTransaction.js'\nimport {\n type GetTransactionType,\n type GetTransactionTypeErrorType,\n getTransactionType,\n} from './getTransactionType.js'\nimport {\n type SerializeAccessListErrorType,\n serializeAccessList,\n} from './serializeAccessList.js'\n\nexport type SerializedTransactionReturnType<\n transaction extends TransactionSerializable = TransactionSerializable,\n ///\n _transactionType extends TransactionType = GetTransactionType<transaction>,\n> = TransactionSerialized<_transactionType>\n\nexport type SerializeTransactionFn<\n transaction extends TransactionSerializableGeneric = TransactionSerializable,\n ///\n _transactionType extends TransactionType = never,\n> = typeof serializeTransaction<\n OneOf<TransactionSerializable | transaction>,\n _transactionType\n>\n\nexport type SerializeTransactionErrorType =\n | GetTransactionTypeErrorType\n | SerializeTransactionEIP1559ErrorType\n | SerializeTransactionEIP2930ErrorType\n | SerializeTransactionEIP4844ErrorType\n | SerializeTransactionEIP7702ErrorType\n | SerializeTransactionLegacyErrorType\n | ErrorType\n\nexport function serializeTransaction<\n const transaction extends TransactionSerializable,\n ///\n _transactionType extends TransactionType = GetTransactionType<transaction>,\n>(\n transaction: transaction,\n signature?: Signature | undefined,\n): SerializedTransactionReturnType<transaction, _transactionType> {\n const type = getTransactionType(transaction) as GetTransactionType\n\n if (type === 'eip1559')\n return serializeTransactionEIP1559(\n transaction as TransactionSerializableEIP1559,\n signature,\n ) as SerializedTransactionReturnType<transaction>\n\n if (type === 'eip2930')\n return serializeTransactionEIP2930(\n transaction as TransactionSerializableEIP2930,\n signature,\n ) as SerializedTransactionReturnType<transaction>\n\n if (type === 'eip4844')\n return serializeTransactionEIP4844(\n transaction as TransactionSerializableEIP4844,\n signature,\n ) as SerializedTransactionReturnType<transaction>\n\n if (type === 'eip7702')\n return serializeTransactionEIP7702(\n transaction as TransactionSerializableEIP7702,\n signature,\n ) as SerializedTransactionReturnType<transaction>\n\n return serializeTransactionLegacy(\n transaction as TransactionSerializableLegacy,\n signature as SignatureLegacy,\n ) as SerializedTransactionReturnType<transaction>\n}\n\ntype SerializeTransactionEIP7702ErrorType =\n | AssertTransactionEIP7702ErrorType\n | SerializeAuthorizationListErrorType\n | ConcatHexErrorType\n | InvalidLegacyVErrorType\n | ToHexErrorType\n | ToRlpErrorType\n | SerializeAccessListErrorType\n | ErrorType\n\nfunction serializeTransactionEIP7702(\n transaction: TransactionSerializableEIP7702,\n signature?: Signature | undefined,\n): TransactionSerializedEIP7702 {\n const {\n authorizationList,\n chainId,\n gas,\n nonce,\n to,\n value,\n maxFeePerGas,\n maxPriorityFeePerGas,\n accessList,\n data,\n } = transaction\n\n assertTransactionEIP7702(transaction)\n\n const serializedAccessList = serializeAccessList(accessList)\n const serializedAuthorizationList =\n serializeAuthorizationList(authorizationList)\n\n return concatHex([\n '0x04',\n toRlp([\n toHex(chainId),\n nonce ? toHex(nonce) : '0x',\n maxPriorityFeePerGas ? toHex(maxPriorityFeePerGas) : '0x',\n maxFeePerGas ? toHex(maxFeePerGas) : '0x',\n gas ? toHex(gas) : '0x',\n to ?? '0x',\n value ? toHex(value) : '0x',\n data ?? '0x',\n serializedAccessList,\n serializedAuthorizationList,\n ...toYParitySignatureArray(transaction, signature),\n ]),\n ]) as TransactionSerializedEIP7702\n}\n\ntype SerializeTransactionEIP4844ErrorType =\n | AssertTransactionEIP4844ErrorType\n | BlobsToCommitmentsErrorType\n | CommitmentsToVersionedHashesErrorType\n | blobsToProofsErrorType\n | ToBlobSidecarsErrorType\n | ConcatHexErrorType\n | InvalidLegacyVErrorType\n | ToHexErrorType\n | ToRlpErrorType\n | SerializeAccessListErrorType\n | ErrorType\n\nfunction serializeTransactionEIP4844(\n transaction: TransactionSerializableEIP4844,\n signature?: Signature | undefined,\n): TransactionSerializedEIP4844 {\n const {\n chainId,\n gas,\n nonce,\n to,\n value,\n maxFeePerBlobGas,\n maxFeePerGas,\n maxPriorityFeePerGas,\n accessList,\n data,\n } = transaction\n\n assertTransactionEIP4844(transaction)\n\n let blobVersionedHashes = transaction.blobVersionedHashes\n let sidecars = transaction.sidecars\n // If `blobs` are passed, we will need to compute the KZG commitments & proofs.\n if (\n transaction.blobs &&\n (typeof blobVersionedHashes === 'undefined' ||\n typeof sidecars === 'undefined')\n ) {\n const blobs = (\n typeof transaction.blobs[0] === 'string'\n ? transaction.blobs\n : (transaction.blobs as ByteArray[]).map((x) => bytesToHex(x))\n ) as Hex[]\n const kzg = transaction.kzg!\n const commitments = blobsToCommitments({\n blobs,\n kzg,\n })\n\n if (typeof blobVersionedHashes === 'undefined')\n blobVersionedHashes = commitmentsToVersionedHashes({\n commitments,\n })\n if (typeof sidecars === 'undefined') {\n const proofs = blobsToProofs({ blobs, commitments, kzg })\n sidecars = toBlobSidecars({ blobs, commitments, proofs })\n }\n }\n\n const serializedAccessList = serializeAccessList(accessList)\n\n const serializedTransaction = [\n toHex(chainId),\n nonce ? toHex(nonce) : '0x',\n maxPriorityFeePerGas ? toHex(maxPriorityFeePerGas) : '0x',\n maxFeePerGas ? toHex(maxFeePerGas) : '0x',\n gas ? toHex(gas) : '0x',\n to ?? '0x',\n value ? toHex(value) : '0x',\n data ?? '0x',\n serializedAccessList,\n maxFeePerBlobGas ? toHex(maxFeePerBlobGas) : '0x',\n blobVersionedHashes ?? [],\n ...toYParitySignatureArray(transaction, signature),\n ] as const\n\n const blobs: Hex[] = []\n const commitments: Hex[] = []\n const proofs: Hex[] = []\n if (sidecars)\n for (let i = 0; i < sidecars.length; i++) {\n const { blob, commitment, proof } = sidecars[i]\n blobs.push(blob)\n commitments.push(commitment)\n proofs.push(proof)\n }\n\n return concatHex([\n '0x03',\n sidecars\n ? // If sidecars are enabled, envelope turns into a \"wrapper\":\n toRlp([serializedTransaction, blobs, commitments, proofs])\n : // If sidecars are disabled, standard envelope is used:\n toRlp(serializedTransaction),\n ]) as TransactionSerializedEIP4844\n}\n\ntype SerializeTransactionEIP1559ErrorType =\n | AssertTransactionEIP1559ErrorType\n | ConcatHexErrorType\n | InvalidLegacyVErrorType\n | ToHexErrorType\n | ToRlpErrorType\n | SerializeAccessListErrorType\n | ErrorType\n\nfunction serializeTransactionEIP1559(\n transaction: TransactionSerializableEIP1559,\n signature?: Signature | undefined,\n): TransactionSerializedEIP1559 {\n const {\n chainId,\n gas,\n nonce,\n to,\n value,\n maxFeePerGas,\n maxPriorityFeePerGas,\n accessList,\n data,\n } = transaction\n\n assertTransactionEIP1559(transaction)\n\n const serializedAccessList = serializeAccessList(accessList)\n\n const serializedTransaction = [\n toHex(chainId),\n nonce ? toHex(nonce) : '0x',\n maxPriorityFeePerGas ? toHex(maxPriorityFeePerGas) : '0x',\n maxFeePerGas ? toHex(maxFeePerGas) : '0x',\n gas ? toHex(gas) : '0x',\n to ?? '0x',\n value ? toHex(value) : '0x',\n data ?? '0x',\n serializedAccessList,\n ...toYParitySignatureArray(transaction, signature),\n ]\n\n return concatHex([\n '0x02',\n toRlp(serializedTransaction),\n ]) as TransactionSerializedEIP1559\n}\n\ntype SerializeTransactionEIP2930ErrorType =\n | AssertTransactionEIP2930ErrorType\n | ConcatHexErrorType\n | InvalidLegacyVErrorType\n | ToHexErrorType\n | ToRlpErrorType\n | SerializeAccessListErrorType\n | ErrorType\n\nfunction serializeTransactionEIP2930(\n transaction: TransactionSerializableEIP2930,\n signature?: Signature | undefined,\n): TransactionSerializedEIP2930 {\n const { chainId, gas, data, nonce, to, value, accessList, gasPrice } =\n transaction\n\n assertTransactionEIP2930(transaction)\n\n const serializedAccessList = serializeAccessList(accessList)\n\n const serializedTransaction = [\n toHex(chainId),\n nonce ? toHex(nonce) : '0x',\n gasPrice ? toHex(gasPrice) : '0x',\n gas ? toHex(gas) : '0x',\n to ?? '0x',\n value ? toHex(value) : '0x',\n data ?? '0x',\n serializedAccessList,\n ...toYParitySignatureArray(transaction, signature),\n ]\n\n return concatHex([\n '0x01',\n toRlp(serializedTransaction),\n ]) as TransactionSerializedEIP2930\n}\n\ntype SerializeTransactionLegacyErrorType =\n | AssertTransactionLegacyErrorType\n | InvalidLegacyVErrorType\n | ToHexErrorType\n | ToRlpErrorType\n | ErrorType\n\nfunction serializeTransactionLegacy(\n transaction: TransactionSerializableLegacy,\n signature?: SignatureLegacy | undefined,\n): TransactionSerializedLegacy {\n const { chainId = 0, gas, data, nonce, to, value, gasPrice } = transaction\n\n assertTransactionLegacy(transaction)\n\n let serializedTransaction = [\n nonce ? toHex(nonce) : '0x',\n gasPrice ? toHex(gasPrice) : '0x',\n gas ? toHex(gas) : '0x',\n to ?? '0x',\n value ? toHex(value) : '0x',\n data ?? '0x',\n ]\n\n if (signature) {\n const v = (() => {\n // EIP-155 (inferred chainId)\n if (signature.v >= 35n) {\n const inferredChainId = (signature.v - 35n) / 2n\n if (inferredChainId > 0) return signature.v\n return 27n + (signature.v === 35n ? 0n : 1n)\n }\n\n // EIP-155 (explicit chainId)\n if (chainId > 0)\n return BigInt(chainId * 2) + BigInt(35n + signature.v - 27n)\n\n // Pre-EIP-155 (no chainId)\n const v = 27n + (signature.v === 27n ? 0n : 1n)\n if (signature.v !== v) throw new InvalidLegacyVError({ v: signature.v })\n return v\n })()\n\n const r = trim(signature.r)\n const s = trim(signature.s)\n\n serializedTransaction = [\n ...serializedTransaction,\n toHex(v),\n r === '0x00' ? '0x' : r,\n s === '0x00' ? '0x' : s,\n ]\n } else if (chainId > 0) {\n serializedTransaction = [\n ...serializedTransaction,\n toHex(chainId),\n '0x',\n '0x',\n ]\n }\n\n return toRlp(serializedTransaction) as TransactionSerializedLegacy\n}\n\nexport function toYParitySignatureArray(\n transaction: TransactionSerializableGeneric,\n signature_?: Signature | undefined,\n) {\n const signature = signature_ ?? transaction\n const { v, yParity } = signature\n\n if (typeof signature.r === 'undefined') return []\n if (typeof signature.s === 'undefined') return []\n if (typeof v === 'undefined' && typeof yParity === 'undefined') return []\n\n const r = trim(signature.r)\n const s = trim(signature.s)\n\n const yParity_ = (() => {\n if (typeof yParity === 'number') return yParity ? toHex(1) : '0x'\n if (v === 0n) return '0x'\n if (v === 1n) return toHex(1)\n\n return v === 27n ? '0x' : toHex(1)\n })()\n\n return [yParity_, r === '0x00' ? '0x' : r, s === '0x00' ? '0x' : s]\n}\n","import type { ErrorType } from '../../../errors/utils.js'\nimport { toHex } from '../../../utils/encoding/toHex.js'\nimport { toYParitySignatureArray } from '../../../utils/transaction/serializeTransaction.js'\nimport type {\n AuthorizationList,\n SerializedAuthorizationList,\n} from '../types/authorization.js'\n\nexport type SerializeAuthorizationListReturnType = SerializedAuthorizationList\n\nexport type SerializeAuthorizationListErrorType = ErrorType\n\n/*\n * Serializes an EIP-7702 authorization list.\n */\nexport function serializeAuthorizationList(\n authorizationList?: AuthorizationList<number, true> | undefined,\n): SerializeAuthorizationListReturnType {\n if (!authorizationList || authorizationList.length === 0) return []\n\n const serializedAuthorizationList = []\n for (const authorization of authorizationList) {\n const { contractAddress, chainId, nonce, ...signature } = authorization\n serializedAuthorizationList.push([\n chainId ? toHex(chainId) : '0x',\n contractAddress,\n nonce ? toHex(nonce) : '0x',\n ...toYParitySignatureArray({}, signature),\n ])\n }\n\n return serializedAuthorizationList as {} as SerializeAuthorizationListReturnType\n}\n","import { contracts } from './contracts.js'\nimport { formatters } from './formatters.js'\nimport { serializers } from './serializers.js'\n\nexport const chainConfig = {\n contracts,\n formatters,\n serializers,\n} as const\n","import type { Chain } from '../types/chain.js'\n\n/**\n * Predeploy contracts for OP Stack.\n * @see https://github.com/ethereum-optimism/optimism/blob/develop/specs/predeploys.md\n */\nexport const contracts = {\n gasPriceOracle: { address: '0x420000000000000000000000000000000000000F' },\n l1Block: { address: '0x4200000000000000000000000000000000000015' },\n l2CrossDomainMessenger: {\n address: '0x4200000000000000000000000000000000000007',\n },\n l2Erc721Bridge: { address: '0x4200000000000000000000000000000000000014' },\n l2StandardBridge: { address: '0x4200000000000000000000000000000000000010' },\n l2ToL1MessagePasser: {\n address: '0x4200000000000000000000000000000000000016',\n },\n} as const satisfies Chain['contracts']\n","import { InvalidAddressError } from '../errors/address.js'\nimport type { ErrorType } from '../errors/utils.js'\nimport type { ChainSerializers } from '../types/chain.js'\nimport type { Hex, Signature } from '../types/misc.js'\nimport type { TransactionSerializable } from '../types/transaction.js'\nimport type { RequiredBy } from '../types/utils.js'\nimport { isAddress } from '../utils/address/isAddress.js'\nimport { concatHex } from '../utils/data/concat.js'\nimport { toHex } from '../utils/encoding/toHex.js'\nimport { toRlp } from '../utils/encoding/toRlp.js'\nimport {\n type SerializeTransactionErrorType as SerializeTransactionErrorType_,\n serializeTransaction as serializeTransaction_,\n} from '../utils/transaction/serializeTransaction.js'\nimport type {\n OpStackTransactionSerializable,\n TransactionSerializableDeposit,\n TransactionSerializedDeposit,\n} from './types/transaction.js'\n\nexport type SerializeTransactionReturnType = ReturnType<\n typeof serializeTransaction\n>\n\nexport type SerializeTransactionErrorType =\n | SerializeTransactionErrorType_\n | ErrorType\n\nexport function serializeTransaction(\n transaction: OpStackTransactionSerializable,\n signature?: Signature,\n) {\n if (isDeposit(transaction)) return serializeTransactionDeposit(transaction)\n return serializeTransaction_(\n transaction as TransactionSerializable,\n signature,\n )\n}\n\nexport const serializers = {\n transaction: serializeTransaction,\n} as const satisfies ChainSerializers\n\n//////////////////////////////////////////////////////////////////////////////\n// Serializers\n\nexport type SerializeTransactionDepositReturnType = TransactionSerializedDeposit\n\nfunction serializeTransactionDeposit(\n transaction: TransactionSerializableDeposit,\n): SerializeTransactionDepositReturnType {\n assertTransactionDeposit(transaction)\n\n const { sourceHash, data, from, gas, isSystemTx, mint, to, value } =\n transaction\n\n const serializedTransaction: Hex[] = [\n sourceHash,\n from,\n to ?? '0x',\n mint ? toHex(mint) : '0x',\n value ? toHex(value) : '0x',\n gas ? toHex(gas) : '0x',\n isSystemTx ? '0x1' : '0x',\n data ?? '0x',\n ]\n\n return concatHex([\n '0x7e',\n toRlp(serializedTransaction),\n ]) as SerializeTransactionDepositReturnType\n}\n\nfunction isDeposit(\n transaction: OpStackTransactionSerializable,\n): transaction is RequiredBy<TransactionSerializableDeposit, 'type'> {\n if (transaction.type === 'deposit') return true\n if (typeof transaction.sourceHash !== 'undefined') return true\n return false\n}\n\nexport function assertTransactionDeposit(\n transaction: TransactionSerializableDeposit,\n) {\n const { from, to } = transaction\n if (from && !isAddress(from)) throw new InvalidAddressError({ address: from })\n if (to && !isAddress(to)) throw new InvalidAddressError({ address: to })\n}\n","import { InvalidBytesBooleanError } from '../../errors/encoding.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type TrimErrorType, trim } from '../data/trim.js'\n\nimport {\n type AssertSizeErrorType,\n type HexToBigIntErrorType,\n type HexToNumberErrorType,\n assertSize,\n hexToBigInt,\n hexToNumber,\n} from './fromHex.js'\nimport { type BytesToHexErrorType, bytesToHex } from './toHex.js'\n\nexport type FromBytesParameters<\n to extends 'string' | 'hex' | 'bigint' | 'number' | 'boolean',\n> =\n | to\n | {\n /** Size of the bytes. */\n size?: number | undefined\n /** Type to convert to. */\n to: to\n }\n\nexport type FromBytesReturnType<to> = to extends 'string'\n ? string\n : to extends 'hex'\n ? Hex\n : to extends 'bigint'\n ? bigint\n : to extends 'number'\n ? number\n : to extends 'boolean'\n ? boolean\n : never\n\nexport type FromBytesErrorType =\n | BytesToHexErrorType\n | BytesToBigIntErrorType\n | BytesToBoolErrorType\n | BytesToNumberErrorType\n | BytesToStringErrorType\n | ErrorType\n\n/**\n * Decodes a byte array into a UTF-8 string, hex value, number, bigint or boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes\n * - Example: https://viem.sh/docs/utilities/fromBytes#usage\n *\n * @param bytes Byte array to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromBytes } from 'viem'\n * const data = fromBytes(new Uint8Array([1, 164]), 'number')\n * // 420\n *\n * @example\n * import { fromBytes } from 'viem'\n * const data = fromBytes(\n * new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]),\n * 'string'\n * )\n * // 'Hello world'\n */\nexport function fromBytes<\n to extends 'string' | 'hex' | 'bigint' | 'number' | 'boolean',\n>(\n bytes: ByteArray,\n toOrOpts: FromBytesParameters<to>,\n): FromBytesReturnType<to> {\n const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts\n const to = opts.to\n\n if (to === 'number')\n return bytesToNumber(bytes, opts) as FromBytesReturnType<to>\n if (to === 'bigint')\n return bytesToBigInt(bytes, opts) as FromBytesReturnType<to>\n if (to === 'boolean')\n return bytesToBool(bytes, opts) as FromBytesReturnType<to>\n if (to === 'string')\n return bytesToString(bytes, opts) as FromBytesReturnType<to>\n return bytesToHex(bytes, opts) as FromBytesReturnType<to>\n}\n\nexport type BytesToBigIntOpts = {\n /** Whether or not the number of a signed representation. */\n signed?: boolean | undefined\n /** Size of the bytes. */\n size?: number | undefined\n}\n\nexport type BytesToBigIntErrorType =\n | BytesToHexErrorType\n | HexToBigIntErrorType\n | ErrorType\n\n/**\n * Decodes a byte array into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestobigint\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { bytesToBigInt } from 'viem'\n * const data = bytesToBigInt(new Uint8Array([1, 164]))\n * // 420n\n */\nexport function bytesToBigInt(\n bytes: ByteArray,\n opts: BytesToBigIntOpts = {},\n): bigint {\n if (typeof opts.size !== 'undefined') assertSize(bytes, { size: opts.size })\n const hex = bytesToHex(bytes, opts)\n return hexToBigInt(hex, opts)\n}\n\nexport type BytesToBoolOpts = {\n /** Size of the bytes. */\n size?: number | undefined\n}\n\nexport type BytesToBoolErrorType =\n | AssertSizeErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a byte array into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestobool\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { bytesToBool } from 'viem'\n * const data = bytesToBool(new Uint8Array([1]))\n * // true\n */\nexport function bytesToBool(\n bytes_: ByteArray,\n opts: BytesToBoolOpts = {},\n): boolean {\n let bytes = bytes_\n if (typeof opts.size !== 'undefined') {\n assertSize(bytes, { size: opts.size })\n bytes = trim(bytes)\n }\n if (bytes.length > 1 || bytes[0] > 1)\n throw new InvalidBytesBooleanError(bytes)\n return Boolean(bytes[0])\n}\n\nexport type BytesToNumberOpts = BytesToBigIntOpts\n\nexport type BytesToNumberErrorType =\n | BytesToHexErrorType\n | HexToNumberErrorType\n | ErrorType\n\n/**\n * Decodes a byte array into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestonumber\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { bytesToNumber } from 'viem'\n * const data = bytesToNumber(new Uint8Array([1, 164]))\n * // 420\n */\nexport function bytesToNumber(\n bytes: ByteArray,\n opts: BytesToNumberOpts = {},\n): number {\n if (typeof opts.size !== 'undefined') assertSize(bytes, { size: opts.size })\n const hex = bytesToHex(bytes, opts)\n return hexToNumber(hex, opts)\n}\n\nexport type BytesToStringOpts = {\n /** Size of the bytes. */\n size?: number | undefined\n}\n\nexport type BytesToStringErrorType =\n | AssertSizeErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a byte array into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestostring\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { bytesToString } from 'viem'\n * const data = bytesToString(new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]))\n * // 'Hello world'\n */\nexport function bytesToString(\n bytes_: ByteArray,\n opts: BytesToStringOpts = {},\n): string {\n let bytes = bytes_\n if (typeof opts.size !== 'undefined') {\n assertSize(bytes, { size: opts.size })\n bytes = trim(bytes, { dir: 'right' })\n }\n return new TextDecoder().decode(bytes)\n}\n","import type { AbiParameter, AbiParametersToPrimitiveTypes } from 'abitype'\n\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nimport {\n AbiDecodingDataSizeTooSmallError,\n AbiDecodingZeroDataError,\n InvalidAbiDecodingTypeError,\n type InvalidAbiDecodingTypeErrorType,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport {\n type ChecksumAddressErrorType,\n checksumAddress,\n} from '../address/getAddress.js'\nimport {\n type CreateCursorErrorType,\n type Cursor,\n createCursor,\n} from '../cursor.js'\nimport { type SizeErrorType, size } from '../data/size.js'\nimport { type SliceBytesErrorType, sliceBytes } from '../data/slice.js'\nimport { type TrimErrorType, trim } from '../data/trim.js'\nimport {\n type BytesToBigIntErrorType,\n type BytesToBoolErrorType,\n type BytesToNumberErrorType,\n type BytesToStringErrorType,\n bytesToBigInt,\n bytesToBool,\n bytesToNumber,\n bytesToString,\n} from '../encoding/fromBytes.js'\nimport { type HexToBytesErrorType, hexToBytes } from '../encoding/toBytes.js'\nimport { type BytesToHexErrorType, bytesToHex } from '../encoding/toHex.js'\nimport { getArrayComponents } from './encodeAbiParameters.js'\n\nexport type DecodeAbiParametersReturnType<\n params extends readonly AbiParameter[] = readonly AbiParameter[],\n> = AbiParametersToPrimitiveTypes<\n params extends readonly AbiParameter[] ? params : AbiParameter[]\n>\n\nexport type DecodeAbiParametersErrorType =\n | HexToBytesErrorType\n | BytesToHexErrorType\n | DecodeParameterErrorType\n | SizeErrorType\n | CreateCursorErrorType\n | ErrorType\n\nexport function decodeAbiParameters<\n const params extends readonly AbiParameter[],\n>(\n params: params,\n data: ByteArray | Hex,\n): DecodeAbiParametersReturnType<params> {\n const bytes = typeof data === 'string' ? hexToBytes(data) : data\n const cursor = createCursor(bytes)\n\n if (size(bytes) === 0 && params.length > 0)\n throw new AbiDecodingZeroDataError()\n if (size(data) && size(data) < 32)\n throw new AbiDecodingDataSizeTooSmallError({\n data: typeof data === 'string' ? data : bytesToHex(data),\n params: params as readonly AbiParameter[],\n size: size(data),\n })\n\n let consumed = 0\n const values = []\n for (let i = 0; i < params.length; ++i) {\n const param = params[i]\n cursor.setPosition(consumed)\n const [data, consumed_] = decodeParameter(cursor, param, {\n staticPosition: 0,\n })\n consumed += consumed_\n values.push(data)\n }\n return values as DecodeAbiParametersReturnType<params>\n}\n\ntype DecodeParameterErrorType =\n | DecodeArrayErrorType\n | DecodeTupleErrorType\n | DecodeAddressErrorType\n | DecodeBoolErrorType\n | DecodeBytesErrorType\n | DecodeNumberErrorType\n | DecodeStringErrorType\n | InvalidAbiDecodingTypeErrorType\n\nfunction decodeParameter(\n cursor: Cursor,\n param: AbiParameter,\n { staticPosition }: { staticPosition: number },\n) {\n const arrayComponents = getArrayComponents(param.type)\n if (arrayComponents) {\n const [length, type] = arrayComponents\n return decodeArray(cursor, { ...param, type }, { length, staticPosition })\n }\n if (param.type === 'tuple')\n return decodeTuple(cursor, param as TupleAbiParameter, { staticPosition })\n\n if (param.type === 'address') return decodeAddress(cursor)\n if (param.type === 'bool') return decodeBool(cursor)\n if (param.type.startsWith('bytes'))\n return decodeBytes(cursor, param, { staticPosition })\n if (param.type.startsWith('uint') || param.type.startsWith('int'))\n return decodeNumber(cursor, param)\n if (param.type === 'string') return decodeString(cursor, { staticPosition })\n throw new InvalidAbiDecodingTypeError(param.type, {\n docsPath: '/docs/contract/decodeAbiParameters',\n })\n}\n\n////////////////////////////////////////////////////////////////////\n// Type Decoders\n\nconst sizeOfLength = 32\nconst sizeOfOffset = 32\n\ntype DecodeAddressErrorType =\n | ChecksumAddressErrorType\n | BytesToHexErrorType\n | SliceBytesErrorType\n | ErrorType\n\nfunction decodeAddress(cursor: Cursor) {\n const value = cursor.readBytes(32)\n return [checksumAddress(bytesToHex(sliceBytes(value, -20))), 32]\n}\n\ntype DecodeArrayErrorType = BytesToNumberErrorType | ErrorType\n\nfunction decodeArray(\n cursor: Cursor,\n param: AbiParameter,\n { length, staticPosition }: { length: number | null; staticPosition: number },\n) {\n // If the length of the array is not known in advance (dynamic array),\n // this means we will need to wonder off to the pointer and decode.\n if (!length) {\n // Dealing with a dynamic type, so get the offset of the array data.\n const offset = bytesToNumber(cursor.readBytes(sizeOfOffset))\n\n // Start is the static position of current slot + offset.\n const start = staticPosition + offset\n const startOfData = start + sizeOfLength\n\n // Get the length of the array from the offset.\n cursor.setPosition(start)\n const length = bytesToNumber(cursor.readBytes(sizeOfLength))\n\n // Check if the array has any dynamic children.\n const dynamicChild = hasDynamicChild(param)\n\n let consumed = 0\n const value: unknown[] = []\n for (let i = 0; i < length; ++i) {\n // If any of the children is dynamic, then all elements will be offset pointer, thus size of one slot (32 bytes).\n // Otherwise, elements will be the size of their encoding (consumed bytes).\n cursor.setPosition(startOfData + (dynamicChild ? i * 32 : consumed))\n const [data, consumed_] = decodeParameter(cursor, param, {\n staticPosition: startOfData,\n })\n consumed += consumed_\n value.push(data)\n }\n\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n return [value, 32]\n }\n\n // If the length of the array is known in advance,\n // and the length of an element deeply nested in the array is not known,\n // we need to decode the offset of the array data.\n if (hasDynamicChild(param)) {\n // Dealing with dynamic types, so get the offset of the array data.\n const offset = bytesToNumber(cursor.readBytes(sizeOfOffset))\n\n // Start is the static position of current slot + offset.\n const start = staticPosition + offset\n\n const value: unknown[] = []\n for (let i = 0; i < length; ++i) {\n // Move cursor along to the next slot (next offset pointer).\n cursor.setPosition(start + i * 32)\n const [data] = decodeParameter(cursor, param, {\n staticPosition: start,\n })\n value.push(data)\n }\n\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n return [value, 32]\n }\n\n // If the length of the array is known in advance and the array is deeply static,\n // then we can just decode each element in sequence.\n let consumed = 0\n const value: unknown[] = []\n for (let i = 0; i < length; ++i) {\n const [data, consumed_] = decodeParameter(cursor, param, {\n staticPosition: staticPosition + consumed,\n })\n consumed += consumed_\n value.push(data)\n }\n return [value, consumed]\n}\n\ntype DecodeBoolErrorType = BytesToBoolErrorType | ErrorType\n\nfunction decodeBool(cursor: Cursor) {\n return [bytesToBool(cursor.readBytes(32), { size: 32 }), 32]\n}\n\ntype DecodeBytesErrorType =\n | BytesToNumberErrorType\n | BytesToHexErrorType\n | ErrorType\n\nfunction decodeBytes(\n cursor: Cursor,\n param: AbiParameter,\n { staticPosition }: { staticPosition: number },\n) {\n const [_, size] = param.type.split('bytes')\n if (!size) {\n // Dealing with dynamic types, so get the offset of the bytes data.\n const offset = bytesToNumber(cursor.readBytes(32))\n\n // Set position of the cursor to start of bytes data.\n cursor.setPosition(staticPosition + offset)\n\n const length = bytesToNumber(cursor.readBytes(32))\n\n // If there is no length, we have zero data.\n if (length === 0) {\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n return ['0x', 32]\n }\n\n const data = cursor.readBytes(length)\n\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n return [bytesToHex(data), 32]\n }\n\n const value = bytesToHex(cursor.readBytes(Number.parseInt(size), 32))\n return [value, 32]\n}\n\ntype DecodeNumberErrorType =\n | BytesToNumberErrorType\n | BytesToBigIntErrorType\n | ErrorType\n\nfunction decodeNumber(cursor: Cursor, param: AbiParameter) {\n const signed = param.type.startsWith('int')\n const size = Number.parseInt(param.type.split('int')[1] || '256')\n const value = cursor.readBytes(32)\n return [\n size > 48\n ? bytesToBigInt(value, { signed })\n : bytesToNumber(value, { signed }),\n 32,\n ]\n}\n\ntype TupleAbiParameter = AbiParameter & { components: readonly AbiParameter[] }\n\ntype DecodeTupleErrorType = BytesToNumberErrorType | ErrorType\n\nfunction decodeTuple(\n cursor: Cursor,\n param: TupleAbiParameter,\n { staticPosition }: { staticPosition: number },\n) {\n // Tuples can have unnamed components (i.e. they are arrays), so we must\n // determine whether the tuple is named or unnamed. In the case of a named\n // tuple, the value will be an object where each property is the name of the\n // component. In the case of an unnamed tuple, the value will be an array.\n const hasUnnamedChild =\n param.components.length === 0 || param.components.some(({ name }) => !name)\n\n // Initialize the value to an object or an array, depending on whether the\n // tuple is named or unnamed.\n const value: any = hasUnnamedChild ? [] : {}\n let consumed = 0\n\n // If the tuple has a dynamic child, we must first decode the offset to the\n // tuple data.\n if (hasDynamicChild(param)) {\n // Dealing with dynamic types, so get the offset of the tuple data.\n const offset = bytesToNumber(cursor.readBytes(sizeOfOffset))\n\n // Start is the static position of referencing slot + offset.\n const start = staticPosition + offset\n\n for (let i = 0; i < param.components.length; ++i) {\n const component = param.components[i]\n cursor.setPosition(start + consumed)\n const [data, consumed_] = decodeParameter(cursor, component, {\n staticPosition: start,\n })\n consumed += consumed_\n value[hasUnnamedChild ? i : component?.name!] = data\n }\n\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n return [value, 32]\n }\n\n // If the tuple has static children, we can just decode each component\n // in sequence.\n for (let i = 0; i < param.components.length; ++i) {\n const component = param.components[i]\n const [data, consumed_] = decodeParameter(cursor, component, {\n staticPosition,\n })\n value[hasUnnamedChild ? i : component?.name!] = data\n consumed += consumed_\n }\n return [value, consumed]\n}\n\ntype DecodeStringErrorType =\n | BytesToNumberErrorType\n | BytesToStringErrorType\n | TrimErrorType\n | ErrorType\n\nfunction decodeString(\n cursor: Cursor,\n { staticPosition }: { staticPosition: number },\n) {\n // Get offset to start of string data.\n const offset = bytesToNumber(cursor.readBytes(32))\n\n // Start is the static position of current slot + offset.\n const start = staticPosition + offset\n cursor.setPosition(start)\n\n const length = bytesToNumber(cursor.readBytes(32))\n\n // If there is no length, we have zero data (empty string).\n if (length === 0) {\n cursor.setPosition(staticPosition + 32)\n return ['', 32]\n }\n\n const data = cursor.readBytes(length, 32)\n const value = bytesToString(trim(data))\n\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32)\n\n return [value, 32]\n}\n\nfunction hasDynamicChild(param: AbiParameter) {\n const { type } = param\n if (type === 'string') return true\n if (type === 'bytes') return true\n if (type.endsWith('[]')) return true\n\n if (type === 'tuple') return (param as any).components?.some(hasDynamicChild)\n\n const arrayComponents = getArrayComponents(param.type)\n if (\n arrayComponents &&\n hasDynamicChild({ ...param, type: arrayComponents[1] } as AbiParameter)\n )\n return true\n\n return false\n}\n","import type { Abi, ExtractAbiError } from 'abitype'\n\nimport { solidityError, solidityPanic } from '../../constants/solidity.js'\nimport {\n AbiDecodingZeroDataError,\n type AbiDecodingZeroDataErrorType,\n AbiErrorSignatureNotFoundError,\n type AbiErrorSignatureNotFoundErrorType,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type {\n AbiItem,\n ContractErrorArgs,\n ContractErrorName,\n} from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'\nimport { slice } from '../data/slice.js'\nimport {\n type ToFunctionSelectorErrorType,\n toFunctionSelector,\n} from '../hash/toFunctionSelector.js'\nimport {\n type DecodeAbiParametersErrorType,\n decodeAbiParameters,\n} from './decodeAbiParameters.js'\nimport { type FormatAbiItemErrorType, formatAbiItem } from './formatAbiItem.js'\n\nexport type DecodeErrorResultParameters<\n abi extends Abi | readonly unknown[] = Abi,\n> = { abi?: abi | undefined; data: Hex }\n\nexport type DecodeErrorResultReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n ///\n allErrorNames extends ContractErrorName<abi> = ContractErrorName<abi>,\n> = IsNarrowable<abi, Abi> extends true\n ? UnionEvaluate<\n {\n [errorName in allErrorNames]: {\n abiItem: abi extends Abi\n ? Abi extends abi\n ? AbiItem\n : ExtractAbiError<abi, errorName>\n : AbiItem\n args: ContractErrorArgs<abi, errorName>\n errorName: errorName\n }\n }[allErrorNames]\n >\n : {\n abiItem: AbiItem\n args: readonly unknown[] | undefined\n errorName: string\n }\n\nexport type DecodeErrorResultErrorType =\n | AbiDecodingZeroDataErrorType\n | AbiErrorSignatureNotFoundErrorType\n | DecodeAbiParametersErrorType\n | FormatAbiItemErrorType\n | ToFunctionSelectorErrorType\n | ErrorType\n\nexport function decodeErrorResult<const abi extends Abi | readonly unknown[]>(\n parameters: DecodeErrorResultParameters<abi>,\n): DecodeErrorResultReturnType<abi> {\n const { abi, data } = parameters as DecodeErrorResultParameters\n\n const signature = slice(data, 0, 4)\n if (signature === '0x') throw new AbiDecodingZeroDataError()\n\n const abi_ = [...(abi || []), solidityError, solidityPanic]\n const abiItem = abi_.find(\n (x) =>\n x.type === 'error' && signature === toFunctionSelector(formatAbiItem(x)),\n )\n if (!abiItem)\n throw new AbiErrorSignatureNotFoundError(signature, {\n docsPath: '/docs/contract/decodeErrorResult',\n })\n return {\n abiItem,\n args:\n 'inputs' in abiItem && abiItem.inputs && abiItem.inputs.length > 0\n ? decodeAbiParameters(abiItem.inputs, slice(data, 4))\n : undefined,\n errorName: (abiItem as { name: string }).name,\n } as DecodeErrorResultReturnType<abi>\n}\n","import type { Abi, AbiStateMutability, ExtractAbiFunctions } from 'abitype'\n\nimport {\n AbiFunctionNotFoundError,\n type AbiFunctionNotFoundErrorType,\n AbiFunctionOutputsNotFoundError,\n type AbiFunctionOutputsNotFoundErrorType,\n} from '../../errors/abi.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n ContractFunctionReturnType,\n Widen,\n} from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'\nimport {\n type DecodeAbiParametersErrorType,\n decodeAbiParameters,\n} from './decodeAbiParameters.js'\nimport { type GetAbiItemErrorType, getAbiItem } from './getAbiItem.js'\n\nconst docsPath = '/docs/contract/decodeFunctionResult'\n\nexport type DecodeFunctionResultParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends\n | ContractFunctionName<abi>\n | undefined = ContractFunctionName<abi>,\n args extends ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName<abi>\n ? functionName\n : ContractFunctionName<abi>\n > = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName<abi>\n ? functionName\n : ContractFunctionName<abi>\n >,\n ///\n hasFunctions = abi extends Abi\n ? Abi extends abi\n ? true\n : [ExtractAbiFunctions<abi>] extends [never]\n ? false\n : true\n : true,\n allArgs = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName<abi>\n ? functionName\n : ContractFunctionName<abi>\n >,\n allFunctionNames = ContractFunctionName<abi>,\n> = {\n abi: abi\n data: Hex\n} & UnionEvaluate<\n IsNarrowable<abi, Abi> extends true\n ? abi['length'] extends 1\n ? { functionName?: functionName | allFunctionNames | undefined }\n : { functionName: functionName | allFunctionNames }\n : { functionName?: functionName | allFunctionNames | undefined }\n> &\n UnionEvaluate<\n readonly [] extends allArgs\n ? {\n args?:\n | allArgs // show all options\n // infer value, widen inferred value of `args` conditionally to match `allArgs`\n | (abi extends Abi\n ? args extends allArgs\n ? Widen<args>\n : never\n : never)\n | undefined\n }\n : {\n args?:\n | allArgs // show all options\n | (Widen<args> & (args extends allArgs ? unknown : never)) // infer value, widen inferred value of `args` match `allArgs` (e.g. avoid union `args: readonly [123n] | readonly [bigint]`)\n | undefined\n }\n > &\n (hasFunctions extends true ? unknown : never)\n\nexport type DecodeFunctionResultReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends\n | ContractFunctionName<abi>\n | undefined = ContractFunctionName<abi>,\n args extends ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName<abi>\n ? functionName\n : ContractFunctionName<abi>\n > = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName<abi>\n ? functionName\n : ContractFunctionName<abi>\n >,\n> = ContractFunctionReturnType<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName<abi>\n ? functionName\n : ContractFunctionName<abi>,\n args\n>\n\nexport type DecodeFunctionResultErrorType =\n | AbiFunctionNotFoundErrorType\n | AbiFunctionOutputsNotFoundErrorType\n | DecodeAbiParametersErrorType\n | GetAbiItemErrorType\n | ErrorType\n\nexport function decodeFunctionResult<\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName<abi> | undefined = undefined,\n const args extends ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName<abi>\n ? functionName\n : ContractFunctionName<abi>\n > = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName<abi>\n ? functionName\n : ContractFunctionName<abi>\n >,\n>(\n parameters: DecodeFunctionResultParameters<abi, functionName, args>,\n): DecodeFunctionResultReturnType<abi, functionName, args> {\n const { abi, args, functionName, data } =\n parameters as DecodeFunctionResultParameters\n\n let abiItem = abi[0]\n if (functionName) {\n const item = getAbiItem({ abi, args, name: functionName })\n if (!item) throw new AbiFunctionNotFoundError(functionName, { docsPath })\n abiItem = item\n }\n\n if (abiItem.type !== 'function')\n throw new AbiFunctionNotFoundError(undefined, { docsPath })\n if (!abiItem.outputs)\n throw new AbiFunctionOutputsNotFoundError(abiItem.name, { docsPath })\n\n const values = decodeAbiParameters(abiItem.outputs, data)\n if (values && values.length > 1)\n return values as DecodeFunctionResultReturnType<abi, functionName, args>\n if (values && values.length === 1)\n return values[0] as DecodeFunctionResultReturnType<abi, functionName, args>\n return undefined as DecodeFunctionResultReturnType<abi, functionName, args>\n}\n","import type {\n AbiParameter,\n AbiParameterToPrimitiveType,\n AbiParametersToPrimitiveTypes,\n} from 'abitype'\n\nimport {\n AbiEncodingArrayLengthMismatchError,\n type AbiEncodingArrayLengthMismatchErrorType,\n AbiEncodingBytesSizeMismatchError,\n type AbiEncodingBytesSizeMismatchErrorType,\n AbiEncodingLengthMismatchError,\n type AbiEncodingLengthMismatchErrorType,\n InvalidAbiEncodingTypeError,\n type InvalidAbiEncodingTypeErrorType,\n InvalidArrayError,\n type InvalidArrayErrorType,\n} from '../../errors/abi.js'\nimport {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../../errors/address.js'\nimport { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport { type IsAddressErrorType, isAddress } from '../address/isAddress.js'\nimport { type ConcatErrorType, concat } from '../data/concat.js'\nimport { type PadHexErrorType, padHex } from '../data/pad.js'\nimport { type SizeErrorType, size } from '../data/size.js'\nimport { type SliceErrorType, slice } from '../data/slice.js'\nimport {\n type BoolToHexErrorType,\n type NumberToHexErrorType,\n type StringToHexErrorType,\n boolToHex,\n numberToHex,\n stringToHex,\n} from '../encoding/toHex.js'\n\nexport type EncodeAbiParametersReturnType = Hex\n\nexport type EncodeAbiParametersErrorType =\n | AbiEncodingLengthMismatchErrorType\n | PrepareParamsErrorType\n | EncodeParamsErrorType\n | ErrorType\n\n/**\n * @description Encodes a list of primitive values into an ABI-encoded hex value.\n *\n * - Docs: https://viem.sh/docs/abi/encodeAbiParameters#encodeabiparameters\n *\n * Generates ABI encoded data using the [ABI specification](https://docs.soliditylang.org/en/latest/abi-spec), given a set of ABI parameters (inputs/outputs) and their corresponding values.\n *\n * @param params - a set of ABI Parameters (params), that can be in the shape of the inputs or outputs attribute of an ABI Item.\n * @param values - a set of values (values) that correspond to the given params.\n * @example\n * ```typescript\n * import { encodeAbiParameters } from 'viem'\n *\n * const encodedData = encodeAbiParameters(\n * [\n * { name: 'x', type: 'string' },\n * { name: 'y', type: 'uint' },\n * { name: 'z', type: 'bool' }\n * ],\n * ['wagmi', 420n, true]\n * )\n * ```\n *\n * You can also pass in Human Readable parameters with the parseAbiParameters utility.\n *\n * @example\n * ```typescript\n * import { encodeAbiParameters, parseAbiParameters } from 'viem'\n *\n * const encodedData = encodeAbiParameters(\n * parseAbiParameters('string x, uint y, bool z'),\n * ['wagmi', 420n, true]\n * )\n * ```\n */\nexport function encodeAbiParameters<\n const params extends readonly AbiParameter[] | readonly unknown[],\n>(\n params: params,\n values: params extends readonly AbiParameter[]\n ? AbiParametersToPrimitiveTypes<params>\n : never,\n): EncodeAbiParametersReturnType {\n if (params.length !== values.length)\n throw new AbiEncodingLengthMismatchError({\n expectedLength: params.length as number,\n givenLength: values.length as any,\n })\n // Prepare the parameters to determine dynamic types to encode.\n const preparedParams = prepareParams({\n params: params as readonly AbiParameter[],\n values: values as any,\n })\n const data = encodeParams(preparedParams)\n if (data.length === 0) return '0x'\n return data\n}\n\n/////////////////////////////////////////////////////////////////\n\ntype PreparedParam = { dynamic: boolean; encoded: Hex }\n\ntype TupleAbiParameter = AbiParameter & { components: readonly AbiParameter[] }\ntype Tuple = AbiParameterToPrimitiveType<TupleAbiParameter>\n\ntype PrepareParamsErrorType = PrepareParamErrorType | ErrorType\n\nfunction prepareParams<const params extends readonly AbiParameter[]>({\n params,\n values,\n}: {\n params: params\n values: AbiParametersToPrimitiveTypes<params>\n}) {\n const preparedParams: PreparedParam[] = []\n for (let i = 0; i < params.length; i++) {\n preparedParams.push(prepareParam({ param: params[i], value: values[i] }))\n }\n return preparedParams\n}\n\ntype PrepareParamErrorType =\n | EncodeAddressErrorType\n | EncodeArrayErrorType\n | EncodeBytesErrorType\n | EncodeBoolErrorType\n | EncodeNumberErrorType\n | EncodeStringErrorType\n | EncodeTupleErrorType\n | GetArrayComponentsErrorType\n | InvalidAbiEncodingTypeErrorType\n | ErrorType\n\nfunction prepareParam<const param extends AbiParameter>({\n param,\n value,\n}: {\n param: param\n value: AbiParameterToPrimitiveType<param>\n}): PreparedParam {\n const arrayComponents = getArrayComponents(param.type)\n if (arrayComponents) {\n const [length, type] = arrayComponents\n return encodeArray(value, { length, param: { ...param, type } })\n }\n if (param.type === 'tuple') {\n return encodeTuple(value as unknown as Tuple, {\n param: param as TupleAbiParameter,\n })\n }\n if (param.type === 'address') {\n return encodeAddress(value as unknown as Hex)\n }\n if (param.type === 'bool') {\n return encodeBool(value as unknown as boolean)\n }\n if (param.type.startsWith('uint') || param.type.startsWith('int')) {\n const signed = param.type.startsWith('int')\n return encodeNumber(value as unknown as number, { signed })\n }\n if (param.type.startsWith('bytes')) {\n return encodeBytes(value as unknown as Hex, { param })\n }\n if (param.type === 'string') {\n return encodeString(value as unknown as string)\n }\n throw new InvalidAbiEncodingTypeError(param.type, {\n docsPath: '/docs/contract/encodeAbiParameters',\n })\n}\n\n/////////////////////////////////////////////////////////////////\n\ntype EncodeParamsErrorType = NumberToHexErrorType | SizeErrorType | ErrorType\n\nfunction encodeParams(preparedParams: PreparedParam[]): Hex {\n // 1. Compute the size of the static part of the parameters.\n let staticSize = 0\n for (let i = 0; i < preparedParams.length; i++) {\n const { dynamic, encoded } = preparedParams[i]\n if (dynamic) staticSize += 32\n else staticSize += size(encoded)\n }\n\n // 2. Split the parameters into static and dynamic parts.\n const staticParams: Hex[] = []\n const dynamicParams: Hex[] = []\n let dynamicSize = 0\n for (let i = 0; i < preparedParams.length; i++) {\n const { dynamic, encoded } = preparedParams[i]\n if (dynamic) {\n staticParams.push(numberToHex(staticSize + dynamicSize, { size: 32 }))\n dynamicParams.push(encoded)\n dynamicSize += size(encoded)\n } else {\n staticParams.push(encoded)\n }\n }\n\n // 3. Concatenate static and dynamic parts.\n return concat([...staticParams, ...dynamicParams])\n}\n\n/////////////////////////////////////////////////////////////////\n\ntype EncodeAddressErrorType =\n | InvalidAddressErrorType\n | IsAddressErrorType\n | ErrorType\n\nfunction encodeAddress(value: Hex): PreparedParam {\n if (!isAddress(value)) throw new InvalidAddressError({ address: value })\n return { dynamic: false, encoded: padHex(value.toLowerCase() as Hex) }\n}\n\ntype EncodeArrayErrorType =\n | AbiEncodingArrayLengthMismatchErrorType\n | ConcatErrorType\n | EncodeParamsErrorType\n | InvalidArrayErrorType\n | NumberToHexErrorType\n // TODO: Add back once circular type reference is resolved\n // | PrepareParamErrorType\n | ErrorType\n\nfunction encodeArray<const param extends AbiParameter>(\n value: AbiParameterToPrimitiveType<param>,\n {\n length,\n param,\n }: {\n length: number | null\n param: param\n },\n): PreparedParam {\n const dynamic = length === null\n\n if (!Array.isArray(value)) throw new InvalidArrayError(value)\n if (!dynamic && value.length !== length)\n throw new AbiEncodingArrayLengthMismatchError({\n expectedLength: length!,\n givenLength: value.length,\n type: `${param.type}[${length}]`,\n })\n\n let dynamicChild = false\n const preparedParams: PreparedParam[] = []\n for (let i = 0; i < value.length; i++) {\n const preparedParam = prepareParam({ param, value: value[i] })\n if (preparedParam.dynamic) dynamicChild = true\n preparedParams.push(preparedParam)\n }\n\n if (dynamic || dynamicChild) {\n const data = encodeParams(preparedParams)\n if (dynamic) {\n const length = numberToHex(preparedParams.length, { size: 32 })\n return {\n dynamic: true,\n encoded: preparedParams.length > 0 ? concat([length, data]) : length,\n }\n }\n if (dynamicChild) return { dynamic: true, encoded: data }\n }\n return {\n dynamic: false,\n encoded: concat(preparedParams.map(({ encoded }) => encoded)),\n }\n}\n\ntype EncodeBytesErrorType =\n | AbiEncodingBytesSizeMismatchErrorType\n | ConcatErrorType\n | PadHexErrorType\n | NumberToHexErrorType\n | SizeErrorType\n | ErrorType\n\nfunction encodeBytes<const param extends AbiParameter>(\n value: Hex,\n { param }: { param: param },\n): PreparedParam {\n const [, paramSize] = param.type.split('bytes')\n const bytesSize = size(value)\n if (!paramSize) {\n let value_ = value\n // If the size is not divisible by 32 bytes, pad the end\n // with empty bytes to the ceiling 32 bytes.\n if (bytesSize % 32 !== 0)\n value_ = padHex(value_, {\n dir: 'right',\n size: Math.ceil((value.length - 2) / 2 / 32) * 32,\n })\n return {\n dynamic: true,\n encoded: concat([padHex(numberToHex(bytesSize, { size: 32 })), value_]),\n }\n }\n if (bytesSize !== Number.parseInt(paramSize))\n throw new AbiEncodingBytesSizeMismatchError({\n expectedSize: Number.parseInt(paramSize),\n value,\n })\n return { dynamic: false, encoded: padHex(value, { dir: 'right' }) }\n}\n\ntype EncodeBoolErrorType = PadHexErrorType | BoolToHexErrorType | ErrorType\n\nfunction encodeBool(value: boolean): PreparedParam {\n if (typeof value !== 'boolean')\n throw new BaseError(\n `Invalid boolean value: \"${value}\" (type: ${typeof value}). Expected: \\`true\\` or \\`false\\`.`,\n )\n return { dynamic: false, encoded: padHex(boolToHex(value)) }\n}\n\ntype EncodeNumberErrorType = NumberToHexErrorType | ErrorType\n\nfunction encodeNumber(\n value: number,\n { signed }: { signed: boolean },\n): PreparedParam {\n return {\n dynamic: false,\n encoded: numberToHex(value, {\n size: 32,\n signed,\n }),\n }\n}\n\ntype EncodeStringErrorType =\n | ConcatErrorType\n | NumberToHexErrorType\n | PadHexErrorType\n | SizeErrorType\n | SliceErrorType\n | StringToHexErrorType\n | ErrorType\n\nfunction encodeString(value: string): PreparedParam {\n const hexValue = stringToHex(value)\n const partsLength = Math.ceil(size(hexValue) / 32)\n const parts: Hex[] = []\n for (let i = 0; i < partsLength; i++) {\n parts.push(\n padHex(slice(hexValue, i * 32, (i + 1) * 32), {\n dir: 'right',\n }),\n )\n }\n return {\n dynamic: true,\n encoded: concat([\n padHex(numberToHex(size(hexValue), { size: 32 })),\n ...parts,\n ]),\n }\n}\n\ntype EncodeTupleErrorType =\n | ConcatErrorType\n | EncodeParamsErrorType\n // TODO: Add back once circular type reference is resolved\n // | PrepareParamErrorType\n | ErrorType\n\nfunction encodeTuple<\n const param extends AbiParameter & { components: readonly AbiParameter[] },\n>(\n value: AbiParameterToPrimitiveType<param>,\n { param }: { param: param },\n): PreparedParam {\n let dynamic = false\n const preparedParams: PreparedParam[] = []\n for (let i = 0; i < param.components.length; i++) {\n const param_ = param.components[i]\n const index = Array.isArray(value) ? i : param_.name\n const preparedParam = prepareParam({\n param: param_,\n value: (value as any)[index!] as readonly unknown[],\n })\n preparedParams.push(preparedParam)\n if (preparedParam.dynamic) dynamic = true\n }\n return {\n dynamic,\n encoded: dynamic\n ? encodeParams(preparedParams)\n : concat(preparedParams.map(({ encoded }) => encoded)),\n }\n}\n\ntype GetArrayComponentsErrorType = ErrorType\n\nexport function getArrayComponents(\n type: string,\n): [length: number | null, innerType: string] | undefined {\n const matches = type.match(/^(.*)\\[(\\d+)?\\]$/)\n return matches\n ? // Return `null` if the array is dynamic.\n [matches[2] ? Number(matches[2]) : null, matches[1]]\n : undefined\n}\n","import type { Abi } from 'abitype'\n\nimport {\n AbiConstructorNotFoundError,\n type AbiConstructorNotFoundErrorType,\n AbiConstructorParamsNotFoundError,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ContractConstructorArgs } from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { UnionEvaluate } from '../../types/utils.js'\nimport { type ConcatHexErrorType, concatHex } from '../data/concat.js'\nimport {\n type EncodeAbiParametersErrorType,\n encodeAbiParameters,\n} from './encodeAbiParameters.js'\n\nconst docsPath = '/docs/contract/encodeDeployData'\n\nexport type EncodeDeployDataParameters<\n abi extends Abi | readonly unknown[] = Abi,\n ///\n hasConstructor = abi extends Abi\n ? Abi extends abi\n ? true\n : [Extract<abi[number], { type: 'constructor' }>] extends [never]\n ? false\n : true\n : true,\n allArgs = ContractConstructorArgs<abi>,\n> = {\n abi: abi\n bytecode: Hex\n} & UnionEvaluate<\n hasConstructor extends false\n ? { args?: undefined }\n : readonly [] extends allArgs\n ? { args?: allArgs | undefined }\n : { args: allArgs }\n>\n\nexport type EncodeDeployDataReturnType = Hex\n\nexport type EncodeDeployDataErrorType =\n | AbiConstructorNotFoundErrorType\n | ConcatHexErrorType\n | EncodeAbiParametersErrorType\n | ErrorType\n\nexport function encodeDeployData<const abi extends Abi | readonly unknown[]>(\n parameters: EncodeDeployDataParameters<abi>,\n): EncodeDeployDataReturnType {\n const { abi, args, bytecode } = parameters as EncodeDeployDataParameters\n if (!args || args.length === 0) return bytecode\n\n const description = abi.find((x) => 'type' in x && x.type === 'constructor')\n if (!description) throw new AbiConstructorNotFoundError({ docsPath })\n if (!('inputs' in description))\n throw new AbiConstructorParamsNotFoundError({ docsPath })\n if (!description.inputs || description.inputs.length === 0)\n throw new AbiConstructorParamsNotFoundError({ docsPath })\n\n const data = encodeAbiParameters(description.inputs, args)\n return concatHex([bytecode, data!])\n}\n","import type {\n Abi,\n AbiStateMutability,\n ExtractAbiFunction,\n ExtractAbiFunctions,\n} from 'abitype'\n\nimport {\n AbiFunctionNotFoundError,\n type AbiFunctionNotFoundErrorType,\n} from '../../errors/abi.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n} from '../../types/contract.js'\nimport type { ConcatHexErrorType } from '../data/concat.js'\nimport {\n type ToFunctionSelectorErrorType,\n toFunctionSelector,\n} from '../hash/toFunctionSelector.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'\nimport { type FormatAbiItemErrorType, formatAbiItem } from './formatAbiItem.js'\nimport { type GetAbiItemErrorType, getAbiItem } from './getAbiItem.js'\n\nconst docsPath = '/docs/contract/encodeFunctionData'\n\nexport type PrepareEncodeFunctionDataParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends\n | ContractFunctionName<abi>\n | undefined = ContractFunctionName<abi>,\n ///\n hasFunctions = abi extends Abi\n ? Abi extends abi\n ? true\n : [ExtractAbiFunctions<abi>] extends [never]\n ? false\n : true\n : true,\n allArgs = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName<abi>\n ? functionName\n : ContractFunctionName<abi>\n >,\n allFunctionNames = ContractFunctionName<abi>,\n> = {\n abi: abi\n} & UnionEvaluate<\n IsNarrowable<abi, Abi> extends true\n ? abi['length'] extends 1\n ? { functionName?: functionName | allFunctionNames | Hex | undefined }\n : { functionName: functionName | allFunctionNames | Hex }\n : { functionName?: functionName | allFunctionNames | Hex | undefined }\n> &\n UnionEvaluate<{ args?: allArgs | undefined }> &\n (hasFunctions extends true ? unknown : never)\n\nexport type PrepareEncodeFunctionDataReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends\n | ContractFunctionName<abi>\n | undefined = ContractFunctionName<abi>,\n> = {\n abi: abi extends Abi\n ? functionName extends ContractFunctionName<abi>\n ? [ExtractAbiFunction<abi, functionName>]\n : abi\n : Abi\n functionName: Hex\n}\n\nexport type PrepareEncodeFunctionDataErrorType =\n | AbiFunctionNotFoundErrorType\n | ConcatHexErrorType\n | FormatAbiItemErrorType\n | GetAbiItemErrorType\n | ToFunctionSelectorErrorType\n | ErrorType\n\nexport function prepareEncodeFunctionData<\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName<abi> | undefined = undefined,\n>(\n parameters: PrepareEncodeFunctionDataParameters<abi, functionName>,\n): PrepareEncodeFunctionDataReturnType<abi, functionName> {\n const { abi, args, functionName } =\n parameters as PrepareEncodeFunctionDataParameters\n\n let abiItem = abi[0]\n if (functionName) {\n const item = getAbiItem({\n abi,\n args,\n name: functionName,\n })\n if (!item) throw new AbiFunctionNotFoundError(functionName, { docsPath })\n abiItem = item\n }\n\n if (abiItem.type !== 'function')\n throw new AbiFunctionNotFoundError(undefined, { docsPath })\n\n return {\n abi: [abiItem],\n functionName: toFunctionSelector(formatAbiItem(abiItem)),\n } as unknown as PrepareEncodeFunctionDataReturnType<abi, functionName>\n}\n","import type { Abi, AbiStateMutability, ExtractAbiFunctions } from 'abitype'\n\nimport type { AbiFunctionNotFoundErrorType } from '../../errors/abi.js'\nimport type {\n ContractFunctionArgs,\n ContractFunctionName,\n} from '../../types/contract.js'\nimport { type ConcatHexErrorType, concatHex } from '../data/concat.js'\nimport type { ToFunctionSelectorErrorType } from '../hash/toFunctionSelector.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'\nimport {\n type EncodeAbiParametersErrorType,\n encodeAbiParameters,\n} from './encodeAbiParameters.js'\nimport type { FormatAbiItemErrorType } from './formatAbiItem.js'\nimport type { GetAbiItemErrorType } from './getAbiItem.js'\nimport { prepareEncodeFunctionData } from './prepareEncodeFunctionData.js'\n\nexport type EncodeFunctionDataParameters<\n abi extends Abi | readonly unknown[] = Abi,\n functionName extends\n | ContractFunctionName<abi>\n | Hex\n | undefined = ContractFunctionName<abi>,\n ///\n hasFunctions = abi extends Abi\n ? Abi extends abi\n ? true\n : [ExtractAbiFunctions<abi>] extends [never]\n ? false\n : true\n : true,\n allArgs = ContractFunctionArgs<\n abi,\n AbiStateMutability,\n functionName extends ContractFunctionName<abi>\n ? functionName\n : ContractFunctionName<abi>\n >,\n allFunctionNames = ContractFunctionName<abi>,\n> = {\n abi: abi\n} & UnionEvaluate<\n IsNarrowable<abi, Abi> extends true\n ? abi['length'] extends 1\n ? { functionName?: functionName | allFunctionNames | Hex | undefined }\n : { functionName: functionName | allFunctionNames | Hex }\n : { functionName?: functionName | allFunctionNames | Hex | undefined }\n> &\n UnionEvaluate<\n readonly [] extends allArgs\n ? { args?: allArgs | undefined }\n : { args: allArgs }\n > &\n (hasFunctions extends true ? unknown : never)\n\nexport type EncodeFunctionDataReturnType = Hex\n\nexport type EncodeFunctionDataErrorType =\n | AbiFunctionNotFoundErrorType\n | ConcatHexErrorType\n | EncodeAbiParametersErrorType\n | FormatAbiItemErrorType\n | GetAbiItemErrorType\n | ToFunctionSelectorErrorType\n | ErrorType\n\nexport function encodeFunctionData<\n const abi extends Abi | readonly unknown[],\n functionName extends ContractFunctionName<abi> | undefined = undefined,\n>(\n parameters: EncodeFunctionDataParameters<abi, functionName>,\n): EncodeFunctionDataReturnType {\n const { args } = parameters as EncodeFunctionDataParameters\n\n const { abi, functionName } = (() => {\n if (\n parameters.abi.length === 1 &&\n parameters.functionName?.startsWith('0x')\n )\n return parameters as { abi: Abi; functionName: Hex }\n return prepareEncodeFunctionData(parameters)\n })()\n\n const abiItem = abi[0]\n const signature = functionName\n\n const data =\n 'inputs' in abiItem && abiItem.inputs\n ? encodeAbiParameters(abiItem.inputs, args ?? [])\n : undefined\n return concatHex([signature, data ?? '0x'])\n}\n","import type { AbiParameter } from 'abitype'\n\nimport {\n InvalidDefinitionTypeError,\n type InvalidDefinitionTypeErrorType,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { AbiItem } from '../../types/contract.js'\n\nexport type FormatAbiItemErrorType =\n | FormatAbiParamsErrorType\n | InvalidDefinitionTypeErrorType\n | ErrorType\n\nexport function formatAbiItem(\n abiItem: AbiItem,\n { includeName = false }: { includeName?: boolean | undefined } = {},\n) {\n if (\n abiItem.type !== 'function' &&\n abiItem.type !== 'event' &&\n abiItem.type !== 'error'\n )\n throw new InvalidDefinitionTypeError(abiItem.type)\n\n return `${abiItem.name}(${formatAbiParams(abiItem.inputs, { includeName })})`\n}\n\nexport type FormatAbiParamsErrorType = ErrorType\n\nexport function formatAbiParams(\n params: readonly AbiParameter[] | undefined,\n { includeName = false }: { includeName?: boolean | undefined } = {},\n): string {\n if (!params) return ''\n return params\n .map((param) => formatAbiParam(param, { includeName }))\n .join(includeName ? ', ' : ',')\n}\n\nexport type FormatAbiParamErrorType = ErrorType\n\nfunction formatAbiParam(\n param: AbiParameter,\n { includeName }: { includeName: boolean },\n): string {\n if (param.type.startsWith('tuple')) {\n return `(${formatAbiParams(\n (param as unknown as { components: AbiParameter[] }).components,\n { includeName },\n )})${param.type.slice('tuple'.length)}`\n }\n return param.type + (includeName && param.name ? ` ${param.name}` : '')\n}\n","import type { Abi, AbiParameter, Address } from 'abitype'\n\nimport {\n AbiItemAmbiguityError,\n type AbiItemAmbiguityErrorType,\n} from '../../errors/abi.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type {\n AbiItem,\n AbiItemArgs,\n AbiItemName,\n ExtractAbiItemForArgs,\n Widen,\n} from '../../types/contract.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { UnionEvaluate } from '../../types/utils.js'\nimport { type IsHexErrorType, isHex } from '../../utils/data/isHex.js'\nimport { type IsAddressErrorType, isAddress } from '../address/isAddress.js'\nimport { toEventSelector } from '../hash/toEventSelector.js'\nimport {\n type ToFunctionSelectorErrorType,\n toFunctionSelector,\n} from '../hash/toFunctionSelector.js'\n\nexport type GetAbiItemParameters<\n abi extends Abi | readonly unknown[] = Abi,\n name extends AbiItemName<abi> = AbiItemName<abi>,\n args extends AbiItemArgs<abi, name> | undefined = AbiItemArgs<abi, name>,\n ///\n allArgs = AbiItemArgs<abi, name>,\n allNames = AbiItemName<abi>,\n> = {\n abi: abi\n name:\n | allNames // show all options\n | (name extends allNames ? name : never) // infer value\n | Hex // function selector\n} & UnionEvaluate<\n readonly [] extends allArgs\n ? {\n args?:\n | allArgs // show all options\n // infer value, widen inferred value of `args` conditionally to match `allArgs`\n | (abi extends Abi\n ? args extends allArgs\n ? Widen<args>\n : never\n : never)\n | undefined\n }\n : {\n args?:\n | allArgs // show all options\n | (Widen<args> & (args extends allArgs ? unknown : never)) // infer value, widen inferred value of `args` match `allArgs` (e.g. avoid union `args: readonly [123n] | readonly [bigint]`)\n | undefined\n }\n>\n\nexport type GetAbiItemErrorType =\n | IsArgOfTypeErrorType\n | IsHexErrorType\n | ToFunctionSelectorErrorType\n | AbiItemAmbiguityErrorType\n | ErrorType\n\nexport type GetAbiItemReturnType<\n abi extends Abi | readonly unknown[] = Abi,\n name extends AbiItemName<abi> = AbiItemName<abi>,\n args extends AbiItemArgs<abi, name> | undefined = AbiItemArgs<abi, name>,\n> = abi extends Abi\n ? Abi extends abi\n ? AbiItem | undefined\n : ExtractAbiItemForArgs<\n abi,\n name,\n args extends AbiItemArgs<abi, name> ? args : AbiItemArgs<abi, name>\n >\n : AbiItem | undefined\n\nexport function getAbiItem<\n const abi extends Abi | readonly unknown[],\n name extends AbiItemName<abi>,\n const args extends AbiItemArgs<abi, name> | undefined = undefined,\n>(\n parameters: GetAbiItemParameters<abi, name, args>,\n): GetAbiItemReturnType<abi, name, args> {\n const { abi, args = [], name } = parameters as unknown as GetAbiItemParameters\n\n const isSelector = isHex(name, { strict: false })\n const abiItems = (abi as Abi).filter((abiItem) => {\n if (isSelector) {\n if (abiItem.type === 'function')\n return toFunctionSelector(abiItem) === name\n if (abiItem.type === 'event') return toEventSelector(abiItem) === name\n return false\n }\n return 'name' in abiItem && abiItem.name === name\n })\n\n if (abiItems.length === 0)\n return undefined as GetAbiItemReturnType<abi, name, args>\n if (abiItems.length === 1)\n return abiItems[0] as GetAbiItemReturnType<abi, name, args>\n\n let matchedAbiItem: AbiItem | undefined = undefined\n for (const abiItem of abiItems) {\n if (!('inputs' in abiItem)) continue\n if (!args || args.length === 0) {\n if (!abiItem.inputs || abiItem.inputs.length === 0)\n return abiItem as GetAbiItemReturnType<abi, name, args>\n continue\n }\n if (!abiItem.inputs) continue\n if (abiItem.inputs.length === 0) continue\n if (abiItem.inputs.length !== args.length) continue\n const matched = args.every((arg, index) => {\n const abiParameter = 'inputs' in abiItem && abiItem.inputs![index]\n if (!abiParameter) return false\n return isArgOfType(arg, abiParameter)\n })\n if (matched) {\n // Check for ambiguity against already matched parameters (e.g. `address` vs `bytes20`).\n if (\n matchedAbiItem &&\n 'inputs' in matchedAbiItem &&\n matchedAbiItem.inputs\n ) {\n const ambiguousTypes = getAmbiguousTypes(\n abiItem.inputs,\n matchedAbiItem.inputs,\n args as readonly unknown[],\n )\n if (ambiguousTypes)\n throw new AbiItemAmbiguityError(\n {\n abiItem,\n type: ambiguousTypes[0],\n },\n {\n abiItem: matchedAbiItem,\n type: ambiguousTypes[1],\n },\n )\n }\n\n matchedAbiItem = abiItem\n }\n }\n\n if (matchedAbiItem)\n return matchedAbiItem as GetAbiItemReturnType<abi, name, args>\n return abiItems[0] as GetAbiItemReturnType<abi, name, args>\n}\n\ntype IsArgOfTypeErrorType = IsAddressErrorType | ErrorType\n\n/** @internal */\nexport function isArgOfType(arg: unknown, abiParameter: AbiParameter): boolean {\n const argType = typeof arg\n const abiParameterType = abiParameter.type\n switch (abiParameterType) {\n case 'address':\n return isAddress(arg as Address, { strict: false })\n case 'bool':\n return argType === 'boolean'\n case 'function':\n return argType === 'string'\n case 'string':\n return argType === 'string'\n default: {\n if (abiParameterType === 'tuple' && 'components' in abiParameter)\n return Object.values(abiParameter.components).every(\n (component, index) => {\n return isArgOfType(\n Object.values(arg as unknown[] | Record<string, unknown>)[index],\n component as AbiParameter,\n )\n },\n )\n\n // `(u)int<M>`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n // https://regexr.com/6v8hp\n if (\n /^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(\n abiParameterType,\n )\n )\n return argType === 'number' || argType === 'bigint'\n\n // `bytes<M>`: binary type of `M` bytes, `0 < M <= 32`\n // https://regexr.com/6va55\n if (/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(abiParameterType))\n return argType === 'string' || arg instanceof Uint8Array\n\n // fixed-length (`<type>[M]`) and dynamic (`<type>[]`) arrays\n // https://regexr.com/6va6i\n if (/[a-z]+[1-9]{0,3}(\\[[0-9]{0,}\\])+$/.test(abiParameterType)) {\n return (\n Array.isArray(arg) &&\n arg.every((x: unknown) =>\n isArgOfType(x, {\n ...abiParameter,\n // Pop off `[]` or `[M]` from end of type\n type: abiParameterType.replace(/(\\[[0-9]{0,}\\])$/, ''),\n } as AbiParameter),\n )\n )\n }\n\n return false\n }\n }\n}\n\n/** @internal */\nexport function getAmbiguousTypes(\n sourceParameters: readonly AbiParameter[],\n targetParameters: readonly AbiParameter[],\n args: AbiItemArgs,\n): AbiParameter['type'][] | undefined {\n for (const parameterIndex in sourceParameters) {\n const sourceParameter = sourceParameters[parameterIndex]\n const targetParameter = targetParameters[parameterIndex]\n\n if (\n sourceParameter.type === 'tuple' &&\n targetParameter.type === 'tuple' &&\n 'components' in sourceParameter &&\n 'components' in targetParameter\n )\n return getAmbiguousTypes(\n sourceParameter.components,\n targetParameter.components,\n (args as any)[parameterIndex],\n )\n\n const types = [sourceParameter.type, targetParameter.type]\n\n const ambiguous = (() => {\n if (types.includes('address') && types.includes('bytes20')) return true\n if (types.includes('address') && types.includes('string'))\n return isAddress(args[parameterIndex] as Address, { strict: false })\n if (types.includes('address') && types.includes('bytes'))\n return isAddress(args[parameterIndex] as Address, { strict: false })\n return false\n })()\n\n if (ambiguous) return types\n }\n\n return\n}\n","import type { Address } from 'abitype'\n\nimport { InvalidAddressError } from '../../errors/address.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport {\n type StringToBytesErrorType,\n stringToBytes,\n} from '../encoding/toBytes.js'\nimport { type Keccak256ErrorType, keccak256 } from '../hash/keccak256.js'\nimport { LruMap } from '../lru.js'\nimport { type IsAddressErrorType, isAddress } from './isAddress.js'\n\nconst checksumAddressCache = /*#__PURE__*/ new LruMap<Address>(8192)\n\nexport type ChecksumAddressErrorType =\n | Keccak256ErrorType\n | StringToBytesErrorType\n | ErrorType\n\nexport function checksumAddress(\n address_: Address,\n /**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\n chainId?: number | undefined,\n): Address {\n if (checksumAddressCache.has(`${address_}.${chainId}`))\n return checksumAddressCache.get(`${address_}.${chainId}`)!\n\n const hexAddress = chainId\n ? `${chainId}${address_.toLowerCase()}`\n : address_.substring(2).toLowerCase()\n const hash = keccak256(stringToBytes(hexAddress), 'bytes')\n\n const address = (\n chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress\n ).split('')\n for (let i = 0; i < 40; i += 2) {\n if (hash[i >> 1] >> 4 >= 8 && address[i]) {\n address[i] = address[i].toUpperCase()\n }\n if ((hash[i >> 1] & 0x0f) >= 8 && address[i + 1]) {\n address[i + 1] = address[i + 1].toUpperCase()\n }\n }\n\n const result = `0x${address.join('')}` as const\n checksumAddressCache.set(`${address_}.${chainId}`, result)\n return result\n}\n\nexport type GetAddressErrorType =\n | ChecksumAddressErrorType\n | IsAddressErrorType\n | ErrorType\n\nexport function getAddress(\n address: string,\n /**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\n chainId?: number,\n): Address {\n if (!isAddress(address, { strict: false }))\n throw new InvalidAddressError({ address })\n return checksumAddress(address, chainId)\n}\n","import type { Address } from 'abitype'\nimport type { ErrorType } from '../../errors/utils.js'\nimport { LruMap } from '../lru.js'\nimport { checksumAddress } from './getAddress.js'\n\nconst addressRegex = /^0x[a-fA-F0-9]{40}$/\n\n/** @internal */\nexport const isAddressCache = /*#__PURE__*/ new LruMap<boolean>(8192)\n\nexport type IsAddressOptions = {\n /**\n * Enables strict mode. Whether or not to compare the address against its checksum.\n *\n * @default true\n */\n strict?: boolean | undefined\n}\n\nexport type IsAddressErrorType = ErrorType\n\nexport function isAddress(\n address: string,\n options?: IsAddressOptions | undefined,\n): address is Address {\n const { strict = true } = options ?? {}\n const cacheKey = `${address}.${strict}`\n\n if (isAddressCache.has(cacheKey)) return isAddressCache.get(cacheKey)!\n\n const result = (() => {\n if (!addressRegex.test(address)) return false\n if (address.toLowerCase() === address) return true\n if (strict) return checksumAddress(address as Address) === address\n return true\n })()\n isAddressCache.set(cacheKey, result)\n return result\n}\n","import type { Address } from 'abitype'\n\nimport {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../../errors/address.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport { isAddress } from './isAddress.js'\n\nexport type IsAddressEqualReturnType = boolean\nexport type IsAddressEqualErrorType = InvalidAddressErrorType | ErrorType\n\nexport function isAddressEqual(a: Address, b: Address) {\n if (!isAddress(a, { strict: false }))\n throw new InvalidAddressError({ address: a })\n if (!isAddress(b, { strict: false }))\n throw new InvalidAddressError({ address: b })\n return a.toLowerCase() === b.toLowerCase()\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Kzg } from '../../types/kzg.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type HexToBytesErrorType, hexToBytes } from '../encoding/toBytes.js'\nimport { type BytesToHexErrorType, bytesToHex } from '../encoding/toHex.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type BlobsToCommitmentsParameters<\n blobs extends readonly ByteArray[] | readonly Hex[] =\n | readonly ByteArray[]\n | readonly Hex[],\n to extends To | undefined = undefined,\n> = {\n /** Blobs to transform into commitments. */\n blobs: blobs | readonly ByteArray[] | readonly Hex[]\n /** KZG implementation. */\n kzg: Pick<Kzg, 'blobToKzgCommitment'>\n /** Return type. */\n to?: to | To | undefined\n}\n\nexport type BlobsToCommitmentsReturnType<to extends To> =\n | (to extends 'bytes' ? readonly ByteArray[] : never)\n | (to extends 'hex' ? readonly Hex[] : never)\n\nexport type BlobsToCommitmentsErrorType =\n | HexToBytesErrorType\n | BytesToHexErrorType\n | ErrorType\n\n/**\n * Compute commitments from a list of blobs.\n *\n * @example\n * ```ts\n * import { blobsToCommitments, toBlobs } from 'viem'\n * import { kzg } from './kzg'\n *\n * const blobs = toBlobs({ data: '0x1234' })\n * const commitments = blobsToCommitments({ blobs, kzg })\n * ```\n */\nexport function blobsToCommitments<\n const blobs extends readonly ByteArray[] | readonly Hex[],\n to extends To =\n | (blobs extends readonly Hex[] ? 'hex' : never)\n | (blobs extends readonly ByteArray[] ? 'bytes' : never),\n>(\n parameters: BlobsToCommitmentsParameters<blobs, to>,\n): BlobsToCommitmentsReturnType<to> {\n const { kzg } = parameters\n\n const to =\n parameters.to ?? (typeof parameters.blobs[0] === 'string' ? 'hex' : 'bytes')\n const blobs = (\n typeof parameters.blobs[0] === 'string'\n ? parameters.blobs.map((x) => hexToBytes(x as any))\n : parameters.blobs\n ) as ByteArray[]\n\n const commitments: ByteArray[] = []\n for (const blob of blobs)\n commitments.push(Uint8Array.from(kzg.blobToKzgCommitment(blob)))\n\n return (to === 'bytes'\n ? commitments\n : commitments.map((x) =>\n bytesToHex(x),\n )) as {} as BlobsToCommitmentsReturnType<to>\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Kzg } from '../../types/kzg.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type HexToBytesErrorType, hexToBytes } from '../encoding/toBytes.js'\nimport { type BytesToHexErrorType, bytesToHex } from '../encoding/toHex.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type blobsToProofsParameters<\n blobs extends readonly ByteArray[] | readonly Hex[],\n commitments extends readonly ByteArray[] | readonly Hex[],\n to extends To =\n | (blobs extends readonly Hex[] ? 'hex' : never)\n | (blobs extends readonly ByteArray[] ? 'bytes' : never),\n ///\n _blobsType =\n | (blobs extends readonly Hex[] ? readonly Hex[] : never)\n | (blobs extends readonly ByteArray[] ? readonly ByteArray[] : never),\n> = {\n /** Blobs to transform into proofs. */\n blobs: blobs\n /** Commitments for the blobs. */\n commitments: commitments &\n (commitments extends _blobsType\n ? {}\n : `commitments must be the same type as blobs`)\n /** KZG implementation. */\n kzg: Pick<Kzg, 'computeBlobKzgProof'>\n /** Return type. */\n to?: to | To | undefined\n}\n\nexport type blobsToProofsReturnType<to extends To> =\n | (to extends 'bytes' ? ByteArray[] : never)\n | (to extends 'hex' ? Hex[] : never)\n\nexport type blobsToProofsErrorType =\n | BytesToHexErrorType\n | HexToBytesErrorType\n | ErrorType\n\n/**\n * Compute the proofs for a list of blobs and their commitments.\n *\n * @example\n * ```ts\n * import {\n * blobsToCommitments,\n * toBlobs\n * } from 'viem'\n * import { kzg } from './kzg'\n *\n * const blobs = toBlobs({ data: '0x1234' })\n * const commitments = blobsToCommitments({ blobs, kzg })\n * const proofs = blobsToProofs({ blobs, commitments, kzg })\n * ```\n */\nexport function blobsToProofs<\n const blobs extends readonly ByteArray[] | readonly Hex[],\n const commitments extends readonly ByteArray[] | readonly Hex[],\n to extends To =\n | (blobs extends readonly Hex[] ? 'hex' : never)\n | (blobs extends readonly ByteArray[] ? 'bytes' : never),\n>(\n parameters: blobsToProofsParameters<blobs, commitments, to>,\n): blobsToProofsReturnType<to> {\n const { kzg } = parameters\n\n const to =\n parameters.to ?? (typeof parameters.blobs[0] === 'string' ? 'hex' : 'bytes')\n\n const blobs = (\n typeof parameters.blobs[0] === 'string'\n ? parameters.blobs.map((x) => hexToBytes(x as any))\n : parameters.blobs\n ) as ByteArray[]\n const commitments = (\n typeof parameters.commitments[0] === 'string'\n ? parameters.commitments.map((x) => hexToBytes(x as any))\n : parameters.commitments\n ) as ByteArray[]\n\n const proofs: ByteArray[] = []\n for (let i = 0; i < blobs.length; i++) {\n const blob = blobs[i]\n const commitment = commitments[i]\n proofs.push(Uint8Array.from(kzg.computeBlobKzgProof(blob, commitment)))\n }\n\n return (to === 'bytes'\n ? proofs\n : proofs.map((x) => bytesToHex(x))) as {} as blobsToProofsReturnType<to>\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type BytesToHexErrorType, bytesToHex } from '../encoding/toHex.js'\nimport { type Sha256ErrorType, sha256 } from '../hash/sha256.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type CommitmentToVersionedHashParameters<\n commitment extends Uint8Array | Hex = Uint8Array | Hex,\n to extends To | undefined = undefined,\n> = {\n /** Commitment from blob. */\n commitment: commitment | Uint8Array | Hex\n /** Return type. */\n to?: to | To | undefined\n /** Version to tag onto the hash. */\n version?: number | undefined\n}\n\nexport type CommitmentToVersionedHashReturnType<to extends To> =\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type CommitmentToVersionedHashErrorType =\n | Sha256ErrorType\n | BytesToHexErrorType\n | ErrorType\n\n/**\n * Transform a commitment to it's versioned hash.\n *\n * @example\n * ```ts\n * import {\n * blobsToCommitments,\n * commitmentToVersionedHash,\n * toBlobs\n * } from 'viem'\n * import { kzg } from './kzg'\n *\n * const blobs = toBlobs({ data: '0x1234' })\n * const [commitment] = blobsToCommitments({ blobs, kzg })\n * const versionedHash = commitmentToVersionedHash({ commitment })\n * ```\n */\nexport function commitmentToVersionedHash<\n const commitment extends Hex | ByteArray,\n to extends To =\n | (commitment extends Hex ? 'hex' : never)\n | (commitment extends ByteArray ? 'bytes' : never),\n>(\n parameters: CommitmentToVersionedHashParameters<commitment, to>,\n): CommitmentToVersionedHashReturnType<to> {\n const { commitment, version = 1 } = parameters\n const to = parameters.to ?? (typeof commitment === 'string' ? 'hex' : 'bytes')\n\n const versionedHash = sha256(commitment, 'bytes')\n versionedHash.set([version], 0)\n return (\n to === 'bytes' ? versionedHash : bytesToHex(versionedHash)\n ) as CommitmentToVersionedHashReturnType<to>\n}\n","import { sha256 as noble_sha256 } from '@noble/hashes/sha256'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\nimport { type ToBytesErrorType, toBytes } from '../encoding/toBytes.js'\nimport { type ToHexErrorType, toHex } from '../encoding/toHex.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type Sha256Hash<to extends To> =\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type Sha256ErrorType =\n | IsHexErrorType\n | ToBytesErrorType\n | ToHexErrorType\n | ErrorType\n\nexport function sha256<to extends To = 'hex'>(\n value: Hex | ByteArray,\n to_?: to | undefined,\n): Sha256Hash<to> {\n const to = to_ || 'hex'\n const bytes = noble_sha256(\n isHex(value, { strict: false }) ? toBytes(value) : value,\n )\n if (to === 'bytes') return bytes as Sha256Hash<to>\n return toHex(bytes) as Sha256Hash<to>\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport {\n type CommitmentToVersionedHashErrorType,\n commitmentToVersionedHash,\n} from './commitmentToVersionedHash.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type CommitmentsToVersionedHashesParameters<\n commitments extends readonly Uint8Array[] | readonly Hex[] =\n | readonly Uint8Array[]\n | readonly Hex[],\n to extends To | undefined = undefined,\n> = {\n /** Commitments from blobs. */\n commitments: commitments | readonly Uint8Array[] | readonly Hex[]\n /** Return type. */\n to?: to | To | undefined\n /** Version to tag onto the hashes. */\n version?: number | undefined\n}\n\nexport type CommitmentsToVersionedHashesReturnType<to extends To> =\n | (to extends 'bytes' ? readonly ByteArray[] : never)\n | (to extends 'hex' ? readonly Hex[] : never)\n\nexport type CommitmentsToVersionedHashesErrorType =\n | CommitmentToVersionedHashErrorType\n | ErrorType\n\n/**\n * Transform a list of commitments to their versioned hashes.\n *\n * @example\n * ```ts\n * import {\n * blobsToCommitments,\n * commitmentsToVersionedHashes,\n * toBlobs\n * } from 'viem'\n * import { kzg } from './kzg'\n *\n * const blobs = toBlobs({ data: '0x1234' })\n * const commitments = blobsToCommitments({ blobs, kzg })\n * const versionedHashes = commitmentsToVersionedHashes({ commitments })\n * ```\n */\nexport function commitmentsToVersionedHashes<\n const commitments extends readonly Uint8Array[] | readonly Hex[],\n to extends To =\n | (commitments extends readonly Hex[] ? 'hex' : never)\n | (commitments extends readonly ByteArray[] ? 'bytes' : never),\n>(\n parameters: CommitmentsToVersionedHashesParameters<commitments, to>,\n): CommitmentsToVersionedHashesReturnType<to> {\n const { commitments, version } = parameters\n\n const to =\n parameters.to ?? (typeof commitments[0] === 'string' ? 'hex' : 'bytes')\n\n const hashes: Uint8Array[] | Hex[] = []\n for (const commitment of commitments) {\n hashes.push(\n commitmentToVersionedHash({\n commitment,\n to,\n version,\n }) as any,\n )\n }\n return hashes as any\n}\n","// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-4844.md#parameters\n\n/** Blob limit per transaction. */\nconst blobsPerTransaction = 6\n\n/** The number of bytes in a BLS scalar field element. */\nexport const bytesPerFieldElement = 32\n\n/** The number of field elements in a blob. */\nexport const fieldElementsPerBlob = 4096\n\n/** The number of bytes in a blob. */\nexport const bytesPerBlob = bytesPerFieldElement * fieldElementsPerBlob\n\n/** Blob bytes limit per transaction. */\nexport const maxBytesPerTransaction =\n bytesPerBlob * blobsPerTransaction -\n // terminator byte (0x80).\n 1 -\n // zero byte (0x00) appended to each field element.\n 1 * fieldElementsPerBlob * blobsPerTransaction\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { BlobSidecars } from '../../types/eip4844.js'\nimport type { Kzg } from '../../types/kzg.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport type { OneOf } from '../../types/utils.js'\nimport {\n type BlobsToCommitmentsErrorType,\n blobsToCommitments,\n} from './blobsToCommitments.js'\nimport { blobsToProofs, type blobsToProofsErrorType } from './blobsToProofs.js'\nimport { type ToBlobsErrorType, toBlobs } from './toBlobs.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type ToBlobSidecarsParameters<\n data extends Hex | ByteArray | undefined = undefined,\n blobs extends readonly Hex[] | readonly ByteArray[] | undefined = undefined,\n to extends To =\n | (blobs extends readonly Hex[] ? 'hex' : never)\n | (blobs extends readonly ByteArray[] ? 'bytes' : never),\n ///\n _blobsType =\n | (blobs extends readonly Hex[] ? readonly Hex[] : never)\n | (blobs extends readonly ByteArray[] ? readonly ByteArray[] : never),\n> = {\n /** Return type. */\n to?: to | To | undefined\n} & OneOf<\n | {\n /** Data to transform into blobs. */\n data: data | Hex | ByteArray\n /** KZG implementation. */\n kzg: Kzg\n }\n | {\n /** Blobs. */\n blobs: blobs | readonly Hex[] | readonly ByteArray[]\n /** Commitment for each blob. */\n commitments: _blobsType | readonly Hex[] | readonly ByteArray[]\n /** Proof for each blob. */\n proofs: _blobsType | readonly Hex[] | readonly ByteArray[]\n }\n>\n\nexport type ToBlobSidecarsReturnType<to extends To> =\n | (to extends 'bytes' ? BlobSidecars<ByteArray> : never)\n | (to extends 'hex' ? BlobSidecars<Hex> : never)\n\nexport type ToBlobSidecarsErrorType =\n | BlobsToCommitmentsErrorType\n | ToBlobsErrorType\n | blobsToProofsErrorType\n | ErrorType\n\n/**\n * Transforms arbitrary data (or blobs, commitments, & proofs) into a sidecar array.\n *\n * @example\n * ```ts\n * import { toBlobSidecars, stringToHex } from 'viem'\n *\n * const sidecars = toBlobSidecars({ data: stringToHex('hello world') })\n * ```\n *\n * @example\n * ```ts\n * import {\n * blobsToCommitments,\n * toBlobs,\n * blobsToProofs,\n * toBlobSidecars,\n * stringToHex\n * } from 'viem'\n *\n * const blobs = toBlobs({ data: stringToHex('hello world') })\n * const commitments = blobsToCommitments({ blobs, kzg })\n * const proofs = blobsToProofs({ blobs, commitments, kzg })\n *\n * const sidecars = toBlobSidecars({ blobs, commitments, proofs })\n * ```\n */\nexport function toBlobSidecars<\n const data extends Hex | ByteArray | undefined = undefined,\n const blobs extends\n | readonly Hex[]\n | readonly ByteArray[]\n | undefined = undefined,\n to extends To =\n | (data extends Hex ? 'hex' : never)\n | (data extends ByteArray ? 'bytes' : never)\n | (blobs extends readonly Hex[] ? 'hex' : never)\n | (blobs extends readonly ByteArray[] ? 'bytes' : never),\n>(\n parameters: ToBlobSidecarsParameters<data, blobs, to>,\n): ToBlobSidecarsReturnType<to> {\n const { data, kzg, to } = parameters\n const blobs = parameters.blobs ?? toBlobs({ data: data!, to })\n const commitments =\n parameters.commitments ?? blobsToCommitments({ blobs, kzg: kzg!, to })\n const proofs =\n parameters.proofs ?? blobsToProofs({ blobs, commitments, kzg: kzg!, to })\n\n const sidecars: BlobSidecars = []\n for (let i = 0; i < blobs.length; i++)\n sidecars.push({\n blob: blobs[i],\n commitment: commitments[i],\n proof: proofs[i],\n })\n\n return sidecars as ToBlobSidecarsReturnType<to>\n}\n","import {\n bytesPerBlob,\n bytesPerFieldElement,\n fieldElementsPerBlob,\n maxBytesPerTransaction,\n} from '../../constants/blob.js'\nimport {\n BlobSizeTooLargeError,\n type BlobSizeTooLargeErrorType,\n EmptyBlobError,\n type EmptyBlobErrorType,\n} from '../../errors/blob.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type CreateCursorErrorType, createCursor } from '../cursor.js'\nimport { type SizeErrorType, size } from '../data/size.js'\nimport { type HexToBytesErrorType, hexToBytes } from '../encoding/toBytes.js'\nimport { type BytesToHexErrorType, bytesToHex } from '../encoding/toHex.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type ToBlobsParameters<\n data extends Hex | ByteArray = Hex | ByteArray,\n to extends To | undefined = undefined,\n> = {\n /** Data to transform to a blob. */\n data: data | Hex | ByteArray\n /** Return type. */\n to?: to | To | undefined\n}\n\nexport type ToBlobsReturnType<to extends To> =\n | (to extends 'bytes' ? readonly ByteArray[] : never)\n | (to extends 'hex' ? readonly Hex[] : never)\n\nexport type ToBlobsErrorType =\n | BlobSizeTooLargeErrorType\n | BytesToHexErrorType\n | CreateCursorErrorType\n | EmptyBlobErrorType\n | HexToBytesErrorType\n | SizeErrorType\n | ErrorType\n\n/**\n * Transforms arbitrary data to blobs.\n *\n * @example\n * ```ts\n * import { toBlobs, stringToHex } from 'viem'\n *\n * const blobs = toBlobs({ data: stringToHex('hello world') })\n * ```\n */\nexport function toBlobs<\n const data extends Hex | ByteArray,\n to extends To =\n | (data extends Hex ? 'hex' : never)\n | (data extends ByteArray ? 'bytes' : never),\n>(parameters: ToBlobsParameters<data, to>): ToBlobsReturnType<to> {\n const to =\n parameters.to ?? (typeof parameters.data === 'string' ? 'hex' : 'bytes')\n const data = (\n typeof parameters.data === 'string'\n ? hexToBytes(parameters.data)\n : parameters.data\n ) as ByteArray\n\n const size_ = size(data)\n if (!size_) throw new EmptyBlobError()\n if (size_ > maxBytesPerTransaction)\n throw new BlobSizeTooLargeError({\n maxSize: maxBytesPerTransaction,\n size: size_,\n })\n\n const blobs = []\n\n let active = true\n let position = 0\n while (active) {\n const blob = createCursor(new Uint8Array(bytesPerBlob))\n\n let size = 0\n while (size < fieldElementsPerBlob) {\n const bytes = data.slice(position, position + (bytesPerFieldElement - 1))\n\n // Push a zero byte so the field element doesn't overflow the BLS modulus.\n blob.pushByte(0x00)\n\n // Push the current segment of data bytes.\n blob.pushBytes(bytes)\n\n // If we detect that the current segment of data bytes is less than 31 bytes,\n // we can stop processing and push a terminator byte to indicate the end of the blob.\n if (bytes.length < 31) {\n blob.pushByte(0x80)\n active = false\n break\n }\n\n size++\n position += 31\n }\n\n blobs.push(blob)\n }\n\n return (\n to === 'bytes'\n ? blobs.map((x) => x.bytes)\n : blobs.map((x) => bytesToHex(x.bytes))\n ) as any\n}\n","import type { Chain, ChainFormatters } from '../../types/chain.js'\nimport type { Assign, Prettify } from '../../types/utils.js'\n\nexport function defineChain<\n formatters extends ChainFormatters,\n const chain extends Chain<formatters>,\n>(chain: chain): Prettify<Assign<Chain<undefined>, chain>> {\n return {\n formatters: undefined,\n fees: undefined,\n serializers: undefined,\n ...chain,\n } as Assign<Chain<undefined>, chain>\n}\n","import {\n ChainDoesNotSupportContract,\n type ChainDoesNotSupportContractErrorType,\n} from '../../errors/chain.js'\nimport type { Chain, ChainContract } from '../../types/chain.js'\n\nexport type GetChainContractAddressErrorType =\n ChainDoesNotSupportContractErrorType\n\nexport function getChainContractAddress({\n blockNumber,\n chain,\n contract: name,\n}: {\n blockNumber?: bigint | undefined\n chain: Chain\n contract: string\n}) {\n const contract = (chain?.contracts as Record<string, ChainContract>)?.[name]\n if (!contract)\n throw new ChainDoesNotSupportContract({\n chain,\n contract: { name },\n })\n\n if (\n blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n )\n throw new ChainDoesNotSupportContract({\n blockNumber,\n chain,\n contract: {\n name,\n blockCreated: contract.blockCreated,\n },\n })\n\n return contract.address\n}\n","import {\n NegativeOffsetError,\n type NegativeOffsetErrorType,\n PositionOutOfBoundsError,\n type PositionOutOfBoundsErrorType,\n RecursiveReadLimitExceededError,\n type RecursiveReadLimitExceededErrorType,\n} from '../errors/cursor.js'\nimport type { ErrorType } from '../errors/utils.js'\nimport type { ByteArray } from '../types/misc.js'\n\nexport type Cursor = {\n bytes: ByteArray\n dataView: DataView\n position: number\n positionReadCount: Map<number, number>\n recursiveReadCount: number\n recursiveReadLimit: number\n remaining: number\n assertReadLimit(position?: number): void\n assertPosition(position: number): void\n decrementPosition(offset: number): void\n getReadCount(position?: number): number\n incrementPosition(offset: number): void\n inspectByte(position?: number): ByteArray[number]\n inspectBytes(length: number, position?: number): ByteArray\n inspectUint8(position?: number): number\n inspectUint16(position?: number): number\n inspectUint24(position?: number): number\n inspectUint32(position?: number): number\n pushByte(byte: ByteArray[number]): void\n pushBytes(bytes: ByteArray): void\n pushUint8(value: number): void\n pushUint16(value: number): void\n pushUint24(value: number): void\n pushUint32(value: number): void\n readByte(): ByteArray[number]\n readBytes(length: number, size?: number): ByteArray\n readUint8(): number\n readUint16(): number\n readUint24(): number\n readUint32(): number\n setPosition(position: number): () => void\n _touch(): void\n}\n\ntype CursorErrorType =\n | CursorAssertPositionErrorType\n | CursorDecrementPositionErrorType\n | CursorIncrementPositionErrorType\n | ErrorType\n\ntype CursorAssertPositionErrorType = PositionOutOfBoundsErrorType | ErrorType\n\ntype CursorDecrementPositionErrorType = NegativeOffsetError | ErrorType\n\ntype CursorIncrementPositionErrorType = NegativeOffsetError | ErrorType\n\ntype StaticCursorErrorType =\n | NegativeOffsetErrorType\n | RecursiveReadLimitExceededErrorType\n\nconst staticCursor: Cursor = {\n bytes: new Uint8Array(),\n dataView: new DataView(new ArrayBuffer(0)),\n position: 0,\n positionReadCount: new Map(),\n recursiveReadCount: 0,\n recursiveReadLimit: Number.POSITIVE_INFINITY,\n assertReadLimit() {\n if (this.recursiveReadCount >= this.recursiveReadLimit)\n throw new RecursiveReadLimitExceededError({\n count: this.recursiveReadCount + 1,\n limit: this.recursiveReadLimit,\n })\n },\n assertPosition(position) {\n if (position < 0 || position > this.bytes.length - 1)\n throw new PositionOutOfBoundsError({\n length: this.bytes.length,\n position,\n })\n },\n decrementPosition(offset) {\n if (offset < 0) throw new NegativeOffsetError({ offset })\n const position = this.position - offset\n this.assertPosition(position)\n this.position = position\n },\n getReadCount(position) {\n return this.positionReadCount.get(position || this.position) || 0\n },\n incrementPosition(offset) {\n if (offset < 0) throw new NegativeOffsetError({ offset })\n const position = this.position + offset\n this.assertPosition(position)\n this.position = position\n },\n inspectByte(position_) {\n const position = position_ ?? this.position\n this.assertPosition(position)\n return this.bytes[position]\n },\n inspectBytes(length, position_) {\n const position = position_ ?? this.position\n this.assertPosition(position + length - 1)\n return this.bytes.subarray(position, position + length)\n },\n inspectUint8(position_) {\n const position = position_ ?? this.position\n this.assertPosition(position)\n return this.bytes[position]\n },\n inspectUint16(position_) {\n const position = position_ ?? this.position\n this.assertPosition(position + 1)\n return this.dataView.getUint16(position)\n },\n inspectUint24(position_) {\n const position = position_ ?? this.position\n this.assertPosition(position + 2)\n return (\n (this.dataView.getUint16(position) << 8) +\n this.dataView.getUint8(position + 2)\n )\n },\n inspectUint32(position_) {\n const position = position_ ?? this.position\n this.assertPosition(position + 3)\n return this.dataView.getUint32(position)\n },\n pushByte(byte: ByteArray[number]) {\n this.assertPosition(this.position)\n this.bytes[this.position] = byte\n this.position++\n },\n pushBytes(bytes: ByteArray) {\n this.assertPosition(this.position + bytes.length - 1)\n this.bytes.set(bytes, this.position)\n this.position += bytes.length\n },\n pushUint8(value: number) {\n this.assertPosition(this.position)\n this.bytes[this.position] = value\n this.position++\n },\n pushUint16(value: number) {\n this.assertPosition(this.position + 1)\n this.dataView.setUint16(this.position, value)\n this.position += 2\n },\n pushUint24(value: number) {\n this.assertPosition(this.position + 2)\n this.dataView.setUint16(this.position, value >> 8)\n this.dataView.setUint8(this.position + 2, value & ~4294967040)\n this.position += 3\n },\n pushUint32(value: number) {\n this.assertPosition(this.position + 3)\n this.dataView.setUint32(this.position, value)\n this.position += 4\n },\n readByte() {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectByte()\n this.position++\n return value\n },\n readBytes(length, size) {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectBytes(length)\n this.position += size ?? length\n return value\n },\n readUint8() {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectUint8()\n this.position += 1\n return value\n },\n readUint16() {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectUint16()\n this.position += 2\n return value\n },\n readUint24() {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectUint24()\n this.position += 3\n return value\n },\n readUint32() {\n this.assertReadLimit()\n this._touch()\n const value = this.inspectUint32()\n this.position += 4\n return value\n },\n get remaining() {\n return this.bytes.length - this.position\n },\n setPosition(position) {\n const oldPosition = this.position\n this.assertPosition(position)\n this.position = position\n return () => (this.position = oldPosition)\n },\n _touch() {\n if (this.recursiveReadLimit === Number.POSITIVE_INFINITY) return\n const count = this.getReadCount()\n this.positionReadCount.set(this.position, count + 1)\n if (count > 0) this.recursiveReadCount++\n },\n}\n\ntype CursorConfig = { recursiveReadLimit?: number | undefined }\n\nexport type CreateCursorErrorType =\n | CursorErrorType\n | StaticCursorErrorType\n | ErrorType\n\nexport function createCursor(\n bytes: ByteArray,\n { recursiveReadLimit = 8_192 }: CursorConfig = {},\n): Cursor {\n const cursor: Cursor = Object.create(staticCursor)\n cursor.bytes = bytes\n cursor.dataView = new DataView(\n bytes.buffer,\n bytes.byteOffset,\n bytes.byteLength,\n )\n cursor.positionReadCount = new Map()\n cursor.recursiveReadLimit = recursiveReadLimit\n return cursor\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nexport type ConcatReturnType<value extends Hex | ByteArray> = value extends Hex\n ? Hex\n : ByteArray\n\nexport type ConcatErrorType =\n | ConcatBytesErrorType\n | ConcatHexErrorType\n | ErrorType\n\nexport function concat<value extends Hex | ByteArray>(\n values: readonly value[],\n): ConcatReturnType<value> {\n if (typeof values[0] === 'string')\n return concatHex(values as readonly Hex[]) as ConcatReturnType<value>\n return concatBytes(values as readonly ByteArray[]) as ConcatReturnType<value>\n}\n\nexport type ConcatBytesErrorType = ErrorType\n\nexport function concatBytes(values: readonly ByteArray[]): ByteArray {\n let length = 0\n for (const arr of values) {\n length += arr.length\n }\n const result = new Uint8Array(length)\n let offset = 0\n for (const arr of values) {\n result.set(arr, offset)\n offset += arr.length\n }\n return result\n}\n\nexport type ConcatHexErrorType = ErrorType\n\nexport function concatHex(values: readonly Hex[]): Hex {\n return `0x${(values as Hex[]).reduce(\n (acc, x) => acc + x.replace('0x', ''),\n '',\n )}`\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\n\nexport type IsHexErrorType = ErrorType\n\nexport function isHex(\n value: unknown,\n { strict = true }: { strict?: boolean | undefined } = {},\n): value is Hex {\n if (!value) return false\n if (typeof value !== 'string') return false\n return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x')\n}\n","import {\n SizeExceedsPaddingSizeError,\n type SizeExceedsPaddingSizeErrorType,\n} from '../../errors/data.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\ntype PadOptions = {\n dir?: 'left' | 'right' | undefined\n size?: number | null | undefined\n}\nexport type PadReturnType<value extends ByteArray | Hex> = value extends Hex\n ? Hex\n : ByteArray\n\nexport type PadErrorType = PadHexErrorType | PadBytesErrorType | ErrorType\n\nexport function pad<value extends ByteArray | Hex>(\n hexOrBytes: value,\n { dir, size = 32 }: PadOptions = {},\n): PadReturnType<value> {\n if (typeof hexOrBytes === 'string')\n return padHex(hexOrBytes, { dir, size }) as PadReturnType<value>\n return padBytes(hexOrBytes, { dir, size }) as PadReturnType<value>\n}\n\nexport type PadHexErrorType = SizeExceedsPaddingSizeErrorType | ErrorType\n\nexport function padHex(hex_: Hex, { dir, size = 32 }: PadOptions = {}) {\n if (size === null) return hex_\n const hex = hex_.replace('0x', '')\n if (hex.length > size * 2)\n throw new SizeExceedsPaddingSizeError({\n size: Math.ceil(hex.length / 2),\n targetSize: size,\n type: 'hex',\n })\n\n return `0x${hex[dir === 'right' ? 'padEnd' : 'padStart'](\n size * 2,\n '0',\n )}` as Hex\n}\n\nexport type PadBytesErrorType = SizeExceedsPaddingSizeErrorType | ErrorType\n\nexport function padBytes(\n bytes: ByteArray,\n { dir, size = 32 }: PadOptions = {},\n) {\n if (size === null) return bytes\n if (bytes.length > size)\n throw new SizeExceedsPaddingSizeError({\n size: bytes.length,\n targetSize: size,\n type: 'bytes',\n })\n const paddedBytes = new Uint8Array(size)\n for (let i = 0; i < size; i++) {\n const padEnd = dir === 'right'\n paddedBytes[padEnd ? i : size - i - 1] =\n bytes[padEnd ? i : bytes.length - i - 1]\n }\n return paddedBytes\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nimport { type IsHexErrorType, isHex } from './isHex.js'\n\nexport type SizeErrorType = IsHexErrorType | ErrorType\n\n/**\n * @description Retrieves the size of the value (in bytes).\n *\n * @param value The value (hex or byte array) to retrieve the size of.\n * @returns The size of the value (in bytes).\n */\nexport function size(value: Hex | ByteArray) {\n if (isHex(value, { strict: false })) return Math.ceil((value.length - 2) / 2)\n return value.length\n}\n","import {\n SliceOffsetOutOfBoundsError,\n type SliceOffsetOutOfBoundsErrorType,\n} from '../../errors/data.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\nimport { type IsHexErrorType, isHex } from './isHex.js'\nimport { type SizeErrorType, size } from './size.js'\n\nexport type SliceReturnType<value extends ByteArray | Hex> = value extends Hex\n ? Hex\n : ByteArray\n\nexport type SliceErrorType =\n | IsHexErrorType\n | SliceBytesErrorType\n | SliceHexErrorType\n | ErrorType\n\n/**\n * @description Returns a section of the hex or byte array given a start/end bytes offset.\n *\n * @param value The hex or byte array to slice.\n * @param start The start offset (in bytes).\n * @param end The end offset (in bytes).\n */\nexport function slice<value extends ByteArray | Hex>(\n value: value,\n start?: number | undefined,\n end?: number | undefined,\n { strict }: { strict?: boolean | undefined } = {},\n): SliceReturnType<value> {\n if (isHex(value, { strict: false }))\n return sliceHex(value as Hex, start, end, {\n strict,\n }) as SliceReturnType<value>\n return sliceBytes(value as ByteArray, start, end, {\n strict,\n }) as SliceReturnType<value>\n}\n\nexport type AssertStartOffsetErrorType =\n | SliceOffsetOutOfBoundsErrorType\n | SizeErrorType\n | ErrorType\n\nfunction assertStartOffset(value: Hex | ByteArray, start?: number | undefined) {\n if (typeof start === 'number' && start > 0 && start > size(value) - 1)\n throw new SliceOffsetOutOfBoundsError({\n offset: start,\n position: 'start',\n size: size(value),\n })\n}\n\nexport type AssertEndOffsetErrorType =\n | SliceOffsetOutOfBoundsErrorType\n | SizeErrorType\n | ErrorType\n\nfunction assertEndOffset(\n value: Hex | ByteArray,\n start?: number | undefined,\n end?: number | undefined,\n) {\n if (\n typeof start === 'number' &&\n typeof end === 'number' &&\n size(value) !== end - start\n ) {\n throw new SliceOffsetOutOfBoundsError({\n offset: end,\n position: 'end',\n size: size(value),\n })\n }\n}\n\nexport type SliceBytesErrorType =\n | AssertStartOffsetErrorType\n | AssertEndOffsetErrorType\n | ErrorType\n\n/**\n * @description Returns a section of the byte array given a start/end bytes offset.\n *\n * @param value The byte array to slice.\n * @param start The start offset (in bytes).\n * @param end The end offset (in bytes).\n */\nexport function sliceBytes(\n value_: ByteArray,\n start?: number | undefined,\n end?: number | undefined,\n { strict }: { strict?: boolean | undefined } = {},\n): ByteArray {\n assertStartOffset(value_, start)\n const value = value_.slice(start, end)\n if (strict) assertEndOffset(value, start, end)\n return value\n}\n\nexport type SliceHexErrorType =\n | AssertStartOffsetErrorType\n | AssertEndOffsetErrorType\n | ErrorType\n\n/**\n * @description Returns a section of the hex value given a start/end bytes offset.\n *\n * @param value The hex value to slice.\n * @param start The start offset (in bytes).\n * @param end The end offset (in bytes).\n */\nexport function sliceHex(\n value_: Hex,\n start?: number | undefined,\n end?: number | undefined,\n { strict }: { strict?: boolean | undefined } = {},\n): Hex {\n assertStartOffset(value_, start)\n const value = `0x${value_\n .replace('0x', '')\n .slice((start ?? 0) * 2, (end ?? value_.length) * 2)}` as const\n if (strict) assertEndOffset(value, start, end)\n return value\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\n\ntype TrimOptions = {\n dir?: 'left' | 'right' | undefined\n}\nexport type TrimReturnType<value extends ByteArray | Hex> = value extends Hex\n ? Hex\n : ByteArray\n\nexport type TrimErrorType = ErrorType\n\nexport function trim<value extends ByteArray | Hex>(\n hexOrBytes: value,\n { dir = 'left' }: TrimOptions = {},\n): TrimReturnType<value> {\n let data: any =\n typeof hexOrBytes === 'string' ? hexOrBytes.replace('0x', '') : hexOrBytes\n\n let sliceLength = 0\n for (let i = 0; i < data.length - 1; i++) {\n if (data[dir === 'left' ? i : data.length - i - 1].toString() === '0')\n sliceLength++\n else break\n }\n data =\n dir === 'left'\n ? data.slice(sliceLength)\n : data.slice(0, data.length - sliceLength)\n\n if (typeof hexOrBytes === 'string') {\n if (data.length === 1 && dir === 'right') data = `${data}0`\n return `0x${\n data.length % 2 === 1 ? `0${data}` : data\n }` as TrimReturnType<value>\n }\n return data as TrimReturnType<value>\n}\n","import {\n InvalidHexBooleanError,\n type InvalidHexBooleanErrorType,\n SizeOverflowError,\n type SizeOverflowErrorType,\n} from '../../errors/encoding.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type SizeErrorType, size as size_ } from '../data/size.js'\nimport { type TrimErrorType, trim } from '../data/trim.js'\n\nimport { type HexToBytesErrorType, hexToBytes } from './toBytes.js'\n\nexport type AssertSizeErrorType =\n | SizeOverflowErrorType\n | SizeErrorType\n | ErrorType\n\nexport function assertSize(\n hexOrBytes: Hex | ByteArray,\n { size }: { size: number },\n): void {\n if (size_(hexOrBytes) > size)\n throw new SizeOverflowError({\n givenSize: size_(hexOrBytes),\n maxSize: size,\n })\n}\n\nexport type FromHexParameters<\n to extends 'string' | 'bigint' | 'number' | 'bytes' | 'boolean',\n> =\n | to\n | {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n /** Type to convert to. */\n to: to\n }\n\nexport type FromHexReturnType<to> = to extends 'string'\n ? string\n : to extends 'bigint'\n ? bigint\n : to extends 'number'\n ? number\n : to extends 'bytes'\n ? ByteArray\n : to extends 'boolean'\n ? boolean\n : never\n\nexport type FromHexErrorType =\n | HexToNumberErrorType\n | HexToBigIntErrorType\n | HexToBoolErrorType\n | HexToStringErrorType\n | HexToBytesErrorType\n | ErrorType\n\n/**\n * Decodes a hex string into a string, number, bigint, boolean, or byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex\n * - Example: https://viem.sh/docs/utilities/fromHex#usage\n *\n * @param hex Hex string to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x1a4', 'number')\n * // 420\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c6421', 'string')\n * // 'Hello world'\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * to: 'string'\n * })\n * // 'Hello world'\n */\nexport function fromHex<\n to extends 'string' | 'bigint' | 'number' | 'bytes' | 'boolean',\n>(hex: Hex, toOrOpts: FromHexParameters<to>): FromHexReturnType<to> {\n const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts\n const to = opts.to\n\n if (to === 'number') return hexToNumber(hex, opts) as FromHexReturnType<to>\n if (to === 'bigint') return hexToBigInt(hex, opts) as FromHexReturnType<to>\n if (to === 'string') return hexToString(hex, opts) as FromHexReturnType<to>\n if (to === 'boolean') return hexToBool(hex, opts) as FromHexReturnType<to>\n return hexToBytes(hex, opts) as FromHexReturnType<to>\n}\n\nexport type HexToBigIntOpts = {\n /** Whether or not the number of a signed representation. */\n signed?: boolean | undefined\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToBigIntErrorType = AssertSizeErrorType | ErrorType\n\n/**\n * Decodes a hex value into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobigint\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x1a4', { signed: true })\n * // 420n\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420n\n */\nexport function hexToBigInt(hex: Hex, opts: HexToBigIntOpts = {}): bigint {\n const { signed } = opts\n\n if (opts.size) assertSize(hex, { size: opts.size })\n\n const value = BigInt(hex)\n if (!signed) return value\n\n const size = (hex.length - 2) / 2\n const max = (1n << (BigInt(size) * 8n - 1n)) - 1n\n if (value <= max) return value\n\n return value - BigInt(`0x${'f'.padStart(size * 2, 'f')}`) - 1n\n}\n\nexport type HexToBoolOpts = {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToBoolErrorType =\n | AssertSizeErrorType\n | InvalidHexBooleanErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a hex value into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobool\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x01')\n * // true\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x0000000000000000000000000000000000000000000000000000000000000001', { size: 32 })\n * // true\n */\nexport function hexToBool(hex_: Hex, opts: HexToBoolOpts = {}): boolean {\n let hex = hex_\n if (opts.size) {\n assertSize(hex, { size: opts.size })\n hex = trim(hex)\n }\n if (trim(hex) === '0x00') return false\n if (trim(hex) === '0x01') return true\n throw new InvalidHexBooleanError(hex)\n}\n\nexport type HexToNumberOpts = HexToBigIntOpts\n\nexport type HexToNumberErrorType = HexToBigIntErrorType | ErrorType\n\n/**\n * Decodes a hex string into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextonumber\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToNumber('0x1a4')\n * // 420\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420\n */\nexport function hexToNumber(hex: Hex, opts: HexToNumberOpts = {}): number {\n return Number(hexToBigInt(hex, opts))\n}\n\nexport type HexToStringOpts = {\n /** Size (in bytes) of the hex value. */\n size?: number | undefined\n}\n\nexport type HexToStringErrorType =\n | AssertSizeErrorType\n | HexToBytesErrorType\n | TrimErrorType\n | ErrorType\n\n/**\n * Decodes a hex value into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextostring\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c6421')\n * // 'Hello world!'\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * })\n * // 'Hello world'\n */\nexport function hexToString(hex: Hex, opts: HexToStringOpts = {}): string {\n let bytes = hexToBytes(hex)\n if (opts.size) {\n assertSize(bytes, { size: opts.size })\n bytes = trim(bytes, { dir: 'right' })\n }\n return new TextDecoder().decode(bytes)\n}\n","import { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\nimport { type PadErrorType, pad } from '../data/pad.js'\n\nimport { type AssertSizeErrorType, assertSize } from './fromHex.js'\nimport {\n type NumberToHexErrorType,\n type NumberToHexOpts,\n numberToHex,\n} from './toHex.js'\n\nconst encoder = /*#__PURE__*/ new TextEncoder()\n\nexport type ToBytesParameters = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type ToBytesErrorType =\n | NumberToBytesErrorType\n | BoolToBytesErrorType\n | HexToBytesErrorType\n | StringToBytesErrorType\n | IsHexErrorType\n | ErrorType\n\n/**\n * Encodes a UTF-8 string, hex value, bigint, number or boolean to a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes\n * - Example: https://viem.sh/docs/utilities/toBytes#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes('Hello world')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function toBytes(\n value: string | bigint | number | boolean | Hex,\n opts: ToBytesParameters = {},\n): ByteArray {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToBytes(value, opts)\n if (typeof value === 'boolean') return boolToBytes(value, opts)\n if (isHex(value)) return hexToBytes(value, opts)\n return stringToBytes(value, opts)\n}\n\nexport type BoolToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type BoolToBytesErrorType =\n | AssertSizeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a boolean into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#booltobytes\n *\n * @param value Boolean value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true)\n * // Uint8Array([1])\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true, { size: 32 })\n * // Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])\n */\nexport function boolToBytes(value: boolean, opts: BoolToBytesOpts = {}) {\n const bytes = new Uint8Array(1)\n bytes[0] = Number(value)\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size })\n return pad(bytes, { size: opts.size })\n }\n return bytes\n}\n\n// We use very optimized technique to convert hex string to byte array\nconst charCodeMap = {\n zero: 48,\n nine: 57,\n A: 65,\n F: 70,\n a: 97,\n f: 102,\n} as const\n\nfunction charCodeToBase16(char: number) {\n if (char >= charCodeMap.zero && char <= charCodeMap.nine)\n return char - charCodeMap.zero\n if (char >= charCodeMap.A && char <= charCodeMap.F)\n return char - (charCodeMap.A - 10)\n if (char >= charCodeMap.a && char <= charCodeMap.f)\n return char - (charCodeMap.a - 10)\n return undefined\n}\n\nexport type HexToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type HexToBytesErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a hex string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#hextobytes\n *\n * @param hex Hex string to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function hexToBytes(hex_: Hex, opts: HexToBytesOpts = {}): ByteArray {\n let hex = hex_\n if (opts.size) {\n assertSize(hex, { size: opts.size })\n hex = pad(hex, { dir: 'right', size: opts.size })\n }\n\n let hexString = hex.slice(2) as string\n if (hexString.length % 2) hexString = `0${hexString}`\n\n const length = hexString.length / 2\n const bytes = new Uint8Array(length)\n for (let index = 0, j = 0; index < length; index++) {\n const nibbleLeft = charCodeToBase16(hexString.charCodeAt(j++))\n const nibbleRight = charCodeToBase16(hexString.charCodeAt(j++))\n if (nibbleLeft === undefined || nibbleRight === undefined) {\n throw new BaseError(\n `Invalid byte sequence (\"${hexString[j - 2]}${\n hexString[j - 1]\n }\" in \"${hexString}\").`,\n )\n }\n bytes[index] = nibbleLeft * 16 + nibbleRight\n }\n return bytes\n}\n\nexport type NumberToBytesErrorType =\n | NumberToHexErrorType\n | HexToBytesErrorType\n | ErrorType\n\n/**\n * Encodes a number into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#numbertobytes\n *\n * @param value Number to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function numberToBytes(\n value: bigint | number,\n opts?: NumberToHexOpts | undefined,\n) {\n const hex = numberToHex(value, opts)\n return hexToBytes(hex)\n}\n\nexport type StringToBytesOpts = {\n /** Size of the output bytes. */\n size?: number | undefined\n}\n\nexport type StringToBytesErrorType =\n | AssertSizeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a UTF-8 string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#stringtobytes\n *\n * @param value String to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33])\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function stringToBytes(\n value: string,\n opts: StringToBytesOpts = {},\n): ByteArray {\n const bytes = encoder.encode(value)\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size })\n return pad(bytes, { dir: 'right', size: opts.size })\n }\n return bytes\n}\n","import {\n IntegerOutOfRangeError,\n type IntegerOutOfRangeErrorType,\n} from '../../errors/encoding.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type PadErrorType, pad } from '../data/pad.js'\n\nimport { type AssertSizeErrorType, assertSize } from './fromHex.js'\n\nconst hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) =>\n i.toString(16).padStart(2, '0'),\n)\n\nexport type ToHexParameters = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type ToHexErrorType =\n | BoolToHexErrorType\n | BytesToHexErrorType\n | NumberToHexErrorType\n | StringToHexErrorType\n | ErrorType\n\n/**\n * Encodes a string, number, bigint, or ByteArray into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex\n * - Example: https://viem.sh/docs/utilities/toHex#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world')\n * // '0x48656c6c6f20776f726c6421'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex(420)\n * // '0x1a4'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world', { size: 32 })\n * // '0x48656c6c6f20776f726c64210000000000000000000000000000000000000000'\n */\nexport function toHex(\n value: string | number | bigint | boolean | ByteArray,\n opts: ToHexParameters = {},\n): Hex {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToHex(value, opts)\n if (typeof value === 'string') {\n return stringToHex(value, opts)\n }\n if (typeof value === 'boolean') return boolToHex(value, opts)\n return bytesToHex(value, opts)\n}\n\nexport type BoolToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type BoolToHexErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a boolean into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#booltohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true)\n * // '0x1'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(false)\n * // '0x0'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true, { size: 32 })\n * // '0x0000000000000000000000000000000000000000000000000000000000000001'\n */\nexport function boolToHex(value: boolean, opts: BoolToHexOpts = {}): Hex {\n const hex: Hex = `0x${Number(value)}`\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size })\n return pad(hex, { size: opts.size })\n }\n return hex\n}\n\nexport type BytesToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type BytesToHexErrorType = AssertSizeErrorType | PadErrorType | ErrorType\n\n/**\n * Encodes a bytes array into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#bytestohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]), { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function bytesToHex(value: ByteArray, opts: BytesToHexOpts = {}): Hex {\n let string = ''\n for (let i = 0; i < value.length; i++) {\n string += hexes[value[i]]\n }\n const hex = `0x${string}` as const\n\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size })\n return pad(hex, { dir: 'right', size: opts.size })\n }\n return hex\n}\n\nexport type NumberToHexOpts =\n | {\n /** Whether or not the number of a signed representation. */\n signed?: boolean | undefined\n /** The size (in bytes) of the output hex value. */\n size: number\n }\n | {\n signed?: undefined\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n }\n\nexport type NumberToHexErrorType =\n | IntegerOutOfRangeErrorType\n | PadErrorType\n | ErrorType\n\n/**\n * Encodes a number or bigint into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#numbertohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420)\n * // '0x1a4'\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420, { size: 32 })\n * // '0x00000000000000000000000000000000000000000000000000000000000001a4'\n */\nexport function numberToHex(\n value_: number | bigint,\n opts: NumberToHexOpts = {},\n): Hex {\n const { signed, size } = opts\n\n const value = BigInt(value_)\n\n let maxValue: bigint | number | undefined\n if (size) {\n if (signed) maxValue = (1n << (BigInt(size) * 8n - 1n)) - 1n\n else maxValue = 2n ** (BigInt(size) * 8n) - 1n\n } else if (typeof value_ === 'number') {\n maxValue = BigInt(Number.MAX_SAFE_INTEGER)\n }\n\n const minValue = typeof maxValue === 'bigint' && signed ? -maxValue - 1n : 0\n\n if ((maxValue && value > maxValue) || value < minValue) {\n const suffix = typeof value_ === 'bigint' ? 'n' : ''\n throw new IntegerOutOfRangeError({\n max: maxValue ? `${maxValue}${suffix}` : undefined,\n min: `${minValue}${suffix}`,\n signed,\n size,\n value: `${value_}${suffix}`,\n })\n }\n\n const hex = `0x${(\n signed && value < 0 ? (1n << BigInt(size * 8)) + BigInt(value) : value\n ).toString(16)}` as Hex\n if (size) return pad(hex, { size }) as Hex\n return hex\n}\n\nexport type StringToHexOpts = {\n /** The size (in bytes) of the output hex value. */\n size?: number | undefined\n}\n\nexport type StringToHexErrorType = BytesToHexErrorType | ErrorType\n\nconst encoder = /*#__PURE__*/ new TextEncoder()\n\n/**\n * Encodes a UTF-8 string into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#stringtohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!')\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!', { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function stringToHex(value_: string, opts: StringToHexOpts = {}): Hex {\n const value = encoder.encode(value_)\n return bytesToHex(value, opts)\n}\n","import { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport {\n type CreateCursorErrorType,\n type Cursor,\n createCursor,\n} from '../cursor.js'\n\nimport { type HexToBytesErrorType, hexToBytes } from './toBytes.js'\nimport { type BytesToHexErrorType, bytesToHex } from './toHex.js'\n\nexport type RecursiveArray<T> = T | readonly RecursiveArray<T>[]\n\ntype To = 'hex' | 'bytes'\n\ntype Encodable = {\n length: number\n encode(cursor: Cursor): void\n}\n\nexport type ToRlpReturnType<to extends To> =\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type ToRlpErrorType =\n | CreateCursorErrorType\n | BytesToHexErrorType\n | HexToBytesErrorType\n | ErrorType\n\nexport function toRlp<to extends To = 'hex'>(\n bytes: RecursiveArray<ByteArray> | RecursiveArray<Hex>,\n to: to | To | undefined = 'hex',\n): ToRlpReturnType<to> {\n const encodable = getEncodable(bytes)\n const cursor = createCursor(new Uint8Array(encodable.length))\n encodable.encode(cursor)\n\n if (to === 'hex') return bytesToHex(cursor.bytes) as ToRlpReturnType<to>\n return cursor.bytes as ToRlpReturnType<to>\n}\n\nexport type BytesToRlpErrorType = ToRlpErrorType | ErrorType\n\nexport function bytesToRlp<to extends To = 'bytes'>(\n bytes: RecursiveArray<ByteArray>,\n to: to | To | undefined = 'bytes',\n): ToRlpReturnType<to> {\n return toRlp(bytes, to)\n}\n\nexport type HexToRlpErrorType = ToRlpErrorType | ErrorType\n\nexport function hexToRlp<to extends To = 'hex'>(\n hex: RecursiveArray<Hex>,\n to: to | To | undefined = 'hex',\n): ToRlpReturnType<to> {\n return toRlp(hex, to)\n}\n\nfunction getEncodable(\n bytes: RecursiveArray<ByteArray> | RecursiveArray<Hex>,\n): Encodable {\n if (Array.isArray(bytes))\n return getEncodableList(bytes.map((x) => getEncodable(x)))\n return getEncodableBytes(bytes as any)\n}\n\nfunction getEncodableList(list: Encodable[]): Encodable {\n const bodyLength = list.reduce((acc, x) => acc + x.length, 0)\n\n const sizeOfBodyLength = getSizeOfLength(bodyLength)\n const length = (() => {\n if (bodyLength <= 55) return 1 + bodyLength\n return 1 + sizeOfBodyLength + bodyLength\n })()\n\n return {\n length,\n encode(cursor: Cursor) {\n if (bodyLength <= 55) {\n cursor.pushByte(0xc0 + bodyLength)\n } else {\n cursor.pushByte(0xc0 + 55 + sizeOfBodyLength)\n if (sizeOfBodyLength === 1) cursor.pushUint8(bodyLength)\n else if (sizeOfBodyLength === 2) cursor.pushUint16(bodyLength)\n else if (sizeOfBodyLength === 3) cursor.pushUint24(bodyLength)\n else cursor.pushUint32(bodyLength)\n }\n for (const { encode } of list) {\n encode(cursor)\n }\n },\n }\n}\n\nfunction getEncodableBytes(bytesOrHex: ByteArray | Hex): Encodable {\n const bytes =\n typeof bytesOrHex === 'string' ? hexToBytes(bytesOrHex) : bytesOrHex\n\n const sizeOfBytesLength = getSizeOfLength(bytes.length)\n const length = (() => {\n if (bytes.length === 1 && bytes[0] < 0x80) return 1\n if (bytes.length <= 55) return 1 + bytes.length\n return 1 + sizeOfBytesLength + bytes.length\n })()\n\n return {\n length,\n encode(cursor: Cursor) {\n if (bytes.length === 1 && bytes[0] < 0x80) {\n cursor.pushBytes(bytes)\n } else if (bytes.length <= 55) {\n cursor.pushByte(0x80 + bytes.length)\n cursor.pushBytes(bytes)\n } else {\n cursor.pushByte(0x80 + 55 + sizeOfBytesLength)\n if (sizeOfBytesLength === 1) cursor.pushUint8(bytes.length)\n else if (sizeOfBytesLength === 2) cursor.pushUint16(bytes.length)\n else if (sizeOfBytesLength === 3) cursor.pushUint24(bytes.length)\n else cursor.pushUint32(bytes.length)\n cursor.pushBytes(bytes)\n }\n },\n }\n}\n\nfunction getSizeOfLength(length: number) {\n if (length < 2 ** 8) return 1\n if (length < 2 ** 16) return 2\n if (length < 2 ** 24) return 3\n if (length < 2 ** 32) return 4\n throw new BaseError('Length is too large.')\n}\n","import type { Abi, Address } from 'abitype'\n\nimport { AbiDecodingZeroDataError } from '../../errors/abi.js'\nimport { BaseError } from '../../errors/base.js'\nimport {\n ContractFunctionExecutionError,\n type ContractFunctionExecutionErrorType,\n ContractFunctionRevertedError,\n type ContractFunctionRevertedErrorType,\n ContractFunctionZeroDataError,\n type ContractFunctionZeroDataErrorType,\n RawContractError,\n} from '../../errors/contract.js'\nimport { InternalRpcError } from '../../errors/rpc.js'\nimport type { ErrorType } from '../../errors/utils.js'\n\nconst EXECUTION_REVERTED_ERROR_CODE = 3\n\nexport type GetContractErrorReturnType<cause = ErrorType> = Omit<\n ContractFunctionExecutionErrorType,\n 'cause'\n> & {\n cause:\n | cause\n | ContractFunctionZeroDataErrorType\n | ContractFunctionRevertedErrorType\n}\n\nexport function getContractError<err extends ErrorType<string>>(\n err: err,\n {\n abi,\n address,\n args,\n docsPath,\n functionName,\n sender,\n }: {\n abi: Abi\n args: any\n address?: Address | undefined\n docsPath?: string | undefined\n functionName: string\n sender?: Address | undefined\n },\n): GetContractErrorReturnType {\n const { code, data, message, shortMessage } = (\n err instanceof RawContractError\n ? err\n : err instanceof BaseError\n ? err.walk((err) => 'data' in (err as Error)) || err.walk()\n : {}\n ) as RawContractError\n\n const cause = (() => {\n if (err instanceof AbiDecodingZeroDataError)\n return new ContractFunctionZeroDataError({ functionName })\n if (\n [EXECUTION_REVERTED_ERROR_CODE, InternalRpcError.code].includes(code) &&\n (data || message || shortMessage)\n ) {\n return new ContractFunctionRevertedError({\n abi,\n data: typeof data === 'object' ? data.data : data,\n functionName,\n message: shortMessage ?? message,\n })\n }\n return err\n })()\n\n return new ContractFunctionExecutionError(cause as BaseError, {\n abi,\n args,\n contractAddress: address,\n docsPath,\n functionName,\n sender,\n }) as GetContractErrorReturnType\n}\n","import type { SendTransactionParameters } from '../../actions/wallet/sendTransaction.js'\nimport { BaseError } from '../../errors/base.js'\nimport {\n ExecutionRevertedError,\n type ExecutionRevertedErrorType,\n FeeCapTooHighError,\n type FeeCapTooHighErrorType,\n FeeCapTooLowError,\n type FeeCapTooLowErrorType,\n InsufficientFundsError,\n type InsufficientFundsErrorType,\n IntrinsicGasTooHighError,\n type IntrinsicGasTooHighErrorType,\n IntrinsicGasTooLowError,\n type IntrinsicGasTooLowErrorType,\n NonceMaxValueError,\n type NonceMaxValueErrorType,\n NonceTooHighError,\n type NonceTooHighErrorType,\n NonceTooLowError,\n type NonceTooLowErrorType,\n TipAboveFeeCapError,\n type TipAboveFeeCapErrorType,\n TransactionTypeNotSupportedError,\n type TransactionTypeNotSupportedErrorType,\n UnknownNodeError,\n type UnknownNodeErrorType,\n} from '../../errors/node.js'\nimport { RpcRequestError } from '../../errors/request.js'\nimport {\n InvalidInputRpcError,\n TransactionRejectedRpcError,\n} from '../../errors/rpc.js'\nimport type { ExactPartial } from '../../types/utils.js'\n\nexport function containsNodeError(err: BaseError) {\n return (\n err instanceof TransactionRejectedRpcError ||\n err instanceof InvalidInputRpcError ||\n (err instanceof RpcRequestError && err.code === ExecutionRevertedError.code)\n )\n}\n\nexport type GetNodeErrorParameters = ExactPartial<\n SendTransactionParameters<any>\n>\n\nexport type GetNodeErrorReturnType =\n | ExecutionRevertedErrorType\n | FeeCapTooHighErrorType\n | FeeCapTooLowErrorType\n | NonceTooHighErrorType\n | NonceTooLowErrorType\n | NonceMaxValueErrorType\n | InsufficientFundsErrorType\n | IntrinsicGasTooHighErrorType\n | IntrinsicGasTooLowErrorType\n | TransactionTypeNotSupportedErrorType\n | TipAboveFeeCapErrorType\n | UnknownNodeErrorType\n\nexport function getNodeError(\n err: BaseError,\n args: GetNodeErrorParameters,\n): GetNodeErrorReturnType {\n const message = (err.details || '').toLowerCase()\n\n const executionRevertedError =\n err instanceof BaseError\n ? err.walk(\n (e) =>\n (e as { code: number } | null | undefined)?.code ===\n ExecutionRevertedError.code,\n )\n : err\n if (executionRevertedError instanceof BaseError)\n return new ExecutionRevertedError({\n cause: err,\n message: executionRevertedError.details,\n }) as any\n if (ExecutionRevertedError.nodeMessage.test(message))\n return new ExecutionRevertedError({\n cause: err,\n message: err.details,\n }) as any\n if (FeeCapTooHighError.nodeMessage.test(message))\n return new FeeCapTooHighError({\n cause: err,\n maxFeePerGas: args?.maxFeePerGas,\n }) as any\n if (FeeCapTooLowError.nodeMessage.test(message))\n return new FeeCapTooLowError({\n cause: err,\n maxFeePerGas: args?.maxFeePerGas,\n }) as any\n if (NonceTooHighError.nodeMessage.test(message))\n return new NonceTooHighError({ cause: err, nonce: args?.nonce }) as any\n if (NonceTooLowError.nodeMessage.test(message))\n return new NonceTooLowError({ cause: err, nonce: args?.nonce }) as any\n if (NonceMaxValueError.nodeMessage.test(message))\n return new NonceMaxValueError({ cause: err, nonce: args?.nonce }) as any\n if (InsufficientFundsError.nodeMessage.test(message))\n return new InsufficientFundsError({ cause: err }) as any\n if (IntrinsicGasTooHighError.nodeMessage.test(message))\n return new IntrinsicGasTooHighError({ cause: err, gas: args?.gas }) as any\n if (IntrinsicGasTooLowError.nodeMessage.test(message))\n return new IntrinsicGasTooLowError({ cause: err, gas: args?.gas }) as any\n if (TransactionTypeNotSupportedError.nodeMessage.test(message))\n return new TransactionTypeNotSupportedError({ cause: err }) as any\n if (TipAboveFeeCapError.nodeMessage.test(message))\n return new TipAboveFeeCapError({\n cause: err,\n maxFeePerGas: args?.maxFeePerGas,\n maxPriorityFeePerGas: args?.maxPriorityFeePerGas,\n }) as any\n return new UnknownNodeError({\n cause: err,\n }) as any\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Block, BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type {\n ExtractChainFormatterExclude,\n ExtractChainFormatterReturnType,\n} from '../../types/chain.js'\nimport type { Hash } from '../../types/misc.js'\nimport type { RpcBlock } from '../../types/rpc.js'\nimport type { ExactPartial, Prettify } from '../../types/utils.js'\n\nimport { type DefineFormatterErrorType, defineFormatter } from './formatter.js'\nimport { type FormattedTransaction, formatTransaction } from './transaction.js'\n\ntype BlockPendingDependencies = 'hash' | 'logsBloom' | 'nonce' | 'number'\n\nexport type FormattedBlock<\n chain extends Chain | undefined = undefined,\n includeTransactions extends boolean = boolean,\n blockTag extends BlockTag = BlockTag,\n _FormatterReturnType = ExtractChainFormatterReturnType<\n chain,\n 'block',\n Block<bigint, includeTransactions>\n >,\n _ExcludedPendingDependencies extends string = BlockPendingDependencies &\n ExtractChainFormatterExclude<chain, 'block'>,\n _Formatted = Omit<_FormatterReturnType, BlockPendingDependencies> & {\n [_key in _ExcludedPendingDependencies]: never\n } & Pick<\n Block<bigint, includeTransactions, blockTag>,\n BlockPendingDependencies\n >,\n _Transactions = includeTransactions extends true\n ? Prettify<FormattedTransaction<chain, blockTag>>[]\n : Hash[],\n> = Omit<_Formatted, 'transactions'> & {\n transactions: _Transactions\n}\n\nexport type FormatBlockErrorType = ErrorType\n\nexport function formatBlock(block: ExactPartial<RpcBlock>) {\n const transactions = block.transactions?.map((transaction) => {\n if (typeof transaction === 'string') return transaction\n return formatTransaction(transaction)\n })\n return {\n ...block,\n baseFeePerGas: block.baseFeePerGas ? BigInt(block.baseFeePerGas) : null,\n blobGasUsed: block.blobGasUsed ? BigInt(block.blobGasUsed) : undefined,\n difficulty: block.difficulty ? BigInt(block.difficulty) : undefined,\n excessBlobGas: block.excessBlobGas\n ? BigInt(block.excessBlobGas)\n : undefined,\n gasLimit: block.gasLimit ? BigInt(block.gasLimit) : undefined,\n gasUsed: block.gasUsed ? BigInt(block.gasUsed) : undefined,\n hash: block.hash ? block.hash : null,\n logsBloom: block.logsBloom ? block.logsBloom : null,\n nonce: block.nonce ? block.nonce : null,\n number: block.number ? BigInt(block.number) : null,\n size: block.size ? BigInt(block.size) : undefined,\n timestamp: block.timestamp ? BigInt(block.timestamp) : undefined,\n transactions,\n totalDifficulty: block.totalDifficulty\n ? BigInt(block.totalDifficulty)\n : null,\n } as Block\n}\n\nexport type DefineBlockErrorType = DefineFormatterErrorType | ErrorType\n\nexport const defineBlock = /*#__PURE__*/ defineFormatter('block', formatBlock)\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ChainFormatter } from '../../types/chain.js'\n\nexport type ExtractErrorType = ErrorType\n\n/**\n * @description Picks out the keys from `value` that exist in the formatter..\n */\nexport function extract(\n value_: Record<string, unknown>,\n { format }: { format?: ChainFormatter['format'] | undefined },\n) {\n if (!format) return {}\n\n const value: Record<string, unknown> = {}\n function extract_(formatted: Record<string, any>) {\n const keys = Object.keys(formatted)\n for (const key of keys) {\n if (key in value_) value[key] = value_[key]\n if (\n formatted[key] &&\n typeof formatted[key] === 'object' &&\n !Array.isArray(formatted[key])\n )\n extract_(formatted[key])\n }\n }\n\n const formatted = format(value_ || {})\n extract_(formatted)\n\n return value\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Prettify } from '../../types/utils.js'\n\nexport type DefineFormatterErrorType = ErrorType\n\nexport function defineFormatter<type extends string, parameters, returnType>(\n type: type,\n format: (_: parameters) => returnType,\n) {\n return <\n parametersOverride,\n returnTypeOverride,\n exclude extends (keyof parameters | keyof parametersOverride)[] = [],\n >({\n exclude,\n format: overrides,\n }: {\n exclude?: exclude | undefined\n format: (_: parametersOverride) => returnTypeOverride\n }) => {\n return {\n exclude,\n format: (args: parametersOverride) => {\n const formatted = format(args as any)\n if (exclude) {\n for (const key of exclude) {\n delete (formatted as any)[key]\n }\n }\n return {\n ...formatted,\n ...overrides(args),\n } as Prettify<returnTypeOverride> & {\n [_key in exclude[number]]: never\n }\n },\n type,\n }\n }\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { Log } from '../../types/log.js'\nimport type { RpcLog } from '../../types/rpc.js'\nimport type { ExactPartial } from '../../types/utils.js'\n\nexport type FormatLogErrorType = ErrorType\n\nexport function formatLog(\n log: ExactPartial<RpcLog>,\n {\n args,\n eventName,\n }: { args?: unknown | undefined; eventName?: string | undefined } = {},\n) {\n return {\n ...log,\n blockHash: log.blockHash ? log.blockHash : null,\n blockNumber: log.blockNumber ? BigInt(log.blockNumber) : null,\n logIndex: log.logIndex ? Number(log.logIndex) : null,\n transactionHash: log.transactionHash ? log.transactionHash : null,\n transactionIndex: log.transactionIndex\n ? Number(log.transactionIndex)\n : null,\n ...(eventName ? { args, eventName } : {}),\n } as Log\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { SignedAuthorizationList } from '../../experimental/eip7702/types/authorization.js'\nimport type { RpcAuthorizationList } from '../../experimental/eip7702/types/rpc.js'\nimport type { BlockTag } from '../../types/block.js'\nimport type { Chain } from '../../types/chain.js'\nimport type {\n ExtractChainFormatterExclude,\n ExtractChainFormatterReturnType,\n} from '../../types/chain.js'\nimport type { Hex } from '../../types/misc.js'\nimport type { RpcTransaction } from '../../types/rpc.js'\nimport type { Transaction, TransactionType } from '../../types/transaction.js'\nimport type { ExactPartial, UnionLooseOmit } from '../../types/utils.js'\nimport { hexToNumber } from '../encoding/fromHex.js'\nimport { type DefineFormatterErrorType, defineFormatter } from './formatter.js'\n\ntype TransactionPendingDependencies =\n | 'blockHash'\n | 'blockNumber'\n | 'transactionIndex'\n\nexport type FormattedTransaction<\n chain extends Chain | undefined = undefined,\n blockTag extends BlockTag = BlockTag,\n _FormatterReturnType = ExtractChainFormatterReturnType<\n chain,\n 'transaction',\n Transaction\n >,\n _ExcludedPendingDependencies extends string = TransactionPendingDependencies &\n ExtractChainFormatterExclude<chain, 'transaction'>,\n> = UnionLooseOmit<_FormatterReturnType, TransactionPendingDependencies> & {\n [_K in _ExcludedPendingDependencies]: never\n} & Pick<\n Transaction<bigint, number, blockTag extends 'pending' ? true : false>,\n TransactionPendingDependencies\n >\n\nexport const transactionType = {\n '0x0': 'legacy',\n '0x1': 'eip2930',\n '0x2': 'eip1559',\n '0x3': 'eip4844',\n '0x4': 'eip7702',\n} as const satisfies Record<Hex, TransactionType>\n\nexport type FormatTransactionErrorType = ErrorType\n\nexport function formatTransaction(transaction: ExactPartial<RpcTransaction>) {\n const transaction_ = {\n ...transaction,\n blockHash: transaction.blockHash ? transaction.blockHash : null,\n blockNumber: transaction.blockNumber\n ? BigInt(transaction.blockNumber)\n : null,\n chainId: transaction.chainId ? hexToNumber(transaction.chainId) : undefined,\n gas: transaction.gas ? BigInt(transaction.gas) : undefined,\n gasPrice: transaction.gasPrice ? BigInt(transaction.gasPrice) : undefined,\n maxFeePerBlobGas: transaction.maxFeePerBlobGas\n ? BigInt(transaction.maxFeePerBlobGas)\n : undefined,\n maxFeePerGas: transaction.maxFeePerGas\n ? BigInt(transaction.maxFeePerGas)\n : undefined,\n maxPriorityFeePerGas: transaction.maxPriorityFeePerGas\n ? BigInt(transaction.maxPriorityFeePerGas)\n : undefined,\n nonce: transaction.nonce ? hexToNumber(transaction.nonce) : undefined,\n to: transaction.to ? transaction.to : null,\n transactionIndex: transaction.transactionIndex\n ? Number(transaction.transactionIndex)\n : null,\n type: transaction.type\n ? (transactionType as any)[transaction.type]\n : undefined,\n typeHex: transaction.type ? transaction.type : undefined,\n value: transaction.value ? BigInt(transaction.value) : undefined,\n v: transaction.v ? BigInt(transaction.v) : undefined,\n } as Transaction\n\n if (transaction.authorizationList)\n transaction_.authorizationList = formatAuthorizationList(\n transaction.authorizationList,\n )\n\n transaction_.yParity = (() => {\n // If `yParity` is provided, we will use it.\n if (transaction.yParity) return Number(transaction.yParity)\n\n // If no `yParity` provided, try derive from `v`.\n if (typeof transaction_.v === 'bigint') {\n if (transaction_.v === 0n || transaction_.v === 27n) return 0\n if (transaction_.v === 1n || transaction_.v === 28n) return 1\n if (transaction_.v >= 35n) return transaction_.v % 2n === 0n ? 1 : 0\n }\n\n return undefined\n })()\n\n if (transaction_.type === 'legacy') {\n delete transaction_.accessList\n delete transaction_.maxFeePerBlobGas\n delete transaction_.maxFeePerGas\n delete transaction_.maxPriorityFeePerGas\n delete transaction_.yParity\n }\n if (transaction_.type === 'eip2930') {\n delete transaction_.maxFeePerBlobGas\n delete transaction_.maxFeePerGas\n delete transaction_.maxPriorityFeePerGas\n }\n if (transaction_.type === 'eip1559') {\n delete transaction_.maxFeePerBlobGas\n }\n return transaction_\n}\n\nexport type DefineTransactionErrorType = DefineFormatterErrorType | ErrorType\n\nexport const defineTransaction = /*#__PURE__*/ defineFormatter(\n 'transaction',\n formatTransaction,\n)\n\n//////////////////////////////////////////////////////////////////////////////\n\nfunction formatAuthorizationList(\n authorizationList: RpcAuthorizationList,\n): SignedAuthorizationList {\n return authorizationList.map((authorization) => ({\n contractAddress: (authorization as any).address,\n chainId: Number(authorization.chainId),\n nonce: Number(authorization.nonce),\n r: authorization.r,\n s: authorization.s,\n yParity: Number(authorization.yParity),\n })) as SignedAuthorizationList\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type {\n Chain,\n ExtractChainFormatterReturnType,\n} from '../../types/chain.js'\nimport type { RpcTransactionReceipt } from '../../types/rpc.js'\nimport type { TransactionReceipt } from '../../types/transaction.js'\nimport type { ExactPartial } from '../../types/utils.js'\nimport { hexToNumber } from '../encoding/fromHex.js'\n\nimport { type DefineFormatterErrorType, defineFormatter } from './formatter.js'\nimport { formatLog } from './log.js'\nimport { transactionType } from './transaction.js'\n\nexport type FormattedTransactionReceipt<\n chain extends Chain | undefined = undefined,\n> = ExtractChainFormatterReturnType<\n chain,\n 'transactionReceipt',\n TransactionReceipt\n>\n\nexport const receiptStatuses = {\n '0x0': 'reverted',\n '0x1': 'success',\n} as const\n\nexport type FormatTransactionReceiptErrorType = ErrorType\n\nexport function formatTransactionReceipt(\n transactionReceipt: ExactPartial<RpcTransactionReceipt>,\n) {\n const receipt = {\n ...transactionReceipt,\n blockNumber: transactionReceipt.blockNumber\n ? BigInt(transactionReceipt.blockNumber)\n : null,\n contractAddress: transactionReceipt.contractAddress\n ? transactionReceipt.contractAddress\n : null,\n cumulativeGasUsed: transactionReceipt.cumulativeGasUsed\n ? BigInt(transactionReceipt.cumulativeGasUsed)\n : null,\n effectiveGasPrice: transactionReceipt.effectiveGasPrice\n ? BigInt(transactionReceipt.effectiveGasPrice)\n : null,\n gasUsed: transactionReceipt.gasUsed\n ? BigInt(transactionReceipt.gasUsed)\n : null,\n logs: transactionReceipt.logs\n ? transactionReceipt.logs.map((log) => formatLog(log))\n : null,\n to: transactionReceipt.to ? transactionReceipt.to : null,\n transactionIndex: transactionReceipt.transactionIndex\n ? hexToNumber(transactionReceipt.transactionIndex)\n : null,\n status: transactionReceipt.status\n ? receiptStatuses[transactionReceipt.status]\n : null,\n type: transactionReceipt.type\n ? transactionType[\n transactionReceipt.type as keyof typeof transactionType\n ] || transactionReceipt.type\n : null,\n } as TransactionReceipt\n\n if (transactionReceipt.blobGasPrice)\n receipt.blobGasPrice = BigInt(transactionReceipt.blobGasPrice)\n if (transactionReceipt.blobGasUsed)\n receipt.blobGasUsed = BigInt(transactionReceipt.blobGasUsed)\n\n return receipt\n}\n\nexport type DefineTransactionReceiptErrorType =\n | DefineFormatterErrorType\n | ErrorType\n\nexport const defineTransactionReceipt = /*#__PURE__*/ defineFormatter(\n 'transactionReceipt',\n formatTransactionReceipt,\n)\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { AuthorizationList } from '../../experimental/eip7702/types/authorization.js'\nimport type { RpcAuthorizationList } from '../../experimental/eip7702/types/rpc.js'\nimport type {\n Chain,\n ExtractChainFormatterParameters,\n} from '../../types/chain.js'\nimport type { ByteArray } from '../../types/misc.js'\nimport type { RpcTransactionRequest } from '../../types/rpc.js'\nimport type { TransactionRequest } from '../../types/transaction.js'\nimport type { ExactPartial } from '../../types/utils.js'\nimport { bytesToHex, numberToHex } from '../encoding/toHex.js'\nimport { type DefineFormatterErrorType, defineFormatter } from './formatter.js'\n\nexport type FormattedTransactionRequest<\n chain extends Chain | undefined = Chain | undefined,\n> = ExtractChainFormatterParameters<\n chain,\n 'transactionRequest',\n TransactionRequest\n>\n\nexport const rpcTransactionType = {\n legacy: '0x0',\n eip2930: '0x1',\n eip1559: '0x2',\n eip4844: '0x3',\n eip7702: '0x4',\n} as const\n\nexport type FormatTransactionRequestErrorType = ErrorType\n\nexport function formatTransactionRequest(\n request: ExactPartial<TransactionRequest>,\n) {\n const rpcRequest = {} as RpcTransactionRequest\n\n if (typeof request.authorizationList !== 'undefined')\n rpcRequest.authorizationList = formatAuthorizationList(\n request.authorizationList,\n )\n if (typeof request.accessList !== 'undefined')\n rpcRequest.accessList = request.accessList\n if (typeof request.blobVersionedHashes !== 'undefined')\n rpcRequest.blobVersionedHashes = request.blobVersionedHashes\n if (typeof request.blobs !== 'undefined') {\n if (typeof request.blobs[0] !== 'string')\n rpcRequest.blobs = (request.blobs as ByteArray[]).map((x) =>\n bytesToHex(x),\n )\n else rpcRequest.blobs = request.blobs\n }\n if (typeof request.data !== 'undefined') rpcRequest.data = request.data\n if (typeof request.from !== 'undefined') rpcRequest.from = request.from\n if (typeof request.gas !== 'undefined')\n rpcRequest.gas = numberToHex(request.gas)\n if (typeof request.gasPrice !== 'undefined')\n rpcRequest.gasPrice = numberToHex(request.gasPrice)\n if (typeof request.maxFeePerBlobGas !== 'undefined')\n rpcRequest.maxFeePerBlobGas = numberToHex(request.maxFeePerBlobGas)\n if (typeof request.maxFeePerGas !== 'undefined')\n rpcRequest.maxFeePerGas = numberToHex(request.maxFeePerGas)\n if (typeof request.maxPriorityFeePerGas !== 'undefined')\n rpcRequest.maxPriorityFeePerGas = numberToHex(request.maxPriorityFeePerGas)\n if (typeof request.nonce !== 'undefined')\n rpcRequest.nonce = numberToHex(request.nonce)\n if (typeof request.to !== 'undefined') rpcRequest.to = request.to\n if (typeof request.type !== 'undefined')\n rpcRequest.type = rpcTransactionType[request.type]\n if (typeof request.value !== 'undefined')\n rpcRequest.value = numberToHex(request.value)\n\n return rpcRequest\n}\n\nexport type DefineTransactionRequestErrorType =\n | DefineFormatterErrorType\n | ErrorType\n\nexport const defineTransactionRequest = /*#__PURE__*/ defineFormatter(\n 'transactionRequest',\n formatTransactionRequest,\n)\n\n//////////////////////////////////////////////////////////////////////////////\n\nfunction formatAuthorizationList(\n authorizationList: AuthorizationList<number, boolean>,\n): RpcAuthorizationList {\n return authorizationList.map(\n (authorization) =>\n ({\n address: authorization.contractAddress,\n r: authorization.r,\n s: authorization.s,\n chainId: numberToHex(authorization.chainId),\n nonce: numberToHex(authorization.nonce),\n ...(typeof authorization.yParity !== 'undefined'\n ? { yParity: numberToHex(authorization.yParity) }\n : {}),\n ...(typeof authorization.v !== 'undefined' &&\n typeof authorization.yParity === 'undefined'\n ? { v: numberToHex(authorization.v) }\n : {}),\n }) as any,\n ) as RpcAuthorizationList\n}\n","import type { Client } from '../clients/createClient.js'\nimport type { PublicActions } from '../clients/decorators/public.js'\nimport type { WalletActions } from '../clients/decorators/wallet.js'\nimport type { Transport } from '../clients/transports/createTransport.js'\nimport type { Account } from '../types/account.js'\nimport type { Chain } from '../types/chain.js'\nimport type { RpcSchema } from '../types/eip1193.js'\n\n/**\n * Retrieves and returns an action from the client (if exists), and falls\n * back to the tree-shakable action.\n *\n * Useful for extracting overridden actions from a client (ie. if a consumer\n * wants to override the `sendTransaction` implementation).\n */\nexport function getAction<\n transport extends Transport,\n chain extends Chain | undefined,\n account extends Account | undefined,\n rpcSchema extends RpcSchema | undefined,\n extended extends { [key: string]: unknown },\n client extends Client<transport, chain, account, rpcSchema, extended>,\n parameters,\n returnType,\n>(\n client: client,\n actionFn: (_: any, parameters: parameters) => returnType,\n // Some minifiers drop `Function.prototype.name`, or replace it with short letters,\n // meaning that `actionFn.name` will not always work. For that case, the consumer\n // needs to pass the name explicitly.\n name: keyof PublicActions | keyof WalletActions | (string & {}),\n): (parameters: parameters) => returnType {\n const action_implicit = client[actionFn.name]\n if (typeof action_implicit === 'function')\n return action_implicit as (params: parameters) => returnType\n\n const action_explicit = client[name]\n if (typeof action_explicit === 'function')\n return action_explicit as (params: parameters) => returnType\n\n return (params) => actionFn(client, params)\n}\n","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nfunction fromBig(n: bigint, le = false) {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number) => h >>> s;\nconst shrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number) => l;\nconst rotr32L = (h: number, _l: number) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number) => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah: number, Al: number, Bh: number, Bl: number) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number) =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number) =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","import { bytes, exists, number, output } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport {\n Hash,\n u32,\n Input,\n toBytes,\n wrapConstructor,\n wrapXOFConstructorWithOpts,\n HashXOF,\n isLE,\n byteSwap32,\n} from './utils.js';\n\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n\n// Various per round constants calculations\nconst SHA3_PI: number[] = [];\nconst SHA3_ROTL: number[] = [];\nconst _SHA3_IOTA: bigint[] = [];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n) t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h: number, l: number, s: number) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h: number, l: number, s: number) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s: Uint32Array, rounds: number = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++) B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (Ï) and Pi (Ï€)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++) B[x] = s[y + x];\n for (let x = 0; x < 10; x++) s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\n\nexport class Keccak extends Hash<Keccak> implements HashXOF<Keccak> {\n protected state: Uint8Array;\n protected pos = 0;\n protected posOut = 0;\n protected finished = false;\n protected state32: Uint32Array;\n protected destroyed = false;\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(\n public blockLen: number,\n public suffix: number,\n public outputLen: number,\n protected enableXOF = false,\n protected rounds: number = 24\n ) {\n super();\n // Can be passed from user as dkLen\n number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n protected keccak() {\n if (!isLE) byteSwap32(this.state32);\n keccakP(this.state32, this.rounds);\n if (!isLE) byteSwap32(this.state32);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data: Input) {\n exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen) this.keccak();\n }\n return this;\n }\n protected finish() {\n if (this.finished) return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n protected writeInto(out: Uint8Array): Uint8Array {\n exists(this, false);\n bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len; ) {\n if (this.posOut >= blockLen) this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out: Uint8Array): Uint8Array {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF) throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes: number): Uint8Array {\n number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out: Uint8Array) {\n output(out, this);\n if (this.finished) throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to?: Keccak): Keccak {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to ||= new Keccak(blockLen, suffix, outputLen, enableXOF, rounds);\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\n\nconst gen = (suffix: number, blockLen: number, outputLen: number) =>\n wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\n\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\n\nexport type ShakeOpts = { dkLen?: number };\n\nconst genShake = (suffix: number, blockLen: number, outputLen: number) =>\n wrapXOFConstructorWithOpts<HashXOF<Keccak>, ShakeOpts>(\n (opts: ShakeOpts = {}) =>\n new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true)\n );\n\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n","import { keccak_256 } from '@noble/hashes/sha3'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\nimport { type ToBytesErrorType, toBytes } from '../encoding/toBytes.js'\nimport { type ToHexErrorType, toHex } from '../encoding/toHex.js'\n\ntype To = 'hex' | 'bytes'\n\nexport type Keccak256Hash<to extends To> =\n | (to extends 'bytes' ? ByteArray : never)\n | (to extends 'hex' ? Hex : never)\n\nexport type Keccak256ErrorType =\n | IsHexErrorType\n | ToBytesErrorType\n | ToHexErrorType\n | ErrorType\n\nexport function keccak256<to extends To = 'hex'>(\n value: Hex | ByteArray,\n to_?: to | undefined,\n): Keccak256Hash<to> {\n const to = to_ || 'hex'\n const bytes = keccak_256(\n isHex(value, { strict: false }) ? toBytes(value) : value,\n )\n if (to === 'bytes') return bytes as Keccak256Hash<to>\n return toHex(bytes) as Keccak256Hash<to>\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport {\n type ToSignatureHashErrorType,\n toSignatureHash,\n} from './toSignatureHash.js'\n\nexport type ToEventSelectorErrorType = ToSignatureHashErrorType | ErrorType\n\n/**\n * Returns the event selector for a given event definition.\n *\n * @example\n * const selector = toEventSelector('Transfer(address indexed from, address indexed to, uint256 amount)')\n * // 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n */\nexport const toEventSelector = toSignatureHash\n","import type { AbiFunction } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport { type SliceErrorType, slice } from '../data/slice.js'\nimport {\n type ToSignatureHashErrorType,\n toSignatureHash,\n} from './toSignatureHash.js'\n\nexport type ToFunctionSelectorErrorType =\n | ToSignatureHashErrorType\n | SliceErrorType\n | ErrorType\n\n/**\n * Returns the function selector for a given function definition.\n *\n * @example\n * const selector = toFunctionSelector('function ownerOf(uint256 tokenId)')\n * // 0x6352211e\n */\nexport const toFunctionSelector = (fn: string | AbiFunction) =>\n slice(toSignatureHash(fn), 0, 4)\n","import { type ToBytesErrorType, toBytes } from '../encoding/toBytes.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport { type Keccak256ErrorType, keccak256 } from './keccak256.js'\n\nconst hash = (value: string) => keccak256(toBytes(value))\n\nexport type HashSignatureErrorType =\n | Keccak256ErrorType\n | ToBytesErrorType\n | ErrorType\n\nexport function hashSignature(sig: string) {\n return hash(sig)\n}\n","import type { AbiEventParameter, AbiParameter } from '../abi.js'\nimport { execTyped } from '../regex.js'\nimport type { IsNarrowable, Join } from '../types.js'\nimport type { AssertName } from './types/signatures.js'\n\n/**\n * Formats {@link AbiParameter} to human-readable ABI parameter.\n *\n * @param abiParameter - ABI parameter\n * @returns Human-readable ABI parameter\n *\n * @example\n * type Result = FormatAbiParameter<{ type: 'address'; name: 'from'; }>\n * // ^? type Result = 'address from'\n */\nexport type FormatAbiParameter<\n abiParameter extends AbiParameter | AbiEventParameter,\n> = abiParameter extends {\n name?: infer name extends string\n type: `tuple${infer array}`\n components: infer components extends readonly AbiParameter[]\n indexed?: infer indexed extends boolean\n}\n ? FormatAbiParameter<\n {\n type: `(${Join<\n {\n [key in keyof components]: FormatAbiParameter<\n {\n type: components[key]['type']\n } & (IsNarrowable<components[key]['name'], string> extends true\n ? { name: components[key]['name'] }\n : unknown) &\n (components[key] extends { components: readonly AbiParameter[] }\n ? { components: components[key]['components'] }\n : unknown)\n >\n },\n ', '\n >})${array}`\n } & (IsNarrowable<name, string> extends true ? { name: name } : unknown) &\n (IsNarrowable<indexed, boolean> extends true\n ? { indexed: indexed }\n : unknown)\n >\n : `${abiParameter['type']}${abiParameter extends { indexed: true }\n ? ' indexed'\n : ''}${abiParameter['name'] extends infer name extends string\n ? name extends ''\n ? ''\n : ` ${AssertName<name>}`\n : ''}`\n\n// https://regexr.com/7f7rv\nconst tupleRegex = /^tuple(?<array>(\\[(\\d*)\\])*)$/\n\n/**\n * Formats {@link AbiParameter} to human-readable ABI parameter.\n *\n * @param abiParameter - ABI parameter\n * @returns Human-readable ABI parameter\n *\n * @example\n * const result = formatAbiParameter({ type: 'address', name: 'from' })\n * // ^? const result: 'address from'\n */\nexport function formatAbiParameter<\n const abiParameter extends AbiParameter | AbiEventParameter,\n>(abiParameter: abiParameter): FormatAbiParameter<abiParameter> {\n type Result = FormatAbiParameter<abiParameter>\n\n let type = abiParameter.type\n if (tupleRegex.test(abiParameter.type) && 'components' in abiParameter) {\n type = '('\n const length = abiParameter.components.length as number\n for (let i = 0; i < length; i++) {\n const component = abiParameter.components[i]!\n type += formatAbiParameter(component)\n if (i < length - 1) type += ', '\n }\n const result = execTyped<{ array?: string }>(tupleRegex, abiParameter.type)\n type += `)${result?.array ?? ''}`\n return formatAbiParameter({\n ...abiParameter,\n type,\n }) as Result\n }\n // Add `indexed` to type if in `abiParameter`\n if ('indexed' in abiParameter && abiParameter.indexed)\n type = `${type} indexed`\n // Return human-readable ABI parameter\n if (abiParameter.name) return `${type} ${abiParameter.name}` as Result\n return type as Result\n}\n","import type { AbiEventParameter, AbiParameter } from '../abi.js'\nimport type { Join } from '../types.js'\nimport {\n type FormatAbiParameter,\n formatAbiParameter,\n} from './formatAbiParameter.js'\n\n/**\n * Formats {@link AbiParameter}s to human-readable ABI parameter.\n *\n * @param abiParameters - ABI parameters\n * @returns Human-readable ABI parameters\n *\n * @example\n * type Result = FormatAbiParameters<[\n * // ^? type Result = 'address from, uint256 tokenId'\n * { type: 'address'; name: 'from'; },\n * { type: 'uint256'; name: 'tokenId'; },\n * ]>\n */\nexport type FormatAbiParameters<\n abiParameters extends readonly [\n AbiParameter | AbiEventParameter,\n ...(readonly (AbiParameter | AbiEventParameter)[]),\n ],\n> = Join<\n {\n [key in keyof abiParameters]: FormatAbiParameter<abiParameters[key]>\n },\n ', '\n>\n\n/**\n * Formats {@link AbiParameter}s to human-readable ABI parameters.\n *\n * @param abiParameters - ABI parameters\n * @returns Human-readable ABI parameters\n *\n * @example\n * const result = formatAbiParameters([\n * // ^? const result: 'address from, uint256 tokenId'\n * { type: 'address', name: 'from' },\n * { type: 'uint256', name: 'tokenId' },\n * ])\n */\nexport function formatAbiParameters<\n const abiParameters extends readonly [\n AbiParameter | AbiEventParameter,\n ...(readonly (AbiParameter | AbiEventParameter)[]),\n ],\n>(abiParameters: abiParameters): FormatAbiParameters<abiParameters> {\n let params = ''\n const length = abiParameters.length\n for (let i = 0; i < length; i++) {\n const abiParameter = abiParameters[i]!\n params += formatAbiParameter(abiParameter)\n if (i !== length - 1) params += ', '\n }\n return params as FormatAbiParameters<abiParameters>\n}\n","import { type AbiEvent, type AbiFunction, formatAbiItem } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport {\n type NormalizeSignatureErrorType,\n normalizeSignature,\n} from './normalizeSignature.js'\n\nexport type ToSignatureErrorType = NormalizeSignatureErrorType | ErrorType\n\n/**\n * Returns the signature for a given function or event definition.\n *\n * @example\n * const signature = toSignature('function ownerOf(uint256 tokenId)')\n * // 'ownerOf(uint256)'\n *\n * @example\n * const signature_3 = toSignature({\n * name: 'ownerOf',\n * type: 'function',\n * inputs: [{ name: 'tokenId', type: 'uint256' }],\n * outputs: [],\n * stateMutability: 'view',\n * })\n * // 'ownerOf(uint256)'\n */\nexport const toSignature = (def: string | AbiFunction | AbiEvent) => {\n const def_ = (() => {\n if (typeof def === 'string') return def\n return formatAbiItem(def)\n })()\n return normalizeSignature(def_)\n}\n","import { BaseError } from '../../errors/base.js'\nimport type { ErrorType } from '../../errors/utils.js'\n\ntype NormalizeSignatureParameters = string\ntype NormalizeSignatureReturnType = string\nexport type NormalizeSignatureErrorType = ErrorType\n\nexport function normalizeSignature(\n signature: NormalizeSignatureParameters,\n): NormalizeSignatureReturnType {\n let active = true\n let current = ''\n let level = 0\n let result = ''\n let valid = false\n\n for (let i = 0; i < signature.length; i++) {\n const char = signature[i]\n\n // If the character is a separator, we want to reactivate.\n if (['(', ')', ','].includes(char)) active = true\n\n // If the character is a \"level\" token, we want to increment/decrement.\n if (char === '(') level++\n if (char === ')') level--\n\n // If we aren't active, we don't want to mutate the result.\n if (!active) continue\n\n // If level === 0, we are at the definition level.\n if (level === 0) {\n if (char === ' ' && ['event', 'function', ''].includes(result))\n result = ''\n else {\n result += char\n\n // If we are at the end of the definition, we must be finished.\n if (char === ')') {\n valid = true\n break\n }\n }\n\n continue\n }\n\n // Ignore spaces\n if (char === ' ') {\n // If the previous character is a separator, and the current section isn't empty, we want to deactivate.\n if (signature[i - 1] !== ',' && current !== ',' && current !== ',(') {\n current = ''\n active = false\n }\n continue\n }\n\n result += char\n current += char\n }\n\n if (!valid) throw new BaseError('Unable to normalize signature.')\n\n return result\n}\n","import type {\n Abi,\n AbiConstructor,\n AbiError,\n AbiEvent,\n AbiEventParameter,\n AbiFallback,\n AbiFunction,\n AbiParameter,\n AbiReceive,\n AbiStateMutability,\n} from '../abi.js'\nimport {\n type FormatAbiParameters as FormatAbiParameters_,\n formatAbiParameters,\n} from './formatAbiParameters.js'\nimport type { AssertName } from './types/signatures.js'\n\n/**\n * Formats ABI item (e.g. error, event, function) into human-readable ABI item\n *\n * @param abiItem - ABI item\n * @returns Human-readable ABI item\n */\nexport type FormatAbiItem<abiItem extends Abi[number]> =\n Abi[number] extends abiItem\n ? string\n :\n | (abiItem extends AbiFunction\n ? AbiFunction extends abiItem\n ? string\n : `function ${AssertName<abiItem['name']>}(${FormatAbiParameters<\n abiItem['inputs']\n >})${abiItem['stateMutability'] extends Exclude<\n AbiStateMutability,\n 'nonpayable'\n >\n ? ` ${abiItem['stateMutability']}`\n : ''}${abiItem['outputs']['length'] extends 0\n ? ''\n : ` returns (${FormatAbiParameters<abiItem['outputs']>})`}`\n : never)\n | (abiItem extends AbiEvent\n ? AbiEvent extends abiItem\n ? string\n : `event ${AssertName<abiItem['name']>}(${FormatAbiParameters<\n abiItem['inputs']\n >})`\n : never)\n | (abiItem extends AbiError\n ? AbiError extends abiItem\n ? string\n : `error ${AssertName<abiItem['name']>}(${FormatAbiParameters<\n abiItem['inputs']\n >})`\n : never)\n | (abiItem extends AbiConstructor\n ? AbiConstructor extends abiItem\n ? string\n : `constructor(${FormatAbiParameters<\n abiItem['inputs']\n >})${abiItem['stateMutability'] extends 'payable'\n ? ' payable'\n : ''}`\n : never)\n | (abiItem extends AbiFallback\n ? AbiFallback extends abiItem\n ? string\n : 'fallback()'\n : never)\n | (abiItem extends AbiReceive\n ? AbiReceive extends abiItem\n ? string\n : 'receive() external payable'\n : never)\n\ntype FormatAbiParameters<\n abiParameters extends readonly (AbiParameter | AbiEventParameter)[],\n> = abiParameters['length'] extends 0\n ? ''\n : FormatAbiParameters_<\n abiParameters extends readonly [\n AbiParameter | AbiEventParameter,\n ...(readonly (AbiParameter | AbiEventParameter)[]),\n ]\n ? abiParameters\n : never\n >\n\n/**\n * Formats ABI item (e.g. error, event, function) into human-readable ABI item\n *\n * @param abiItem - ABI item\n * @returns Human-readable ABI item\n */\nexport function formatAbiItem<const abiItem extends Abi[number]>(\n abiItem: abiItem,\n): FormatAbiItem<abiItem> {\n type Result = FormatAbiItem<abiItem>\n type Params = readonly [\n AbiParameter | AbiEventParameter,\n ...(readonly (AbiParameter | AbiEventParameter)[]),\n ]\n\n if (abiItem.type === 'function')\n return `function ${abiItem.name}(${formatAbiParameters(\n abiItem.inputs as Params,\n )})${\n abiItem.stateMutability && abiItem.stateMutability !== 'nonpayable'\n ? ` ${abiItem.stateMutability}`\n : ''\n }${\n abiItem.outputs.length\n ? ` returns (${formatAbiParameters(abiItem.outputs as Params)})`\n : ''\n }`\n if (abiItem.type === 'event')\n return `event ${abiItem.name}(${formatAbiParameters(\n abiItem.inputs as Params,\n )})`\n if (abiItem.type === 'error')\n return `error ${abiItem.name}(${formatAbiParameters(\n abiItem.inputs as Params,\n )})`\n if (abiItem.type === 'constructor')\n return `constructor(${formatAbiParameters(abiItem.inputs as Params)})${\n abiItem.stateMutability === 'payable' ? ' payable' : ''\n }`\n if (abiItem.type === 'fallback') return 'fallback()' as Result\n return 'receive() external payable' as Result\n}\n","import type { AbiEvent, AbiFunction } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport { type HashSignatureErrorType, hashSignature } from './hashSignature.js'\nimport { type ToSignatureErrorType, toSignature } from './toSignature.js'\n\nexport type ToSignatureHashErrorType =\n | HashSignatureErrorType\n | ToSignatureErrorType\n | ErrorType\n\n/**\n * Returns the hash (of the function/event signature) for a given event or function definition.\n */\nexport function toSignatureHash(fn: string | AbiFunction | AbiEvent) {\n return hashSignature(toSignature(fn))\n}\n","/**\n * Map with a LRU (Least recently used) policy.\n *\n * @link https://en.wikipedia.org/wiki/Cache_replacement_policies#LRU\n */\nexport class LruMap<value = unknown> extends Map<string, value> {\n maxSize: number\n\n constructor(size: number) {\n super()\n this.maxSize = size\n }\n\n override get(key: string) {\n const value = super.get(key)\n\n if (super.has(key) && value !== undefined) {\n this.delete(key)\n super.set(key, value)\n }\n\n return value\n }\n\n override set(key: string, value: value) {\n super.set(key, value)\n if (this.maxSize && this.size > this.maxSize) {\n const firstKey = this.keys().next().value\n if (firstKey) this.delete(firstKey)\n }\n return this\n }\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport { type PromiseWithResolvers, withResolvers } from './withResolvers.js'\n\ntype Resolved<returnType extends readonly unknown[] = any> = [\n result: returnType[number],\n results: returnType,\n]\n\ntype SchedulerItem = {\n args: unknown\n resolve: PromiseWithResolvers<unknown>['resolve']\n reject: PromiseWithResolvers<unknown>['reject']\n}\n\ntype BatchResultsCompareFn<result = unknown> = (a: result, b: result) => number\n\ntype CreateBatchSchedulerArguments<\n parameters = unknown,\n returnType extends readonly unknown[] = readonly unknown[],\n> = {\n fn: (args: parameters[]) => Promise<returnType>\n id: number | string\n shouldSplitBatch?: ((args: parameters[]) => boolean) | undefined\n wait?: number | undefined\n sort?: BatchResultsCompareFn<returnType[number]> | undefined\n}\n\ntype CreateBatchSchedulerReturnType<\n parameters = unknown,\n returnType extends readonly unknown[] = readonly unknown[],\n> = {\n flush: () => void\n schedule: parameters extends undefined\n ? (args?: parameters | undefined) => Promise<Resolved<returnType>>\n : (args: parameters) => Promise<Resolved<returnType>>\n}\n\nexport type CreateBatchSchedulerErrorType = ErrorType\n\nconst schedulerCache = /*#__PURE__*/ new Map<number | string, SchedulerItem[]>()\n\n/** @internal */\nexport function createBatchScheduler<\n parameters,\n returnType extends readonly unknown[],\n>({\n fn,\n id,\n shouldSplitBatch,\n wait = 0,\n sort,\n}: CreateBatchSchedulerArguments<\n parameters,\n returnType\n>): CreateBatchSchedulerReturnType<parameters, returnType> {\n const exec = async () => {\n const scheduler = getScheduler()\n flush()\n\n const args = scheduler.map(({ args }) => args)\n\n if (args.length === 0) return\n\n fn(args as parameters[])\n .then((data) => {\n if (sort && Array.isArray(data)) data.sort(sort)\n for (let i = 0; i < scheduler.length; i++) {\n const { resolve } = scheduler[i]\n resolve?.([data[i], data])\n }\n })\n .catch((err) => {\n for (let i = 0; i < scheduler.length; i++) {\n const { reject } = scheduler[i]\n reject?.(err)\n }\n })\n }\n\n const flush = () => schedulerCache.delete(id)\n\n const getBatchedArgs = () =>\n getScheduler().map(({ args }) => args) as parameters[]\n\n const getScheduler = () => schedulerCache.get(id) || []\n\n const setScheduler = (item: SchedulerItem) =>\n schedulerCache.set(id, [...getScheduler(), item])\n\n return {\n flush,\n async schedule(args: parameters) {\n const { promise, resolve, reject } = withResolvers()\n\n const split = shouldSplitBatch?.([...getBatchedArgs(), args])\n\n if (split) exec()\n\n const hasActiveScheduler = getScheduler().length > 0\n if (hasActiveScheduler) {\n setScheduler({ args, resolve, reject })\n return promise\n }\n\n setScheduler({ args, resolve, reject })\n setTimeout(exec, wait)\n return promise\n },\n } as unknown as CreateBatchSchedulerReturnType<parameters, returnType>\n}\n","/** @internal */\nexport type PromiseWithResolvers<type> = {\n promise: Promise<type>\n resolve: (value: type | PromiseLike<type>) => void\n reject: (reason?: unknown) => void\n}\n\n/** @internal */\nexport function withResolvers<type>(): PromiseWithResolvers<type> {\n let resolve: PromiseWithResolvers<type>['resolve'] = () => undefined\n let reject: PromiseWithResolvers<type>['reject'] = () => undefined\n\n const promise = new Promise<type>((resolve_, reject_) => {\n resolve = resolve_\n reject = reject_\n })\n\n return { promise, resolve, reject }\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport { wait } from '../wait.js'\n\nexport type WithRetryParameters = {\n // The delay (in ms) between retries.\n delay?:\n | ((config: { count: number; error: Error }) => number)\n | number\n | undefined\n // The max number of times to retry.\n retryCount?: number | undefined\n // Whether or not to retry when an error is thrown.\n shouldRetry?:\n | (({\n count,\n error,\n }: {\n count: number\n error: Error\n }) => Promise<boolean> | boolean)\n | undefined\n}\n\nexport type WithRetryErrorType = ErrorType\n\nexport function withRetry<data>(\n fn: () => Promise<data>,\n {\n delay: delay_ = 100,\n retryCount = 2,\n shouldRetry = () => true,\n }: WithRetryParameters = {},\n) {\n return new Promise<data>((resolve, reject) => {\n const attemptRetry = async ({ count = 0 } = {}) => {\n const retry = async ({ error }: { error: Error }) => {\n const delay =\n typeof delay_ === 'function' ? delay_({ count, error }) : delay_\n if (delay) await wait(delay)\n attemptRetry({ count: count + 1 })\n }\n\n try {\n const data = await fn()\n resolve(data)\n } catch (err) {\n if (\n count < retryCount &&\n (await shouldRetry({ count, error: err as Error }))\n )\n return retry({ error: err as Error })\n reject(err)\n }\n }\n attemptRetry()\n })\n}\n","import type { ErrorType } from '../../errors/utils.js'\nimport type { ByteArray, Hex, Signature } from '../../types/misc.js'\nimport { type IsHexErrorType, isHex } from '../data/isHex.js'\nimport {\n type HexToNumberErrorType,\n hexToBigInt,\n hexToNumber,\n} from '../encoding/fromHex.js'\nimport { toHex } from '../encoding/toHex.js'\n\nexport type RecoverPublicKeyParameters = {\n hash: Hex | ByteArray\n signature: Hex | ByteArray | Signature\n}\n\nexport type RecoverPublicKeyReturnType = Hex\n\nexport type RecoverPublicKeyErrorType =\n | HexToNumberErrorType\n | IsHexErrorType\n | ErrorType\n\nexport async function recoverPublicKey({\n hash,\n signature,\n}: RecoverPublicKeyParameters): Promise<RecoverPublicKeyReturnType> {\n const hashHex = isHex(hash) ? hash : toHex(hash)\n\n const { secp256k1 } = await import('@noble/curves/secp256k1')\n const signature_ = (() => {\n // typeof signature: `Signature`\n if (typeof signature === 'object' && 'r' in signature && 's' in signature) {\n const { r, s, v, yParity } = signature\n const yParityOrV = Number(yParity ?? v)!\n const recoveryBit = toRecoveryBit(yParityOrV)\n return new secp256k1.Signature(\n hexToBigInt(r),\n hexToBigInt(s),\n ).addRecoveryBit(recoveryBit)\n }\n\n // typeof signature: `Hex | ByteArray`\n const signatureHex = isHex(signature) ? signature : toHex(signature)\n const yParityOrV = hexToNumber(`0x${signatureHex.slice(130)}`)\n const recoveryBit = toRecoveryBit(yParityOrV)\n return secp256k1.Signature.fromCompact(\n signatureHex.substring(2, 130),\n ).addRecoveryBit(recoveryBit)\n })()\n\n const publicKey = signature_\n .recoverPublicKey(hashHex.substring(2))\n .toHex(false)\n return `0x${publicKey}`\n}\n\nfunction toRecoveryBit(yParityOrV: number) {\n if (yParityOrV === 0 || yParityOrV === 1) return yParityOrV\n if (yParityOrV === 27) return 0\n if (yParityOrV === 28) return 1\n throw new Error('Invalid yParityOrV value')\n}\n","import type { Address } from 'abitype'\n\nimport { publicKeyToAddress } from '../../accounts/utils/publicKeyToAddress.js'\nimport type { ByteArray, Hex, Signature } from '../../types/misc.js'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport { recoverPublicKey } from './recoverPublicKey.js'\n\nexport type RecoverAddressParameters = {\n hash: Hex | ByteArray\n signature: Hex | ByteArray | Signature\n}\n\nexport type RecoverAddressReturnType = Address\n\nexport type RecoverAddressErrorType = ErrorType\n\nexport async function recoverAddress({\n hash,\n signature,\n}: RecoverAddressParameters): Promise<RecoverAddressReturnType> {\n return publicKeyToAddress(await recoverPublicKey({ hash: hash, signature }))\n}\n","import type { Address } from 'abitype'\n\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Hex } from '../../types/misc.js'\nimport {\n type ChecksumAddressErrorType,\n checksumAddress,\n} from '../../utils/address/getAddress.js'\nimport {\n type Keccak256ErrorType,\n keccak256,\n} from '../../utils/hash/keccak256.js'\n\nexport type PublicKeyToAddressErrorType =\n | ChecksumAddressErrorType\n | Keccak256ErrorType\n | ErrorType\n\n/**\n * @description Converts an ECDSA public key to an address.\n *\n * @param publicKey The public key to convert.\n *\n * @returns The address.\n */\nexport function publicKeyToAddress(publicKey: Hex): Address {\n const address = keccak256(`0x${publicKey.substring(4)}`).substring(26)\n return checksumAddress(`0x${address}`) as Address\n}\n","import {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../errors/address.js'\nimport {\n InvalidBytesLengthError,\n type InvalidBytesLengthErrorType,\n} from '../errors/data.js'\nimport {\n AccountStateConflictError,\n type AccountStateConflictErrorType,\n StateAssignmentConflictError,\n type StateAssignmentConflictErrorType,\n} from '../errors/stateOverride.js'\nimport type {\n RpcAccountStateOverride,\n RpcStateMapping,\n RpcStateOverride,\n} from '../types/rpc.js'\nimport type { StateMapping, StateOverride } from '../types/stateOverride.js'\nimport { isAddress } from './address/isAddress.js'\nimport { type NumberToHexErrorType, numberToHex } from './encoding/toHex.js'\n\ntype SerializeStateMappingParameters = StateMapping | undefined\n\ntype SerializeStateMappingErrorType = InvalidBytesLengthErrorType\n\n/** @internal */\nexport function serializeStateMapping(\n stateMapping: SerializeStateMappingParameters,\n): RpcStateMapping | undefined {\n if (!stateMapping || stateMapping.length === 0) return undefined\n return stateMapping.reduce((acc, { slot, value }) => {\n if (slot.length !== 66)\n throw new InvalidBytesLengthError({\n size: slot.length,\n targetSize: 66,\n type: 'hex',\n })\n if (value.length !== 66)\n throw new InvalidBytesLengthError({\n size: value.length,\n targetSize: 66,\n type: 'hex',\n })\n acc[slot] = value\n return acc\n }, {} as RpcStateMapping)\n}\n\ntype SerializeAccountStateOverrideParameters = Omit<\n StateOverride[number],\n 'address'\n>\n\ntype SerializeAccountStateOverrideErrorType =\n | NumberToHexErrorType\n | StateAssignmentConflictErrorType\n | SerializeStateMappingErrorType\n\n/** @internal */\nexport function serializeAccountStateOverride(\n parameters: SerializeAccountStateOverrideParameters,\n): RpcAccountStateOverride {\n const { balance, nonce, state, stateDiff, code } = parameters\n const rpcAccountStateOverride: RpcAccountStateOverride = {}\n if (code !== undefined) rpcAccountStateOverride.code = code\n if (balance !== undefined)\n rpcAccountStateOverride.balance = numberToHex(balance)\n if (nonce !== undefined) rpcAccountStateOverride.nonce = numberToHex(nonce)\n if (state !== undefined)\n rpcAccountStateOverride.state = serializeStateMapping(state)\n if (stateDiff !== undefined) {\n if (rpcAccountStateOverride.state) throw new StateAssignmentConflictError()\n rpcAccountStateOverride.stateDiff = serializeStateMapping(stateDiff)\n }\n return rpcAccountStateOverride\n}\n\ntype SerializeStateOverrideParameters = StateOverride | undefined\n\nexport type SerializeStateOverrideErrorType =\n | InvalidAddressErrorType\n | AccountStateConflictErrorType\n | SerializeAccountStateOverrideErrorType\n\n/** @internal */\nexport function serializeStateOverride(\n parameters?: SerializeStateOverrideParameters,\n): RpcStateOverride | undefined {\n if (!parameters) return undefined\n const rpcStateOverride: RpcStateOverride = {}\n for (const { address, ...accountState } of parameters) {\n if (!isAddress(address, { strict: false }))\n throw new InvalidAddressError({ address })\n if (rpcStateOverride[address])\n throw new AccountStateConflictError({ address: address })\n rpcStateOverride[address] = serializeAccountStateOverride(accountState)\n }\n return rpcStateOverride\n}\n","import type { ErrorType } from '../errors/utils.js'\n\nexport type StringifyErrorType = ErrorType\n\nexport const stringify: typeof JSON.stringify = (value, replacer, space) =>\n JSON.stringify(\n value,\n (key, value_) => {\n const value = typeof value_ === 'bigint' ? value_.toString() : value_\n return typeof replacer === 'function' ? replacer(key, value) : value\n },\n space,\n )\n","import {\n type ParseAccountErrorType,\n parseAccount,\n} from '../../accounts/utils/parseAccount.js'\nimport type { SendTransactionParameters } from '../../actions/wallet/sendTransaction.js'\nimport { maxUint256 } from '../../constants/number.js'\nimport {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from '../../errors/address.js'\nimport {\n FeeCapTooHighError,\n type FeeCapTooHighErrorType,\n TipAboveFeeCapError,\n type TipAboveFeeCapErrorType,\n} from '../../errors/node.js'\nimport {\n FeeConflictError,\n type FeeConflictErrorType,\n} from '../../errors/transaction.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type { Chain } from '../../types/chain.js'\nimport type { ExactPartial } from '../../types/utils.js'\nimport { isAddress } from '../address/isAddress.js'\n\nexport type AssertRequestParameters = ExactPartial<\n SendTransactionParameters<Chain>\n>\n\nexport type AssertRequestErrorType =\n | InvalidAddressErrorType\n | FeeConflictErrorType\n | FeeCapTooHighErrorType\n | ParseAccountErrorType\n | TipAboveFeeCapErrorType\n | ErrorType\n\nexport function assertRequest(args: AssertRequestParameters) {\n const {\n account: account_,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n to,\n } = args\n const account = account_ ? parseAccount(account_) : undefined\n if (account && !isAddress(account.address))\n throw new InvalidAddressError({ address: account.address })\n if (to && !isAddress(to)) throw new InvalidAddressError({ address: to })\n if (\n typeof gasPrice !== 'undefined' &&\n (typeof maxFeePerGas !== 'undefined' ||\n typeof maxPriorityFeePerGas !== 'undefined')\n )\n throw new FeeConflictError()\n\n if (maxFeePerGas && maxFeePerGas > maxUint256)\n throw new FeeCapTooHighError({ maxFeePerGas })\n if (\n maxPriorityFeePerGas &&\n maxFeePerGas &&\n maxPriorityFeePerGas > maxFeePerGas\n )\n throw new TipAboveFeeCapError({ maxFeePerGas, maxPriorityFeePerGas })\n}\n","import {\n InvalidSerializableTransactionError,\n type InvalidSerializableTransactionErrorType,\n} from '../../errors/transaction.js'\nimport type { ErrorType } from '../../errors/utils.js'\nimport type {\n FeeValuesEIP1559,\n FeeValuesEIP4844,\n FeeValuesLegacy,\n} from '../../index.js'\nimport type {\n TransactionRequestGeneric,\n TransactionSerializableEIP2930,\n TransactionSerializableEIP4844,\n TransactionSerializableEIP7702,\n TransactionSerializableGeneric,\n} from '../../types/transaction.js'\nimport type { Assign, ExactPartial, IsNever, OneOf } from '../../types/utils.js'\n\nexport type GetTransactionType<\n transaction extends OneOf<\n TransactionSerializableGeneric | TransactionRequestGeneric\n > = TransactionSerializableGeneric,\n result =\n | (transaction extends LegacyProperties ? 'legacy' : never)\n | (transaction extends EIP1559Properties ? 'eip1559' : never)\n | (transaction extends EIP2930Properties ? 'eip2930' : never)\n | (transaction extends EIP4844Properties ? 'eip4844' : never)\n | (transaction extends EIP7702Properties ? 'eip7702' : never)\n | (transaction['type'] extends TransactionSerializableGeneric['type']\n ? Extract<transaction['type'], string>\n : never),\n> = IsNever<keyof transaction> extends true\n ? string\n : IsNever<result> extends false\n ? result\n : string\n\nexport type GetTransactionTypeErrorType =\n | InvalidSerializableTransactionErrorType\n | ErrorType\n\nexport function getTransactionType<\n const transaction extends OneOf<\n TransactionSerializableGeneric | TransactionRequestGeneric\n >,\n>(transaction: transaction): GetTransactionType<transaction> {\n if (transaction.type)\n return transaction.type as GetTransactionType<transaction>\n\n if (typeof transaction.authorizationList !== 'undefined')\n return 'eip7702' as any\n\n if (\n typeof transaction.blobs !== 'undefined' ||\n typeof transaction.blobVersionedHashes !== 'undefined' ||\n typeof transaction.maxFeePerBlobGas !== 'undefined' ||\n typeof transaction.sidecars !== 'undefined'\n )\n return 'eip4844' as any\n\n if (\n typeof transaction.maxFeePerGas !== 'undefined' ||\n typeof transaction.maxPriorityFeePerGas !== 'undefined'\n ) {\n return 'eip1559' as any\n }\n\n if (typeof transaction.gasPrice !== 'undefined') {\n if (typeof transaction.accessList !== 'undefined') return 'eip2930' as any\n return 'legacy' as any\n }\n\n throw new InvalidSerializableTransactionError({ transaction })\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////\n// Types\n\ntype BaseProperties = {\n accessList?: undefined\n authorizationList?: undefined\n blobs?: undefined\n blobVersionedHashes?: undefined\n gasPrice?: undefined\n maxFeePerBlobGas?: undefined\n maxFeePerGas?: undefined\n maxPriorityFeePerGas?: undefined\n sidecars?: undefined\n}\n\ntype LegacyProperties = Assign<BaseProperties, FeeValuesLegacy>\ntype EIP1559Properties = Assign<\n BaseProperties,\n OneOf<\n | {\n maxFeePerGas: FeeValuesEIP1559['maxFeePerGas']\n }\n | {\n maxPriorityFeePerGas: FeeValuesEIP1559['maxPriorityFeePerGas']\n },\n FeeValuesEIP1559\n > & {\n accessList?: TransactionSerializableEIP2930['accessList'] | undefined\n }\n>\ntype EIP2930Properties = Assign<\n ExactPartial<LegacyProperties>,\n {\n accessList: TransactionSerializableEIP2930['accessList']\n }\n>\ntype EIP4844Properties = Assign<\n ExactPartial<EIP1559Properties>,\n ExactPartial<FeeValuesEIP4844> &\n OneOf<\n | {\n blobs: TransactionSerializableEIP4844['blobs']\n }\n | {\n blobVersionedHashes: TransactionSerializableEIP4844['blobVersionedHashes']\n }\n | {\n sidecars: TransactionSerializableEIP4844['sidecars']\n },\n TransactionSerializableEIP4844\n >\n>\ntype EIP7702Properties = Assign<\n ExactPartial<EIP1559Properties>,\n {\n authorizationList: TransactionSerializableEIP7702['authorizationList']\n }\n>\n","import type { TypedData } from 'abitype'\n\nimport { BaseError } from './base.js'\n\nexport type InvalidPrimaryTypeErrorType = InvalidPrimaryTypeError & {\n name: 'InvalidPrimaryTypeError'\n}\nexport class InvalidPrimaryTypeError extends BaseError {\n constructor({\n primaryType,\n types,\n }: { primaryType: string; types: TypedData | Record<string, unknown> }) {\n super(\n `Invalid primary type \\`${primaryType}\\` must be one of \\`${JSON.stringify(Object.keys(types))}\\`.`,\n {\n docsPath: '/api/glossary/Errors#typeddatainvalidprimarytypeerror',\n metaMessages: ['Check that the primary type is a key in `types`.'],\n },\n )\n }\n}\n\nexport type InvalidStructTypeErrorType = InvalidStructTypeError & {\n name: 'InvalidStructTypeError'\n}\nexport class InvalidStructTypeError extends BaseError {\n constructor({ type }: { type: string }) {\n super(`Struct type \"${type}\" is invalid.`, {\n metaMessages: ['Struct type must not be a Solidity type.'],\n name: 'InvalidStructTypeError',\n })\n }\n}\n","export const arrayRegex = /^(.*)\\[([0-9]*)\\]$/\n\n// `bytes<M>`: binary type of `M` bytes, `0 < M <= 32`\n// https://regexr.com/6va55\nexport const bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/\n\n// `(u)int<M>`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n// https://regexr.com/6v8hp\nexport const integerRegex =\n /^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/\n","import type { TypedData, TypedDataDomain, TypedDataParameter } from 'abitype'\n\nimport { BytesSizeMismatchError } from '../errors/abi.js'\nimport { InvalidAddressError } from '../errors/address.js'\nimport {\n InvalidPrimaryTypeError,\n InvalidStructTypeError,\n} from '../errors/typedData.js'\nimport type { ErrorType } from '../errors/utils.js'\nimport type { Hex } from '../types/misc.js'\nimport type { TypedDataDefinition } from '../types/typedData.js'\nimport { type IsAddressErrorType, isAddress } from './address/isAddress.js'\nimport { type SizeErrorType, size } from './data/size.js'\nimport { type NumberToHexErrorType, numberToHex } from './encoding/toHex.js'\nimport { bytesRegex, integerRegex } from './regex.js'\nimport {\n type HashDomainErrorType,\n hashDomain,\n} from './signature/hashTypedData.js'\nimport { stringify } from './stringify.js'\n\nexport type SerializeTypedDataErrorType =\n | HashDomainErrorType\n | IsAddressErrorType\n | NumberToHexErrorType\n | SizeErrorType\n | ErrorType\n\nexport function serializeTypedData<\n const typedData extends TypedData | Record<string, unknown>,\n primaryType extends keyof typedData | 'EIP712Domain',\n>(parameters: TypedDataDefinition<typedData, primaryType>) {\n const {\n domain: domain_,\n message: message_,\n primaryType,\n types,\n } = parameters as unknown as TypedDataDefinition\n\n const normalizeData = (\n struct: readonly TypedDataParameter[],\n data_: Record<string, unknown>,\n ) => {\n const data = { ...data_ }\n for (const param of struct) {\n const { name, type } = param\n if (type === 'address') data[name] = (data[name] as string).toLowerCase()\n }\n return data\n }\n\n const domain = (() => {\n if (!types.EIP712Domain) return {}\n if (!domain_) return {}\n return normalizeData(types.EIP712Domain, domain_)\n })()\n\n const message = (() => {\n if (primaryType === 'EIP712Domain') return undefined\n return normalizeData(types[primaryType], message_)\n })()\n\n return stringify({ domain, message, primaryType, types })\n}\n\nexport type ValidateTypedDataErrorType =\n | HashDomainErrorType\n | IsAddressErrorType\n | NumberToHexErrorType\n | SizeErrorType\n | ErrorType\n\nexport function validateTypedData<\n const typedData extends TypedData | Record<string, unknown>,\n primaryType extends keyof typedData | 'EIP712Domain',\n>(parameters: TypedDataDefinition<typedData, primaryType>) {\n const { domain, message, primaryType, types } =\n parameters as unknown as TypedDataDefinition\n\n const validateData = (\n struct: readonly TypedDataParameter[],\n data: Record<string, unknown>,\n ) => {\n for (const param of struct) {\n const { name, type } = param\n const value = data[name]\n\n const integerMatch = type.match(integerRegex)\n if (\n integerMatch &&\n (typeof value === 'number' || typeof value === 'bigint')\n ) {\n const [_type, base, size_] = integerMatch\n // If number cannot be cast to a sized hex value, it is out of range\n // and will throw.\n numberToHex(value, {\n signed: base === 'int',\n size: Number.parseInt(size_) / 8,\n })\n }\n\n if (type === 'address' && typeof value === 'string' && !isAddress(value))\n throw new InvalidAddressError({ address: value })\n\n const bytesMatch = type.match(bytesRegex)\n if (bytesMatch) {\n const [_type, size_] = bytesMatch\n if (size_ && size(value as Hex) !== Number.parseInt(size_))\n throw new BytesSizeMismatchError({\n expectedSize: Number.parseInt(size_),\n givenSize: size(value as Hex),\n })\n }\n\n const struct = types[type]\n if (struct) {\n validateReference(type)\n validateData(struct, value as Record<string, unknown>)\n }\n }\n }\n\n // Validate domain types.\n if (types.EIP712Domain && domain) validateData(types.EIP712Domain, domain)\n\n // Validate message types.\n if (primaryType !== 'EIP712Domain') {\n if (types[primaryType]) validateData(types[primaryType], message)\n else throw new InvalidPrimaryTypeError({ primaryType, types })\n }\n}\n\nexport type GetTypesForEIP712DomainErrorType = ErrorType\n\nexport function getTypesForEIP712Domain({\n domain,\n}: { domain?: TypedDataDomain | undefined }): TypedDataParameter[] {\n return [\n typeof domain?.name === 'string' && { name: 'name', type: 'string' },\n domain?.version && { name: 'version', type: 'string' },\n typeof domain?.chainId === 'number' && {\n name: 'chainId',\n type: 'uint256',\n },\n domain?.verifyingContract && {\n name: 'verifyingContract',\n type: 'address',\n },\n domain?.salt && { name: 'salt', type: 'bytes32' },\n ].filter(Boolean) as TypedDataParameter[]\n}\n\nexport type DomainSeparatorErrorType =\n | GetTypesForEIP712DomainErrorType\n | HashDomainErrorType\n | ErrorType\n\nexport function domainSeparator({ domain }: { domain: TypedDataDomain }): Hex {\n return hashDomain({\n domain,\n types: {\n EIP712Domain: getTypesForEIP712Domain({ domain }),\n },\n })\n}\n\n/** @internal */\nfunction validateReference(type: string) {\n // Struct type must not be a Solidity type.\n if (\n type === 'address' ||\n type === 'bool' ||\n type === 'string' ||\n type.startsWith('bytes') ||\n type.startsWith('uint') ||\n type.startsWith('int')\n )\n throw new InvalidStructTypeError({ type })\n}\n","const size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import { etherUnits } from '../../constants/unit.js'\n\nimport { type FormatUnitsErrorType, formatUnits } from './formatUnits.js'\n\nexport type FormatEtherErrorType = FormatUnitsErrorType\n\n/**\n * Converts numerical wei to a string representation of ether.\n *\n * - Docs: https://viem.sh/docs/utilities/formatEther\n *\n * @example\n * import { formatEther } from 'viem'\n *\n * formatEther(1000000000000000000n)\n * // '1'\n */\nexport function formatEther(wei: bigint, unit: 'wei' | 'gwei' = 'wei') {\n return formatUnits(wei, etherUnits[unit])\n}\n","import { gweiUnits } from '../../constants/unit.js'\n\nimport { type FormatUnitsErrorType, formatUnits } from './formatUnits.js'\n\nexport type FormatGweiErrorType = FormatUnitsErrorType\n\n/**\n * Converts numerical wei to a string representation of gwei.\n *\n * - Docs: https://viem.sh/docs/utilities/formatGwei\n *\n * @example\n * import { formatGwei } from 'viem'\n *\n * formatGwei(1000000000n)\n * // '1'\n */\nexport function formatGwei(wei: bigint, unit: 'wei' = 'wei') {\n return formatUnits(wei, gweiUnits[unit])\n}\n","import type { ErrorType } from '../../errors/utils.js'\n\nexport type FormatUnitsErrorType = ErrorType\n\n/**\n * Divides a number by a given exponent of base 10 (10exponent), and formats it into a string representation of the number..\n *\n * - Docs: https://viem.sh/docs/utilities/formatUnits\n *\n * @example\n * import { formatUnits } from 'viem'\n *\n * formatUnits(420000000000n, 9)\n * // '420'\n */\nexport function formatUnits(value: bigint, decimals: number) {\n let display = value.toString()\n\n const negative = display.startsWith('-')\n if (negative) display = display.slice(1)\n\n display = display.padStart(decimals, '0')\n\n let [integer, fraction] = [\n display.slice(0, display.length - decimals),\n display.slice(display.length - decimals),\n ]\n fraction = fraction.replace(/(0+)$/, '')\n return `${negative ? '-' : ''}${integer || '0'}${\n fraction ? `.${fraction}` : ''\n }`\n}\n","export async function wait(time: number) {\n return new Promise((res) => setTimeout(res, time))\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"53\":\"2d13d149\",\"54\":\"94c8149f\",\"176\":\"01122864\",\"436\":\"98e7b47d\",\"704\":\"3d9fa974\",\"764\":\"df25c166\",\"1160\":\"76246279\",\"1204\":\"68360cf5\",\"1280\":\"3fd52015\",\"1592\":\"0b2886aa\",\"1713\":\"e19404b6\",\"1765\":\"6d542652\",\"1846\":\"8542bfc2\",\"2131\":\"5bc5cfe4\",\"2176\":\"90368e5c\",\"2217\":\"f79fa779\",\"2219\":\"815d1950\",\"2266\":\"3fc43b1a\",\"2294\":\"ff764ace\",\"2330\":\"6cbccb23\",\"2367\":\"1e53b5de\",\"2530\":\"e10edf99\",\"2586\":\"c19b39a7\",\"2649\":\"95c74dfe\",\"2754\":\"fc50bcb3\",\"2898\":\"dc2b409e\",\"2923\":\"b80f5a3b\",\"3088\":\"e6582a40\",\"3420\":\"a66cc262\",\"3522\":\"b4c0f301\",\"3536\":\"0eb7b67a\",\"3683\":\"a4d53bd9\",\"3930\":\"3a37e911\",\"3949\":\"f437c24c\",\"4078\":\"f38a37e6\",\"4237\":\"b7f0ce77\",\"4432\":\"e7d73470\",\"4488\":\"54d4b20f\",\"4493\":\"997624a6\",\"4504\":\"bdac618c\",\"4593\":\"05d3115e\",\"4648\":\"31ded6b5\",\"4946\":\"918ba60c\",\"4974\":\"6cb44a88\",\"4988\":\"63977401\",\"5003\":\"6041c13f\",\"5054\":\"7424ad34\",\"5269\":\"c46b883c\",\"5280\":\"93eed452\",\"5292\":\"7793d72b\",\"5325\":\"990df948\",\"5533\":\"3f4e1d4f\",\"5573\":\"0cd00177\",\"5704\":\"71f47d18\",\"5884\":\"7e8ef4c0\",\"5888\":\"9d6f30d7\",\"6080\":\"c6eaacb4\",\"6339\":\"3cbb8c30\",\"6422\":\"1a79f577\",\"6608\":\"f2887a76\",\"7055\":\"74655a02\",\"7147\":\"a99ff204\",\"7162\":\"b0dc9ee7\",\"7171\":\"4732f1c6\",\"7206\":\"5c1e0a47\",\"7243\":\"9ff65b74\",\"7260\":\"6b4739f7\",\"7339\":\"c4b8ebc5\",\"7391\":\"b18b67db\",\"7424\":\"7929e6f7\",\"7547\":\"385743d8\",\"7607\":\"e3c1d5f3\",\"7855\":\"6c3ac751\",\"8148\":\"f66e70b8\",\"8522\":\"46700c72\",\"8838\":\"1100e690\",\"8903\":\"f45765fd\",\"9126\":\"d2576693\",\"9350\":\"e38c4646\",\"9492\":\"0fc9515a\",\"9493\":\"0db0a704\",\"9577\":\"33939525\",\"9634\":\"7e135196\",\"9700\":\"a901fad7\",\"9795\":\"696b04c4\",\"9849\":\"23908c52\",\"9924\":\"a5d96f29\",\"9938\":\"2f3ed1c8\",\"9963\":\"89480d5e\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + chunkId + \".\" + {\"2754\":\"b3772f8c\",\"4735\":\"98c2cd3a\",\"4974\":\"19a55b15\",\"7547\":\"456610f1\",\"7607\":\"d0c4b8e1\",\"9938\":\"d0c4b8e1\"}[chunkId] + \".chunk.css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"app:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t8792: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"2754\":1,\"4735\":1,\"4974\":1,\"7547\":1,\"7607\":1,\"9938\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(4735 != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkapp\"] = self[\"webpackChunkapp\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","import type {\n Client,\n Event,\n EventHint,\n Integration,\n IntegrationClass,\n IntegrationFn,\n IntegrationFnResult,\n Options,\n} from '@sentry/types';\nimport { arrayify, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { addGlobalEventProcessor } from './eventProcessors';\nimport { getClient } from './exports';\nimport { getCurrentHub } from './hub';\n\ndeclare module '@sentry/types' {\n interface Integration {\n isDefaultInstance?: boolean;\n }\n}\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n};\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preseve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n const integrationsByName: { [key: string]: Integration } = {};\n\n integrations.forEach(currentInstance => {\n const { name } = currentInstance;\n\n const existingInstance = integrationsByName[name];\n\n // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n // default instance to overwrite an existing user instance\n if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n return;\n }\n\n integrationsByName[name] = currentInstance;\n });\n\n return Object.keys(integrationsByName).map(k => integrationsByName[k]);\n}\n\n/** Gets integrations to install */\nexport function getIntegrationsToSetup(options: Pick<Options, 'defaultIntegrations' | 'integrations'>): Integration[] {\n const defaultIntegrations = options.defaultIntegrations || [];\n const userIntegrations = options.integrations;\n\n // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n defaultIntegrations.forEach(integration => {\n integration.isDefaultInstance = true;\n });\n\n let integrations: Integration[];\n\n if (Array.isArray(userIntegrations)) {\n integrations = [...defaultIntegrations, ...userIntegrations];\n } else if (typeof userIntegrations === 'function') {\n integrations = arrayify(userIntegrations(defaultIntegrations));\n } else {\n integrations = defaultIntegrations;\n }\n\n const finalIntegrations = filterDuplicates(integrations);\n\n // The `Debug` integration prints copies of the `event` and `hint` which will be passed to `beforeSend` or\n // `beforeSendTransaction`. It therefore has to run after all other integrations, so that the changes of all event\n // processors will be reflected in the printed values. For lack of a more elegant way to guarantee that, we therefore\n // locate it and, assuming it exists, pop it out of its current spot and shove it onto the end of the array.\n const debugIndex = findIndex(finalIntegrations, integration => integration.name === 'Debug');\n if (debugIndex !== -1) {\n const [debugInstance] = finalIntegrations.splice(debugIndex, 1);\n finalIntegrations.push(debugInstance);\n }\n\n return finalIntegrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(client: Client, integrations: Integration[]): IntegrationIndex {\n const integrationIndex: IntegrationIndex = {};\n\n integrations.forEach(integration => {\n // guard against empty provided integrations\n if (integration) {\n setupIntegration(client, integration, integrationIndex);\n }\n });\n\n return integrationIndex;\n}\n\n/**\n * Execute the `afterAllSetup` hooks of the given integrations.\n */\nexport function afterSetupIntegrations(client: Client, integrations: Integration[]): void {\n for (const integration of integrations) {\n // guard against empty provided integrations\n if (integration && integration.afterAllSetup) {\n integration.afterAllSetup(client);\n }\n }\n}\n\n/** Setup a single integration. */\nexport function setupIntegration(client: Client, integration: Integration, integrationIndex: IntegrationIndex): void {\n if (integrationIndex[integration.name]) {\n DEBUG_BUILD && logger.log(`Integration skipped because it was already installed: ${integration.name}`);\n return;\n }\n integrationIndex[integration.name] = integration;\n\n // `setupOnce` is only called the first time\n if (installedIntegrations.indexOf(integration.name) === -1) {\n // eslint-disable-next-line deprecation/deprecation\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n }\n\n // `setup` is run for each client\n if (integration.setup && typeof integration.setup === 'function') {\n integration.setup(client);\n }\n\n if (client.on && typeof integration.preprocessEvent === 'function') {\n const callback = integration.preprocessEvent.bind(integration) as typeof integration.preprocessEvent;\n client.on('preprocessEvent', (event, hint) => callback(event, hint, client));\n }\n\n if (client.addEventProcessor && typeof integration.processEvent === 'function') {\n const callback = integration.processEvent.bind(integration) as typeof integration.processEvent;\n\n const processor = Object.assign((event: Event, hint: EventHint) => callback(event, hint, client), {\n id: integration.name,\n });\n\n client.addEventProcessor(processor);\n }\n\n DEBUG_BUILD && logger.log(`Integration installed: ${integration.name}`);\n}\n\n/** Add an integration to the current hub's client. */\nexport function addIntegration(integration: Integration): void {\n const client = getClient();\n\n if (!client || !client.addIntegration) {\n DEBUG_BUILD && logger.warn(`Cannot add integration \"${integration.name}\" because no SDK Client is available.`);\n return;\n }\n\n client.addIntegration(integration);\n}\n\n// Polyfill for Array.findIndex(), which is not supported in ES5\nfunction findIndex<T>(arr: T[], callback: (item: T) => boolean): number {\n for (let i = 0; i < arr.length; i++) {\n if (callback(arr[i]) === true) {\n return i;\n }\n }\n\n return -1;\n}\n\n/**\n * Convert a new integration function to the legacy class syntax.\n * In v8, we can remove this and instead export the integration functions directly.\n *\n * @deprecated This will be removed in v8!\n */\nexport function convertIntegrationFnToClass<Fn extends IntegrationFn>(\n name: string,\n fn: Fn,\n): IntegrationClass<Integration> {\n return Object.assign(\n function ConvertedIntegration(...args: Parameters<Fn>): Integration {\n return fn(...args);\n },\n { id: name },\n ) as unknown as IntegrationClass<Integration>;\n}\n\n/**\n * Define an integration function that can be used to create an integration instance.\n * Note that this by design hides the implementation details of the integration, as they are considered internal.\n */\nexport function defineIntegration<Fn extends IntegrationFn>(fn: Fn): (...args: Parameters<Fn>) => IntegrationFnResult {\n return fn;\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { logger } from '../logger';\nimport { getFunctionName } from '../stacktrace';\n\nexport type InstrumentHandlerType = 'console' | 'dom' | 'fetch' | 'history' | 'xhr' | 'error' | 'unhandledrejection';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n// We keep the handlers globally\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Add a handler function. */\nexport function addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n (handlers[type] as InstrumentHandlerCallback[]).push(handler);\n}\n\n/**\n * Reset all instrumentation handlers.\n * This can be used by tests to ensure we have a clean slate of instrumentation handlers.\n */\nexport function resetInstrumentationHandlers(): void {\n Object.keys(handlers).forEach(key => {\n handlers[key as InstrumentHandlerType] = undefined;\n });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nexport function maybeInstrument(type: InstrumentHandlerType, instrumentFn: () => void): void {\n if (!instrumented[type]) {\n instrumentFn();\n instrumented[type] = true;\n }\n}\n\n/** Trigger handlers for a given instrumentation type. */\nexport function triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\n const typeHandlers = type && handlers[type];\n if (!typeHandlers) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { ConsoleLevel, HandlerDataConsole } from '@sentry/types';\n\nimport { CONSOLE_LEVELS, originalConsoleMethods } from '../logger';\nimport { fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\n/**\n * Add an instrumentation handler for when a console.xxx method is called.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addConsoleInstrumentationHandler(handler: (data: HandlerDataConsole) => void): void {\n const type = 'console';\n addHandler(type, handler);\n maybeInstrument(type, instrumentConsole);\n}\n\nfunction instrumentConsole(): void {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level: ConsoleLevel): void {\n if (!(level in GLOBAL_OBJ.console)) {\n return;\n }\n\n fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod: () => any): Function {\n originalConsoleMethods[level] = originalConsoleMethod;\n\n return function (...args: any[]): void {\n const handlerData: HandlerDataConsole = { args, level };\n triggerHandlers('console', handlerData);\n\n const log = originalConsoleMethods[level];\n log && log.apply(GLOBAL_OBJ.console, args);\n };\n });\n });\n}\n","/* eslint-disable deprecation/deprecation */\nimport type { Severity, SeverityLevel } from '@sentry/types';\n\n// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nexport const validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nexport function severityFromString(level: Severity | SeverityLevel | string): Severity {\n return severityLevelFromString(level) as Severity;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') as SeverityLevel;\n}\n","import {\n captureException,\n captureMessage,\n convertIntegrationFnToClass,\n defineIntegration,\n getClient,\n withScope,\n} from '@sentry/core';\nimport type { CaptureContext, Client, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\nimport {\n CONSOLE_LEVELS,\n GLOBAL_OBJ,\n addConsoleInstrumentationHandler,\n addExceptionMechanism,\n safeJoin,\n severityLevelFromString,\n} from '@sentry/utils';\n\ninterface CaptureConsoleOptions {\n levels?: string[];\n}\n\nconst INTEGRATION_NAME = 'CaptureConsole';\n\nconst _captureConsoleIntegration = ((options: CaptureConsoleOptions = {}) => {\n const levels = options.levels || CONSOLE_LEVELS;\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n setup(client) {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.includes(level)) {\n return;\n }\n\n consoleHandler(args, level);\n });\n },\n };\n}) satisfies IntegrationFn;\n\nexport const captureConsoleIntegration = defineIntegration(_captureConsoleIntegration);\n\n/**\n * Send Console API calls as Sentry Events.\n * @deprecated Use `captureConsoleIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const CaptureConsole = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n captureConsoleIntegration,\n) as IntegrationClass<Integration & { setup: (client: Client) => void }> & {\n new (options?: { levels?: string[] }): Integration;\n};\n\nfunction consoleHandler(args: unknown[], level: string): void {\n const captureContext: CaptureContext = {\n level: severityLevelFromString(level),\n extra: {\n arguments: args,\n },\n };\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n event.logger = 'console';\n\n addExceptionMechanism(event, {\n handled: false,\n type: 'console',\n });\n\n return event;\n });\n\n if (level === 'assert' && args[0] === false) {\n const message = `Assertion failed: ${safeJoin(args.slice(1), ' ') || 'console.assert'}`;\n scope.setExtra('arguments', args.slice(1));\n captureMessage(message, captureContext);\n return;\n }\n\n const error = args.find(arg => arg instanceof Error);\n if (level === 'error' && error) {\n captureException(error, captureContext);\n return;\n }\n\n const message = safeJoin(args, ' ');\n captureMessage(message, captureContext);\n });\n}\n","// https://github.com/alangpierce/sucrase/tree/265887868966917f3b924ce38dfad01fbab1329f\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2012-2018 various contributors (see AUTHORS)\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 all\n// 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 THE\n// SOFTWARE.\n\nimport type { GenericFunction } from './types';\n\n/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nexport function _optionalChain(ops: unknown[]): unknown {\n let lastAccessLHS: unknown = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i] as string;\n const fn = ops[i + 1] as (intermediateValue: unknown) => unknown;\n i += 2;\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n return;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args: unknown[]) => (value as GenericFunction).call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n// let lastAccessLHS = undefined;\n// let value = ops[0];\n// let i = 1;\n// while (i < ops.length) {\n// const op = ops[i];\n// const fn = ops[i + 1];\n// i += 2;\n// if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n// return undefined;\n// }\n// if (op === 'access' || op === 'optionalAccess') {\n// lastAccessLHS = value;\n// value = fn(value);\n// } else if (op === 'call' || op === 'optionalCall') {\n// value = fn((...args) => value.call(lastAccessLHS, ...args));\n// lastAccessLHS = undefined;\n// }\n// }\n// return value;\n// }\n","import type { Client, DsnComponents, Hub } from '@sentry/types';\n\n/**\n * Checks whether given url points to Sentry server\n * @param url url to verify\n *\n * TODO(v8): Remove Hub fallback type\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function isSentryRequestUrl(url: string, hubOrClient: Hub | Client | undefined): boolean {\n const client =\n hubOrClient && isHub(hubOrClient)\n ? // eslint-disable-next-line deprecation/deprecation\n hubOrClient.getClient()\n : hubOrClient;\n const dsn = client && client.getDsn();\n const tunnel = client && client.getOptions().tunnel;\n\n return checkDsn(url, dsn) || checkTunnel(url, tunnel);\n}\n\nfunction checkTunnel(url: string, tunnel: string | undefined): boolean {\n if (!tunnel) {\n return false;\n }\n\n return removeTrailingSlash(url) === removeTrailingSlash(tunnel);\n}\n\nfunction checkDsn(url: string, dsn: DsnComponents | undefined): boolean {\n return dsn ? url.includes(dsn.host) : false;\n}\n\nfunction removeTrailingSlash(str: string): string {\n return str[str.length - 1] === '/' ? str.slice(0, -1) : str;\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction isHub(hubOrClient: Hub | Client | undefined): hubOrClient is Hub {\n // eslint-disable-next-line deprecation/deprecation\n return (hubOrClient as Hub).getClient !== undefined;\n}\n","import type { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { consoleSandbox, logger } from './logger';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string\n */\nexport function dsnFromString(str: string): DsnComponents | undefined {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n // This should be logged to the console\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.error(`Invalid Sentry Dsn: ${str}`);\n });\n return undefined;\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn: DsnComponents): boolean {\n if (!DEBUG_BUILD) {\n return true;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents: ReadonlyArray<keyof DsnComponents> = ['protocol', 'publicKey', 'host', 'projectId'];\n const hasMissingRequiredComponent = requiredComponents.find(component => {\n if (!dsn[component]) {\n logger.error(`Invalid Sentry Dsn: ${component} missing`);\n return true;\n }\n return false;\n });\n\n if (hasMissingRequiredComponent) {\n return false;\n }\n\n if (!projectId.match(/^\\d+$/)) {\n logger.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n return false;\n }\n\n if (!isValidProtocol(protocol)) {\n logger.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n return false;\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n logger.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n return false;\n }\n\n return true;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nexport function makeDsn(from: DsnLike): DsnComponents | undefined {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n if (!components || !validateDsn(components)) {\n return undefined;\n }\n return components;\n}\n","import type {\n Attachment,\n AttachmentItem,\n BaseEnvelopeHeaders,\n BaseEnvelopeItemHeaders,\n DataCategory,\n DsnComponents,\n Envelope,\n EnvelopeItemType,\n Event,\n EventEnvelopeHeaders,\n SdkInfo,\n SdkMetadata,\n TextEncoderInternal,\n} from '@sentry/types';\n\nimport { dsnToString } from './dsn';\nimport { normalize } from './normalize';\nimport { dropUndefinedKeys } from './object';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function createEnvelope<E extends Envelope>(headers: E[0], items: E[1] = []): E {\n return [headers, items] as E;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function addItemToEnvelope<E extends Envelope>(envelope: E, newItem: E[1][number]): E {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] as unknown as E;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n *\n * If the callback returns true, the rest of the items will be skipped.\n */\nexport function forEachEnvelopeItem<E extends Envelope>(\n envelope: Envelope,\n callback: (envelopeItem: E[1][number], envelopeItemType: E[1][number][0]['type']) => boolean | void,\n): boolean {\n const envelopeItems = envelope[1];\n\n for (const envelopeItem of envelopeItems) {\n const envelopeItemType = envelopeItem[0].type;\n const result = callback(envelopeItem, envelopeItemType);\n\n if (result) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nexport function envelopeContainsItemType(envelope: Envelope, types: EnvelopeItemType[]): boolean {\n return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8.\n */\nfunction encodeUTF8(input: string, textEncoder?: TextEncoderInternal): Uint8Array {\n const utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nexport function serializeEnvelope(envelope: Envelope, textEncoder?: TextEncoderInternal): string | Uint8Array {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts: string | Uint8Array[] = JSON.stringify(envHeaders);\n\n function append(next: string | Uint8Array): void {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item;\n\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n if (typeof payload === 'string' || payload instanceof Uint8Array) {\n append(payload);\n } else {\n let stringifiedPayload: string;\n try {\n stringifiedPayload = JSON.stringify(payload);\n } catch (e) {\n // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.strinify()` still\n // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n // performance impact but in this case a performance hit is better than throwing.\n stringifiedPayload = JSON.stringify(normalize(payload));\n }\n append(stringifiedPayload);\n }\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\nexport interface TextDecoderInternal {\n decode(input?: Uint8Array): string;\n}\n\n/**\n * Parses an envelope\n */\nexport function parseEnvelope(\n env: string | Uint8Array,\n textEncoder: TextEncoderInternal,\n textDecoder: TextDecoderInternal,\n): Envelope {\n let buffer = typeof env === 'string' ? textEncoder.encode(env) : env;\n\n function readBinary(length: number): Uint8Array {\n const bin = buffer.subarray(0, length);\n // Replace the buffer with the remaining data excluding trailing newline\n buffer = buffer.subarray(length + 1);\n return bin;\n }\n\n function readJson<T>(): T {\n let i = buffer.indexOf(0xa);\n // If we couldn't find a newline, we must have found the end of the buffer\n if (i < 0) {\n i = buffer.length;\n }\n\n return JSON.parse(textDecoder.decode(readBinary(i))) as T;\n }\n\n const envelopeHeader = readJson<BaseEnvelopeHeaders>();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items: [any, any][] = [];\n\n while (buffer.length) {\n const itemHeader = readJson<BaseEnvelopeItemHeaders>();\n const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n }\n\n return [envelopeHeader, items];\n}\n\n/**\n * Creates attachment envelope items\n */\nexport function createAttachmentEnvelopeItem(\n attachment: Attachment,\n textEncoder?: TextEncoderInternal,\n): AttachmentItem {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP: Record<EnvelopeItemType, DataCategory> = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n profile: 'profile',\n replay_event: 'replay',\n replay_recording: 'replay',\n check_in: 'monitor',\n feedback: 'feedback',\n span: 'span',\n statsd: 'metric_bucket',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nexport function envelopeItemTypeToDataCategory(type: EnvelopeItemType): DataCategory {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\n/** Extracts the minimal SDK info from the metadata or an events */\nexport function getSdkMetadataForEnvelopeHeader(metadataOrEvent?: SdkMetadata | Event): SdkInfo | undefined {\n if (!metadataOrEvent || !metadataOrEvent.sdk) {\n return;\n }\n const { name, version } = metadataOrEvent.sdk;\n return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nexport function createEventEnvelopeHeaders(\n event: Event,\n sdkInfo: SdkInfo | undefined,\n tunnel: string | undefined,\n dsn?: DsnComponents,\n): EventEnvelopeHeaders {\n const dynamicSamplingContext = event.sdkProcessingMetadata && event.sdkProcessingMetadata.dynamicSamplingContext;\n return {\n event_id: event.event_id as string,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n ...(dynamicSamplingContext && {\n trace: dropUndefinedKeys({ ...dynamicSamplingContext }),\n }),\n };\n}\n","import type { ConsoleLevel } from '@sentry/types';\n\n/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n /** Display name of this error instance. */\n public name: string;\n\n public logLevel: ConsoleLevel;\n\n public constructor(public message: string, logLevel: ConsoleLevel = 'warn') {\n super(message);\n\n this.name = new.target.prototype.constructor.name;\n // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n // instances of `SentryError` fail `obj instanceof SentryError` checks.\n Object.setPrototypeOf(this, new.target.prototype);\n this.logLevel = logLevel;\n }\n}\n","import type { ClientOptions, DsnComponents, DsnLike, SdkInfo } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents): string {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents, sdkInfo: SdkInfo | undefined): string {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(\n dsn: DsnComponents,\n // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n // options: ClientOptions = {} as ClientOptions,\n tunnelOrOptions: string | ClientOptions = {} as ClientOptions,\n): string {\n // TODO (v8): Use this code instead\n // const { tunnel, _metadata = {} } = options;\n // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n const tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n const sdkInfo =\n typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n dsnLike: DsnLike,\n dialogOptions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n user?: { name?: string; email?: string };\n },\n): string {\n const dsn = makeDsn(dsnLike);\n if (!dsn) {\n return '';\n }\n\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'onClose') {\n continue;\n }\n\n if (key === 'user') {\n const user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n","import type { DsnComponents, MetricBucketItem, SdkMetadata, StatsdEnvelope, StatsdItem } from '@sentry/types';\nimport { createEnvelope, dsnToString } from '@sentry/utils';\nimport { serializeMetricBuckets } from './utils';\n\n/**\n * Create envelope from a metric aggregate.\n */\nexport function createMetricEnvelope(\n metricBucketItems: Array<MetricBucketItem>,\n dsn?: DsnComponents,\n metadata?: SdkMetadata,\n tunnel?: string,\n): StatsdEnvelope {\n const headers: StatsdEnvelope[0] = {\n sent_at: new Date().toISOString(),\n };\n\n if (metadata && metadata.sdk) {\n headers.sdk = {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n };\n }\n\n if (!!tunnel && dsn) {\n headers.dsn = dsnToString(dsn);\n }\n\n const item = createMetricEnvelopeItem(metricBucketItems);\n return createEnvelope<StatsdEnvelope>(headers, [item]);\n}\n\nfunction createMetricEnvelopeItem(metricBucketItems: MetricBucketItem[]): StatsdItem {\n const payload = serializeMetricBuckets(metricBucketItems);\n const metricHeaders: StatsdItem[0] = {\n type: 'statsd',\n length: payload.length,\n };\n return [metricHeaders, payload];\n}\n","import type { MeasurementUnit, MetricBucketItem, Primitive } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\nimport type { MetricType } from './types';\n\n/**\n * Generate bucket key from metric properties.\n */\nexport function getBucketKey(\n metricType: MetricType,\n name: string,\n unit: MeasurementUnit,\n tags: Record<string, string>,\n): string {\n const stringifiedTags = Object.entries(dropUndefinedKeys(tags)).sort((a, b) => a[0].localeCompare(b[0]));\n return `${metricType}${name}${unit}${stringifiedTags}`;\n}\n\n/* eslint-disable no-bitwise */\n/**\n * Simple hash function for strings.\n */\nexport function simpleHash(s: string): number {\n let rv = 0;\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i);\n rv = (rv << 5) - rv + c;\n rv &= rv;\n }\n return rv >>> 0;\n}\n/* eslint-enable no-bitwise */\n\n/**\n * Serialize metrics buckets into a string based on statsd format.\n *\n * Example of format:\n * metric.name@second:1:1.2|d|#a:value,b:anothervalue|T12345677\n * Segments:\n * name: metric.name\n * unit: second\n * value: [1, 1.2]\n * type of metric: d (distribution)\n * tags: { a: value, b: anothervalue }\n * timestamp: 12345677\n */\nexport function serializeMetricBuckets(metricBucketItems: MetricBucketItem[]): string {\n let out = '';\n for (const item of metricBucketItems) {\n const tagEntries = Object.entries(item.tags);\n const maybeTags = tagEntries.length > 0 ? `|#${tagEntries.map(([key, value]) => `${key}:${value}`).join(',')}` : '';\n out += `${item.name}@${item.unit}:${item.metric}|${item.metricType}${maybeTags}|T${item.timestamp}\\n`;\n }\n return out;\n}\n\n/** Sanitizes units */\nexport function sanitizeUnit(unit: string): string {\n return unit.replace(/[^\\w]+/gi, '_');\n}\n\n/** Sanitizes metric keys */\nexport function sanitizeMetricKey(key: string): string {\n return key.replace(/[^\\w\\-.]+/gi, '_');\n}\n\nfunction sanitizeTagKey(key: string): string {\n return key.replace(/[^\\w\\-./]+/gi, '');\n}\n\nconst tagValueReplacements: [string, string][] = [\n ['\\n', '\\\\n'],\n ['\\r', '\\\\r'],\n ['\\t', '\\\\t'],\n ['\\\\', '\\\\\\\\'],\n ['|', '\\\\u{7c}'],\n [',', '\\\\u{2c}'],\n];\n\nfunction getCharOrReplacement(input: string): string {\n for (const [search, replacement] of tagValueReplacements) {\n if (input === search) {\n return replacement;\n }\n }\n\n return input;\n}\n\nfunction sanitizeTagValue(value: string): string {\n return [...value].reduce((acc, char) => acc + getCharOrReplacement(char), '');\n}\n\n/**\n * Sanitizes tags.\n */\nexport function sanitizeTags(unsanitizedTags: Record<string, Primitive>): Record<string, string> {\n const tags: Record<string, string> = {};\n for (const key in unsanitizedTags) {\n if (Object.prototype.hasOwnProperty.call(unsanitizedTags, key)) {\n const sanitizedKey = sanitizeTagKey(key);\n tags[sanitizedKey] = sanitizeTagValue(String(unsanitizedTags[key]));\n }\n }\n return tags;\n}\n","/* eslint-disable max-lines */\nimport type {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n ClientOptions,\n DataCategory,\n DsnComponents,\n DynamicSamplingContext,\n Envelope,\n ErrorEvent,\n Event,\n EventDropReason,\n EventHint,\n EventProcessor,\n FeedbackEvent,\n Integration,\n IntegrationClass,\n MetricBucketItem,\n MetricsAggregator,\n Outcome,\n ParameterizedString,\n SdkMetadata,\n Session,\n SessionAggregates,\n Severity,\n SeverityLevel,\n StartSpanOptions,\n Transaction,\n TransactionEvent,\n Transport,\n TransportMakeRequestResponse,\n} from '@sentry/types';\nimport {\n SentryError,\n SyncPromise,\n addItemToEnvelope,\n checkOrSetAlreadyCaught,\n createAttachmentEnvelopeItem,\n isParameterizedString,\n isPlainObject,\n isPrimitive,\n isThenable,\n logger,\n makeDsn,\n rejectedSyncPromise,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { DEBUG_BUILD } from './debug-build';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport { getClient } from './exports';\nimport { getIsolationScope } from './hub';\nimport type { IntegrationIndex } from './integration';\nimport { afterSetupIntegrations } from './integration';\nimport { setupIntegration, setupIntegrations } from './integration';\nimport { createMetricEnvelope } from './metrics/envelope';\nimport type { Scope } from './scope';\nimport { updateSession } from './session';\nimport { getDynamicSamplingContextFromClient } from './tracing/dynamicSamplingContext';\nimport { prepareEvent } from './utils/prepareEvent';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient<NodeOptions> {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class BaseClient<O extends ClientOptions> implements Client<O> {\n /**\n * A reference to a metrics aggregator\n *\n * @experimental Note this is alpha API. It may experience breaking changes in the future.\n */\n public metricsAggregator?: MetricsAggregator;\n\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n protected readonly _transport?: Transport;\n\n /** Array of set up integrations. */\n protected _integrations: IntegrationIndex;\n\n /** Indicates whether this client's integrations have been set up. */\n protected _integrationsInitialized: boolean;\n\n /** Number of calls being processed */\n protected _numProcessing: number;\n\n protected _eventProcessors: EventProcessor[];\n\n /** Holds flushable */\n private _outcomes: { [key: string]: number };\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n private _hooks: Record<string, Function[]>;\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n protected constructor(options: O) {\n this._options = options;\n this._integrations = {};\n this._integrationsInitialized = false;\n this._numProcessing = 0;\n this._outcomes = {};\n this._hooks = {};\n this._eventProcessors = [];\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n } else {\n DEBUG_BUILD && logger.warn('No DSN provided, client will not send events.');\n }\n\n if (this._dsn) {\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n this._transport = options.transport({\n tunnel: this._options.tunnel,\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(\n message: ParameterizedString,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n scope?: Scope,\n ): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n\n const eventMessage = isParameterizedString(message) ? message : String(message);\n\n const promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(eventMessage, level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanScope: Scope | undefined = sdkProcessingMetadata.capturedSpanScope;\n\n this._process(\n this._captureEvent(event, hint, capturedSpanScope || scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(session: Session): void {\n if (!(typeof session.release === 'string')) {\n DEBUG_BUILD && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * @see SdkMetadata in @sentry/types\n *\n * @return The metadata of the SDK\n */\n public getSdkMetadata(): SdkMetadata | undefined {\n return this._options._metadata;\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport | undefined {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n public flush(timeout?: number): PromiseLike<boolean> {\n const transport = this._transport;\n if (transport) {\n if (this.metricsAggregator) {\n this.metricsAggregator.flush();\n }\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike<boolean> {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n if (this.metricsAggregator) {\n this.metricsAggregator.close();\n }\n return result;\n });\n }\n\n /** Get all installed event processors. */\n public getEventProcessors(): EventProcessor[] {\n return this._eventProcessors;\n }\n\n /** @inheritDoc */\n public addEventProcessor(eventProcessor: EventProcessor): void {\n this._eventProcessors.push(eventProcessor);\n }\n\n /**\n * This is an internal function to setup all integrations that should run on the client.\n * @deprecated Use `client.init()` instead.\n */\n public setupIntegrations(forceInitialize?: boolean): void {\n if ((forceInitialize && !this._integrationsInitialized) || (this._isEnabled() && !this._integrationsInitialized)) {\n this._setupIntegrations();\n }\n }\n\n /** @inheritdoc */\n public init(): void {\n if (this._isEnabled()) {\n this._setupIntegrations();\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n * @deprecated Use `getIntegrationByName()` instead.\n */\n public getIntegrationById(integrationId: string): Integration | undefined {\n return this.getIntegrationByName(integrationId);\n }\n\n /**\n * Gets an installed integration by its name.\n *\n * @returns The installed integration or `undefined` if no integration with that `name` was installed.\n */\n public getIntegrationByName<T extends Integration = Integration>(integrationName: string): T | undefined {\n return this._integrations[integrationName] as T | undefined;\n }\n\n /**\n * Returns the client's instance of the given integration class, it any.\n * @deprecated Use `getIntegrationByName()` instead.\n */\n public getIntegration<T extends Integration>(integration: IntegrationClass<T>): T | null {\n try {\n return (this._integrations[integration.id] as T) || null;\n } catch (_oO) {\n DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public addIntegration(integration: Integration): void {\n const isAlreadyInstalled = this._integrations[integration.name];\n\n // This hook takes care of only installing if not already installed\n setupIntegration(this, integration, this._integrations);\n // Here we need to check manually to make sure to not run this multiple times\n if (!isAlreadyInstalled) {\n afterSetupIntegrations(this, [integration]);\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event, hint: EventHint = {}): void {\n this.emit('beforeSendEvent', event, hint);\n\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n const promise = this._sendEnvelope(env);\n if (promise) {\n promise.then(sendResponse => this.emit('afterSendEvent', event, sendResponse), null);\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session | SessionAggregates): void {\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(env);\n }\n\n /**\n * @inheritDoc\n */\n public recordDroppedEvent(reason: EventDropReason, category: DataCategory, eventOrCount?: Event | number): void {\n if (this._options.sendClientReports) {\n // TODO v9: We do not need the `event` passed as third argument anymore, and can possibly remove this overload\n // If event is passed as third argument, we assume this is a count of 1\n const count = typeof eventOrCount === 'number' ? eventOrCount : 1;\n\n // We want to track each category (error, transaction, session, replay_event) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial<Record<SentryRequestType, Partial<Record<Outcome, number>>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n DEBUG_BUILD && logger.log(`Recording outcome: \"${key}\"${count > 1 ? ` (${count} times)` : ''}`);\n this._outcomes[key] = (this._outcomes[key] || 0) + count;\n }\n }\n\n /**\n * @inheritDoc\n */\n public captureAggregateMetrics(metricBucketItems: Array<MetricBucketItem>): void {\n DEBUG_BUILD && logger.log(`Flushing aggregated metrics, number of metrics: ${metricBucketItems.length}`);\n const metricsEnvelope = createMetricEnvelope(\n metricBucketItems,\n this._dsn,\n this._options._metadata,\n this._options.tunnel,\n );\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(metricsEnvelope);\n }\n\n // Keep on() & emit() signatures in sync with types' client.ts interface\n /* eslint-disable @typescript-eslint/unified-signatures */\n\n /** @inheritdoc */\n public on(hook: 'startTransaction', callback: (transaction: Transaction) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'finishTransaction', callback: (transaction: Transaction) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'beforeEnvelope', callback: (envelope: Envelope) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'beforeSendEvent', callback: (event: Event, hint?: EventHint) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'preprocessEvent', callback: (event: Event, hint?: EventHint) => void): void;\n\n /** @inheritdoc */\n public on(\n hook: 'afterSendEvent',\n callback: (event: Event, sendResponse: TransportMakeRequestResponse | void) => void,\n ): void;\n\n /** @inheritdoc */\n public on(hook: 'beforeAddBreadcrumb', callback: (breadcrumb: Breadcrumb, hint?: BreadcrumbHint) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'createDsc', callback: (dsc: DynamicSamplingContext) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'otelSpanEnd', callback: (otelSpan: unknown, mutableOptions: { drop: boolean }) => void): void;\n\n /** @inheritdoc */\n public on(\n hook: 'beforeSendFeedback',\n callback: (feedback: FeedbackEvent, options?: { includeReplay: boolean }) => void,\n ): void;\n\n /** @inheritdoc */\n public on(hook: 'startPageLoadSpan', callback: (options: StartSpanOptions) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'startNavigationSpan', callback: (options: StartSpanOptions) => void): void;\n\n /** @inheritdoc */\n public on(hook: string, callback: unknown): void {\n if (!this._hooks[hook]) {\n this._hooks[hook] = [];\n }\n\n // @ts-expect-error We assue the types are correct\n this._hooks[hook].push(callback);\n }\n\n /** @inheritdoc */\n public emit(hook: 'startTransaction', transaction: Transaction): void;\n\n /** @inheritdoc */\n public emit(hook: 'finishTransaction', transaction: Transaction): void;\n\n /** @inheritdoc */\n public emit(hook: 'beforeEnvelope', envelope: Envelope): void;\n\n /** @inheritdoc */\n public emit(hook: 'beforeSendEvent', event: Event, hint?: EventHint): void;\n\n /** @inheritdoc */\n public emit(hook: 'preprocessEvent', event: Event, hint?: EventHint): void;\n\n /** @inheritdoc */\n public emit(hook: 'afterSendEvent', event: Event, sendResponse: TransportMakeRequestResponse | void): void;\n\n /** @inheritdoc */\n public emit(hook: 'beforeAddBreadcrumb', breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void;\n\n /** @inheritdoc */\n public emit(hook: 'createDsc', dsc: DynamicSamplingContext): void;\n\n /** @inheritdoc */\n public emit(hook: 'otelSpanEnd', otelSpan: unknown, mutableOptions: { drop: boolean }): void;\n\n /** @inheritdoc */\n public emit(hook: 'beforeSendFeedback', feedback: FeedbackEvent, options?: { includeReplay: boolean }): void;\n\n /** @inheritdoc */\n public emit(hook: 'startPageLoadSpan', options: StartSpanOptions): void;\n\n /** @inheritdoc */\n public emit(hook: 'startNavigationSpan', options: StartSpanOptions): void;\n\n /** @inheritdoc */\n public emit(hook: string, ...rest: unknown[]): void {\n if (this._hooks[hook]) {\n this._hooks[hook].forEach(callback => callback(...rest));\n }\n }\n\n /* eslint-enable @typescript-eslint/unified-signatures */\n\n /** Setup integrations for this client. */\n protected _setupIntegrations(): void {\n const { integrations } = this._options;\n this._integrations = setupIntegrations(this, integrations);\n afterSetupIntegrations(this, integrations);\n\n // TODO v8: We don't need this flag anymore\n this._integrationsInitialized = true;\n }\n\n /** Updates existing session based on the provided event */\n protected _updateSessionFromEvent(session: Session, event: Event): void {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n protected _isClientDoneProcessing(timeout?: number): PromiseLike<boolean> {\n return new SyncPromise(resolve => {\n let ticked: number = 0;\n const tick: number = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a transport is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._transport !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(\n event: Event,\n hint: EventHint,\n scope?: Scope,\n isolationScope = getIsolationScope(),\n ): PromiseLike<Event | null> {\n const options = this.getOptions();\n const integrations = Object.keys(this._integrations);\n if (!hint.integrations && integrations.length > 0) {\n hint.integrations = integrations;\n }\n\n this.emit('preprocessEvent', event, hint);\n\n return prepareEvent(options, event, hint, scope, this, isolationScope).then(evt => {\n if (evt === null) {\n return evt;\n }\n\n const propagationContext = {\n ...isolationScope.getPropagationContext(),\n ...(scope ? scope.getPropagationContext() : undefined),\n };\n\n const trace = evt.contexts && evt.contexts.trace;\n if (!trace && propagationContext) {\n const { traceId: trace_id, spanId, parentSpanId, dsc } = propagationContext;\n evt.contexts = {\n trace: {\n trace_id,\n span_id: spanId,\n parent_span_id: parentSpanId,\n },\n ...evt.contexts,\n };\n\n const dynamicSamplingContext = dsc ? dsc : getDynamicSamplingContextFromClient(trace_id, this, scope);\n\n evt.sdkProcessingMetadata = {\n dynamicSamplingContext,\n ...evt.sdkProcessingMetadata,\n };\n }\n return evt;\n });\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n protected _captureEvent(event: Event, hint: EventHint = {}, scope?: Scope): PromiseLike<string | undefined> {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if (DEBUG_BUILD) {\n // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n // control flow, log just the message (no stack) as a log-level log.\n const sentryError = reason as SentryError;\n if (sentryError.logLevel === 'log') {\n logger.log(sentryError.message);\n } else {\n logger.warn(sentryError);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n protected _processEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike<Event> {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n const isTransaction = isTransactionEvent(event);\n const isError = isErrorEvent(event);\n const eventType = event.type || 'error';\n const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (isError && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n this.recordDroppedEvent('sample_rate', 'error', event);\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n 'log',\n ),\n );\n }\n\n const dataCategory: DataCategory = eventType === 'replay_event' ? 'replay' : eventType;\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanIsolationScope: Scope | undefined = sdkProcessingMetadata.capturedSpanIsolationScope;\n\n return this._prepareEvent(event, hint, scope, capturedSpanIsolationScope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', dataCategory, event);\n throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n }\n\n const isInternalException = hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n if (isInternalException) {\n return prepared;\n }\n\n const result = processBeforeSend(options, prepared, hint);\n return _validateBeforeSendResult(result, beforeSendLabel);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', dataCategory, event);\n if (isTransaction) {\n const spans = event.spans || [];\n // the transaction itself counts as one span, plus all the child spans that are added\n const spanCount = 1 + spans.length;\n this.recordDroppedEvent('before_send', 'span', spanCount);\n }\n throw new SentryError(`${beforeSendLabel} returned \\`null\\`, will not send event.`, 'log');\n }\n\n const session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n if (isTransaction) {\n const spanCountBefore =\n (processedEvent.sdkProcessingMetadata && processedEvent.sdkProcessingMetadata.spanCountBeforeProcessing) ||\n 0;\n const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0;\n\n const droppedSpanCount = spanCountBefore - spanCountAfter;\n if (droppedSpanCount > 0) {\n this.recordDroppedEvent('before_send', 'span', droppedSpanCount);\n }\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n protected _process<T>(promise: PromiseLike<T>): void {\n this._numProcessing++;\n void promise.then(\n value => {\n this._numProcessing--;\n return value;\n },\n reason => {\n this._numProcessing--;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n protected _sendEnvelope(envelope: Envelope): PromiseLike<void | TransportMakeRequestResponse> | void {\n this.emit('beforeEnvelope', envelope);\n\n if (this._isEnabled() && this._transport) {\n return this._transport.send(envelope).then(null, reason => {\n DEBUG_BUILD && logger.error('Error while sending event:', reason);\n });\n } else {\n DEBUG_BUILD && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n protected _clearOutcomes(): Outcome[] {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public abstract eventFromException(_exception: any, _hint?: EventHint): PromiseLike<Event>;\n\n /**\n * @inheritDoc\n */\n public abstract eventFromMessage(\n _message: ParameterizedString,\n // eslint-disable-next-line deprecation/deprecation\n _level?: Severity | SeverityLevel,\n _hint?: EventHint,\n ): PromiseLike<Event>;\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult: PromiseLike<Event | null> | Event | null,\n beforeSendLabel: string,\n): PromiseLike<Event | null> | Event | null {\n const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw new SentryError(invalidValueError);\n }\n return event;\n },\n e => {\n throw new SentryError(`${beforeSendLabel} rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw new SentryError(invalidValueError);\n }\n return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n): PromiseLike<Event | null> | Event | null {\n const { beforeSend, beforeSendTransaction } = options;\n\n if (isErrorEvent(event) && beforeSend) {\n return beforeSend(event, hint);\n }\n\n if (isTransactionEvent(event) && beforeSendTransaction) {\n if (event.spans) {\n // We store the # of spans before processing in SDK metadata,\n // so we can compare it afterwards to determine how many spans were dropped\n const spanCountBefore = event.spans.length;\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n spanCountBeforeProcessing: spanCountBefore,\n };\n }\n return beforeSendTransaction(event, hint);\n }\n\n return event;\n}\n\nfunction isErrorEvent(event: Event): event is ErrorEvent {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event: Event): event is TransactionEvent {\n return event.type === 'transaction';\n}\n\n/**\n * Add an event processor to the current client.\n * This event processor will run for all events processed by this client.\n */\nexport function addEventProcessor(callback: EventProcessor): void {\n const client = getClient();\n\n if (!client || !client.addEventProcessor) {\n return;\n }\n\n client.addEventProcessor(callback);\n}\n","// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataXhr, SentryWrappedXMLHttpRequest, WrappedFunction } from '@sentry/types';\n\nimport { isString } from '../is';\nimport { fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nexport const SENTRY_XHR_DATA_KEY = '__sentry_xhr_v3__';\n\n/**\n * Add an instrumentation handler for when an XHR request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addXhrInstrumentationHandler(handler: (data: HandlerDataXhr) => void): void {\n const type = 'xhr';\n addHandler(type, handler);\n maybeInstrument(type, instrumentXHR);\n}\n\n/** Exported only for tests. */\nexport function instrumentXHR(): void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (!(WINDOW as any).XMLHttpRequest) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen: () => void): () => void {\n return function (this: XMLHttpRequest & SentryWrappedXMLHttpRequest, ...args: any[]): void {\n const startTimestamp = Date.now();\n\n // open() should always be called with two or more arguments\n // But to be on the safe side, we actually validate this and bail out if we don't have a method & url\n const method = isString(args[0]) ? args[0].toUpperCase() : undefined;\n const url = parseUrl(args[1]);\n\n if (!method || !url) {\n return originalOpen.apply(this, args);\n }\n\n this[SENTRY_XHR_DATA_KEY] = {\n method,\n url,\n request_headers: {},\n };\n\n // if Sentry key appears in URL, don't capture it as a request\n if (method === 'POST' && url.match(/sentry_key/)) {\n this.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler: () => void = () => {\n // For whatever reason, this is not the same instance here as from the outer method\n const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n if (!xhrInfo) {\n return;\n }\n\n if (this.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = this.status;\n } catch (e) {\n /* do nothing */\n }\n\n const handlerData: HandlerDataXhr = {\n args: [method, url],\n endTimestamp: Date.now(),\n startTimestamp,\n xhr: this,\n };\n triggerHandlers('xhr', handlerData);\n }\n };\n\n if ('onreadystatechange' in this && typeof this.onreadystatechange === 'function') {\n fill(this, 'onreadystatechange', function (original: WrappedFunction): Function {\n return function (this: SentryWrappedXMLHttpRequest, ...readyStateArgs: any[]): void {\n onreadystatechangeHandler();\n return original.apply(this, readyStateArgs);\n };\n });\n } else {\n this.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n // Intercepting `setRequestHeader` to access the request headers of XHR instance.\n // This will only work for user/library defined headers, not for the default/browser-assigned headers.\n // Request cookies are also unavailable for XHR, as `Cookie` header can't be defined by `setRequestHeader`.\n fill(this, 'setRequestHeader', function (original: WrappedFunction): Function {\n return function (this: SentryWrappedXMLHttpRequest, ...setRequestHeaderArgs: unknown[]): void {\n const [header, value] = setRequestHeaderArgs;\n\n const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n if (xhrInfo && isString(header) && isString(value)) {\n xhrInfo.request_headers[header.toLowerCase()] = value;\n }\n\n return original.apply(this, setRequestHeaderArgs);\n };\n });\n\n return originalOpen.apply(this, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend: () => void): () => void {\n return function (this: XMLHttpRequest & SentryWrappedXMLHttpRequest, ...args: any[]): void {\n const sentryXhrData = this[SENTRY_XHR_DATA_KEY];\n\n if (!sentryXhrData) {\n return originalSend.apply(this, args);\n }\n\n if (args[0] !== undefined) {\n sentryXhrData.body = args[0];\n }\n\n const handlerData: HandlerDataXhr = {\n args: [sentryXhrData.method, sentryXhrData.url],\n startTimestamp: Date.now(),\n xhr: this,\n };\n triggerHandlers('xhr', handlerData);\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nfunction parseUrl(url: string | unknown): string | undefined {\n if (isString(url)) {\n return url;\n }\n\n try {\n // url can be a string or URL\n // but since URL is not available in IE11, we do not check for it,\n // but simply assume it is an URL and return `toString()` from it (which returns the full URL)\n // If that fails, we just return undefined\n return (url as URL).toString();\n } catch {} // eslint-disable-line no-empty\n\n return undefined;\n}\n","import { DEBUG_BUILD } from './debug-build';\nimport { logger } from './logger';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject<Window>();\n\ndeclare const EdgeRuntime: string | undefined;\n\nexport { supportsHistory } from './vendor/supportsHistory';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-expect-error It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch(): boolean {\n if (!('fetch' in WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n new Request('http://www.example.com');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func: Function): boolean {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n if (typeof EdgeRuntime === 'string') {\n return true;\n }\n\n if (!supportsFetch()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(WINDOW.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement as unknown) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n DEBUG_BUILD &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy(): boolean {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataFetch } from '@sentry/types';\n\nimport { fill } from '../object';\nimport { supportsNativeFetch } from '../supports';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\ntype FetchResource = string | { toString(): string } | { url: string };\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addFetchInstrumentationHandler(handler: (data: HandlerDataFetch) => void): void {\n const type = 'fetch';\n addHandler(type, handler);\n maybeInstrument(type, instrumentFetch);\n}\n\nfunction instrumentFetch(): void {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(GLOBAL_OBJ, 'fetch', function (originalFetch: () => void): () => void {\n return function (...args: any[]): void {\n const { method, url } = parseFetchArgs(args);\n\n const handlerData: HandlerDataFetch = {\n args,\n fetchData: {\n method,\n url,\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(GLOBAL_OBJ, args).then(\n (response: Response) => {\n const finishedHandlerData: HandlerDataFetch = {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n };\n\n triggerHandlers('fetch', finishedHandlerData);\n return response;\n },\n (error: Error) => {\n const erroredHandlerData: HandlerDataFetch = {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n };\n\n triggerHandlers('fetch', erroredHandlerData);\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\nfunction hasProp<T extends string>(obj: unknown, prop: T): obj is Record<string, string> {\n return !!obj && typeof obj === 'object' && !!(obj as Record<string, string>)[prop];\n}\n\nfunction getUrlFromResource(resource: FetchResource): string {\n if (typeof resource === 'string') {\n return resource;\n }\n\n if (!resource) {\n return '';\n }\n\n if (hasProp(resource, 'url')) {\n return resource.url;\n }\n\n if (resource.toString) {\n return resource.toString();\n }\n\n return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request.\n * Exported for tests only.\n */\nexport function parseFetchArgs(fetchArgs: unknown[]): { method: string; url: string } {\n if (fetchArgs.length === 0) {\n return { method: 'GET', url: '' };\n }\n\n if (fetchArgs.length === 2) {\n const [url, options] = fetchArgs as [FetchResource, object];\n\n return {\n url: getUrlFromResource(url),\n method: hasProp(options, 'method') ? String(options.method).toUpperCase() : 'GET',\n };\n }\n\n const arg = fetchArgs[0];\n return {\n url: getUrlFromResource(arg as FetchResource),\n method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n };\n}\n","// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataDom } from '@sentry/types';\n\nimport { uuid4 } from '../misc';\nimport { addNonEnumerableProperty, fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\ntype SentryWrappedTarget = HTMLElement & { _sentryId?: string };\n\ntype AddEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n) => void;\ntype RemoveEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n) => void;\n\ntype InstrumentedElement = Element & {\n __sentry_instrumentation_handlers__?: {\n [key in 'click' | 'keypress']?: {\n handler?: Function;\n /** The number of custom listeners attached to this element */\n refCount: number;\n };\n };\n};\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\nconst DEBOUNCE_DURATION = 1000;\n\nlet debounceTimerID: number | undefined;\nlet lastCapturedEventType: string | undefined;\nlet lastCapturedEventTargetId: string | undefined;\n\n/**\n * Add an instrumentation handler for when a click or a keypress happens.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addClickKeypressInstrumentationHandler(handler: (data: HandlerDataDom) => void): void {\n const type = 'dom';\n addHandler(type, handler);\n maybeInstrument(type, instrumentDOM);\n}\n\n/** Exported for tests only. */\nexport function instrumentDOM(): void {\n if (!WINDOW.document) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = (WINDOW as any)[target] && (WINDOW as any)[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener: AddEventListener): AddEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): AddEventListener {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount++;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener: RemoveEventListener): RemoveEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = el.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount--;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\n/**\n * Check whether the event is similar to the last captured one. For example, two click events on the same button.\n */\nfunction isSimilarToLastCapturedEvent(event: Event): boolean {\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (event.type !== lastCapturedEventType) {\n return false;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (!event.target || (event.target as SentryWrappedTarget)._sentryId !== lastCapturedEventTargetId) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return true;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(eventType: string, target: SentryWrappedTarget | null): boolean {\n // We are only interested in filtering `keypress` events for now.\n if (eventType !== 'keypress') {\n return false;\n }\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n */\nfunction makeDOMEventHandler(\n handler: (data: HandlerDataDom) => void,\n globalListener: boolean = false,\n): (event: Event) => void {\n return (event: Event & { _sentryCaptured?: true }): void => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || event['_sentryCaptured']) {\n return;\n }\n\n const target = getEventTarget(event);\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event.type, target)) {\n return;\n }\n\n // Mark event as \"seen\"\n addNonEnumerableProperty(event, '_sentryCaptured', true);\n\n if (target && !target._sentryId) {\n // Add UUID to event target so we can identify if\n addNonEnumerableProperty(target, '_sentryId', uuid4());\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no last captured event, it means that we can safely capture the new event and store it for future comparisons.\n // If there is a last captured event, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n if (!isSimilarToLastCapturedEvent(event)) {\n const handlerData: HandlerDataDom = { event, name, global: globalListener };\n handler(handlerData);\n lastCapturedEventType = event.type;\n lastCapturedEventTargetId = target ? target._sentryId : undefined;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = WINDOW.setTimeout(() => {\n lastCapturedEventTargetId = undefined;\n lastCapturedEventType = undefined;\n }, DEBOUNCE_DURATION);\n };\n}\n\nfunction getEventTarget(event: Event): SentryWrappedTarget | null {\n try {\n return event.target as SentryWrappedTarget | null;\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n return null;\n }\n}\n","// Based on https://github.com/angular/angular.js/pull/13945/files\n// The MIT License\n\n// Copyright (c) 2010-2016 Google, Inc. http://angularjs.org\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\nimport { getGlobalObject } from '../worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject<Window>();\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chromeVar = (WINDOW as any).chrome;\n const isChromePackagedApp = chromeVar && chromeVar.app && chromeVar.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n","// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataHistory } from '@sentry/types';\n\nimport { fill } from '../object';\nimport { supportsHistory } from '../supports';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nlet lastHref: string | undefined;\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addHistoryInstrumentationHandler(handler: (data: HandlerDataHistory) => void): void {\n const type = 'history';\n addHandler(type, handler);\n maybeInstrument(type, instrumentHistory);\n}\n\nfunction instrumentHistory(): void {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = WINDOW.onpopstate;\n WINDOW.onpopstate = function (this: WindowEventHandlers, ...args: any[]): any {\n const to = WINDOW.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n const handlerData: HandlerDataHistory = { from, to };\n triggerHandlers('history', handlerData);\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n return function (this: History, ...args: any[]): void {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n const handlerData: HandlerDataHistory = { from, to };\n triggerHandlers('history', handlerData);\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(WINDOW.history, 'pushState', historyReplacementFunction);\n fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n","import type { DataCategory, TransportMakeRequestResponse } from '@sentry/types';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record<string, number>;\n\nexport const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nexport function parseRetryAfterHeader(header: string, now: number = Date.now()): number {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nexport function disabledUntil(limits: RateLimits, dataCategory: DataCategory): number {\n return limits[dataCategory] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, dataCategory: DataCategory, now: number = Date.now()): boolean {\n return disabledUntil(limits, dataCategory) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nexport function updateRateLimits(\n limits: RateLimits,\n { statusCode, headers }: TransportMakeRequestResponse,\n now: number = Date.now(),\n): RateLimits {\n const updatedRateLimits: RateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n const retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n * <header>,<header>,..\n * where each <header> is of the form\n * <retry_after>: <categories>: <scope>: <reason_code>: <namespaces>\n * where\n * <retry_after> is a delay in seconds\n * <categories> is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * <category>;<category>;...\n * <scope> is what's being limited (org, project, or key) - ignored by SDK\n * <reason_code> is an arbitrary string like \"org_quota\" - ignored by SDK\n * <namespaces> Semicolon-separated list of metric namespace identifiers. Defines which namespace(s) will be affected.\n * Only present if rate limit applies to the metric_bucket data category.\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories, , , namespaces] = limit.split(':', 5);\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n if (category === 'metric_bucket') {\n // namespaces will be present when category === 'metric_bucket'\n if (!namespaces || namespaces.split(';').includes('custom')) {\n updatedRateLimits[category] = now + delay;\n }\n } else {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n","import { isNodeEnv } from './node';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/**\n * Returns true if we are in the browser.\n */\nexport function isBrowser(): boolean {\n // eslint-disable-next-line no-restricted-globals\n return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());\n}\n\ntype ElectronProcess = { type?: string };\n\n// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them\nfunction isElectronNodeRenderer(): boolean {\n return (\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (GLOBAL_OBJ as any).process !== undefined && ((GLOBAL_OBJ as any).process as ElectronProcess).type === 'renderer'\n );\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ &\n // document is not available in all browser environments (webworkers). We make it optional so you have to explicitly check for it\n Omit<Window, 'document'> &\n Partial<Pick<Window, 'document'>>;\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport type { NavigationTimingPolyfillEntry } from '../types';\n\nconst getNavigationEntryFromPerformanceTiming = (): NavigationTimingPolyfillEntry => {\n // eslint-disable-next-line deprecation/deprecation\n const timing = WINDOW.performance.timing;\n // eslint-disable-next-line deprecation/deprecation\n const type = WINDOW.performance.navigation.type;\n\n const navigationEntry: { [key: string]: number | string } = {\n entryType: 'navigation',\n startTime: 0,\n type: type == 2 ? 'back_forward' : type === 1 ? 'reload' : 'navigate',\n };\n\n for (const key in timing) {\n if (key !== 'navigationStart' && key !== 'toJSON') {\n // eslint-disable-next-line deprecation/deprecation\n navigationEntry[key] = Math.max((timing[key as keyof PerformanceTiming] as number) - timing.navigationStart, 0);\n }\n }\n return navigationEntry as unknown as NavigationTimingPolyfillEntry;\n};\n\nexport const getNavigationEntry = (): PerformanceNavigationTiming | NavigationTimingPolyfillEntry | undefined => {\n if (WINDOW.__WEB_VITALS_POLYFILL__) {\n return (\n WINDOW.performance &&\n ((performance.getEntriesByType && performance.getEntriesByType('navigation')[0]) ||\n getNavigationEntryFromPerformanceTiming())\n );\n } else {\n return WINDOW.performance && performance.getEntriesByType && performance.getEntriesByType('navigation')[0];\n }\n};\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const getActivationStart = (): number => {\n const navEntry = getNavigationEntry();\n return (navEntry && navEntry.activationStart) || 0;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\n\nexport interface OnHiddenCallback {\n (event: Event): void;\n}\n\nexport const onHidden = (cb: OnHiddenCallback, once?: boolean): void => {\n const onHiddenOrPageHide = (event: Event): void => {\n if (event.type === 'pagehide' || WINDOW.document!.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n\n if (WINDOW.document) {\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n }\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport { onHidden } from './onHidden';\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = (): void => {\n // If the document is hidden and not prerendering, assume it was always\n // hidden and the page was loaded in the background.\n if (WINDOW.document && WINDOW.document.visibilityState) {\n firstHiddenTime = WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n }\n};\n\nconst trackChanges = (): void => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nexport const getVisibilityWatcher = (): {\n readonly firstHiddenTime: number;\n} => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { FirstInputPolyfillEntry, NavigationTimingPolyfillEntry, PerformancePaintTiming } from '../types';\n\nexport interface PerformanceEntryHandler {\n (entry: PerformanceEntry): void;\n}\n\ninterface PerformanceEntryMap {\n event: PerformanceEventTiming[];\n paint: PerformancePaintTiming[];\n 'layout-shift': LayoutShift[];\n 'largest-contentful-paint': LargestContentfulPaint[];\n 'first-input': PerformanceEventTiming[] | FirstInputPolyfillEntry[];\n navigation: PerformanceNavigationTiming[] | NavigationTimingPolyfillEntry[];\n resource: PerformanceResourceTiming[];\n longtask: PerformanceEntry[];\n}\n\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nexport const observe = <K extends keyof PerformanceEntryMap>(\n type: K,\n callback: (entries: PerformanceEntryMap[K]) => void,\n opts?: PerformanceObserverInit,\n): PerformanceObserver | undefined => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n const po = new PerformanceObserver(list => {\n callback(list.getEntries() as PerformanceEntryMap[K]);\n });\n po.observe(\n Object.assign(\n {\n type,\n buffered: true,\n },\n opts || {},\n ) as PerformanceObserverInit,\n );\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../types';\nimport { bindReporter } from './lib/bindReporter';\nimport { getActivationStart } from './lib/getActivationStart';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport type { LCPMetric, ReportCallback, StopListening } from './types';\n\nconst reportedMetricIDs: Record<string, boolean> = {};\n\n/**\n * Calculates the [LCP](https://web.dev/lcp/) value for the current page and\n * calls the `callback` function once the value is ready (along with the\n * relevant `largest-contentful-paint` performance entry used to determine the\n * value). The reported value is a `DOMHighResTimeStamp`.\n */\nexport const onLCP = (onReport: ReportCallback): StopListening | undefined => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report: ReturnType<typeof bindReporter>;\n\n const handleEntries = (entries: LCPMetric['entries']): void => {\n const lastEntry = entries[entries.length - 1] as LargestContentfulPaint;\n if (lastEntry) {\n // The startTime attribute returns the value of the renderTime if it is\n // not 0, and the value of the loadTime otherwise. The activationStart\n // reference is used because LCP should be relative to page activation\n // rather than navigation start if the page was prerendered.\n const value = Math.max(lastEntry.startTime - getActivationStart(), 0);\n\n // Only report if the page wasn't hidden prior to LCP.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries = [lastEntry];\n report();\n }\n }\n };\n\n const po = observe('largest-contentful-paint', handleEntries);\n\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = (): void => {\n if (!reportedMetricIDs[metric.id]) {\n handleEntries(po.takeRecords() as LCPMetric['entries']);\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n if (WINDOW.document) {\n addEventListener(type, stopListening, { once: true, capture: true });\n }\n });\n\n onHidden(stopListening, true);\n\n return stopListening;\n }\n\n return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport type { Metric } from '../types';\nimport { generateUniqueID } from './generateUniqueID';\nimport { getActivationStart } from './getActivationStart';\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const initMetric = (name: Metric['name'], value?: number): Metric => {\n const navEntry = getNavigationEntry();\n let navigationType: Metric['navigationType'] = 'navigate';\n\n if (navEntry) {\n if ((WINDOW.document && WINDOW.document.prerendering) || getActivationStart() > 0) {\n navigationType = 'prerender';\n } else {\n navigationType = navEntry.type.replace(/_/g, '-') as Metric['navigationType'];\n }\n }\n\n return {\n name,\n value: typeof value === 'undefined' ? -1 : value,\n rating: 'good', // Will be updated if the value changes.\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n navigationType,\n };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nexport const generateUniqueID = (): string => {\n return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Metric, ReportCallback } from '../types';\n\nexport const bindReporter = (\n callback: ReportCallback,\n metric: Metric,\n reportAllChanges?: boolean,\n): ((forceReport?: boolean) => void) => {\n let prevValue: number;\n let delta: number;\n return (forceReport?: boolean) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (delta || prevValue === undefined) {\n prevValue = metric.value;\n metric.delta = delta;\n callback(metric);\n }\n }\n }\n };\n};\n","import { getFunctionName, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport { onCLS } from './web-vitals/getCLS';\nimport { onFID } from './web-vitals/getFID';\nimport { onINP } from './web-vitals/getINP';\nimport { onLCP } from './web-vitals/getLCP';\nimport { observe } from './web-vitals/lib/observe';\nimport { onTTFB } from './web-vitals/onTTFB';\n\ntype InstrumentHandlerTypePerformanceObserver =\n | 'longtask'\n | 'event'\n | 'navigation'\n | 'paint'\n | 'resource'\n | 'first-input';\n\ntype InstrumentHandlerTypeMetric = 'cls' | 'lcp' | 'fid' | 'ttfb' | 'inp';\n\n// We provide this here manually instead of relying on a global, as this is not available in non-browser environements\n// And we do not want to expose such types\ninterface PerformanceEntry {\n readonly duration: number;\n readonly entryType: string;\n readonly name: string;\n readonly startTime: number;\n toJSON(): Record<string, unknown>;\n}\ninterface PerformanceEventTiming extends PerformanceEntry {\n processingStart: number;\n processingEnd: number;\n duration: number;\n cancelable?: boolean;\n target?: unknown | null;\n interactionId?: number;\n}\n\ninterface Metric {\n /**\n * The name of the metric (in acronym form).\n */\n name: 'CLS' | 'FCP' | 'FID' | 'INP' | 'LCP' | 'TTFB';\n\n /**\n * The current value of the metric.\n */\n value: number;\n\n /**\n * The rating as to whether the metric value is within the \"good\",\n * \"needs improvement\", or \"poor\" thresholds of the metric.\n */\n rating: 'good' | 'needs-improvement' | 'poor';\n\n /**\n * The delta between the current value and the last-reported value.\n * On the first report, `delta` and `value` will always be the same.\n */\n delta: number;\n\n /**\n * A unique ID representing this particular metric instance. This ID can\n * be used by an analytics tool to dedupe multiple values sent for the same\n * metric instance, or to group multiple deltas together and calculate a\n * total. It can also be used to differentiate multiple different metric\n * instances sent from the same page, which can happen if the page is\n * restored from the back/forward cache (in that case new metrics object\n * get created).\n */\n id: string;\n\n /**\n * Any performance entries relevant to the metric value calculation.\n * The array may also be empty if the metric value was not based on any\n * entries (e.g. a CLS value of 0 given no layout shifts).\n */\n entries: PerformanceEntry[];\n\n /**\n * The type of navigation\n *\n * Navigation Timing API (or `undefined` if the browser doesn't\n * support that API). For pages that are restored from the bfcache, this\n * value will be 'back-forward-cache'.\n */\n navigationType: 'navigate' | 'reload' | 'back-forward' | 'back-forward-cache' | 'prerender';\n}\n\ntype InstrumentHandlerType = InstrumentHandlerTypeMetric | InstrumentHandlerTypePerformanceObserver;\n\ntype StopListening = undefined | void | (() => void);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype InstrumentHandlerCallback = (data: any) => void;\n\ntype CleanupHandlerCallback = () => void;\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\nlet _previousCls: Metric | undefined;\nlet _previousFid: Metric | undefined;\nlet _previousLcp: Metric | undefined;\nlet _previousTtfb: Metric | undefined;\nlet _previousInp: Metric | undefined;\n\n/**\n * Add a callback that will be triggered when a CLS metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n *\n * Pass `stopOnCallback = true` to stop listening for CLS when the cleanup callback is called.\n * This will lead to the CLS being finalized and frozen.\n */\nexport function addClsInstrumentationHandler(\n callback: (data: { metric: Metric }) => void,\n stopOnCallback = false,\n): CleanupHandlerCallback {\n return addMetricObserver('cls', callback, instrumentCls, _previousCls, stopOnCallback);\n}\n\n/**\n * Add a callback that will be triggered when a LCP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n *\n * Pass `stopOnCallback = true` to stop listening for LCP when the cleanup callback is called.\n * This will lead to the LCP being finalized and frozen.\n */\nexport function addLcpInstrumentationHandler(\n callback: (data: { metric: Metric }) => void,\n stopOnCallback = false,\n): CleanupHandlerCallback {\n return addMetricObserver('lcp', callback, instrumentLcp, _previousLcp, stopOnCallback);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n */\nexport function addTtfbInstrumentationHandler(callback: (data: { metric: Metric }) => void): CleanupHandlerCallback {\n return addMetricObserver('ttfb', callback, instrumentTtfb, _previousTtfb);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nexport function addFidInstrumentationHandler(callback: (data: { metric: Metric }) => void): CleanupHandlerCallback {\n return addMetricObserver('fid', callback, instrumentFid, _previousFid);\n}\n\n/**\n * Add a callback that will be triggered when a INP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nexport function addInpInstrumentationHandler(\n callback: (data: { metric: Omit<Metric, 'entries'> & { entries: PerformanceEventTiming[] } }) => void,\n): CleanupHandlerCallback {\n return addMetricObserver('inp', callback, instrumentInp, _previousInp);\n}\n\nexport function addPerformanceInstrumentationHandler(\n type: 'event' | 'first-input',\n callback: (data: { entries: ((PerformanceEntry & { target?: unknown | null }) | PerformanceEventTiming)[] }) => void,\n): CleanupHandlerCallback;\nexport function addPerformanceInstrumentationHandler(\n type: InstrumentHandlerTypePerformanceObserver,\n callback: (data: { entries: PerformanceEntry[] }) => void,\n): CleanupHandlerCallback;\n\n/**\n * Add a callback that will be triggered when a performance observer is triggered,\n * and receives the entries of the observer.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nexport function addPerformanceInstrumentationHandler(\n type: InstrumentHandlerTypePerformanceObserver,\n callback: (data: { entries: PerformanceEntry[] }) => void,\n): CleanupHandlerCallback {\n addHandler(type, callback);\n\n if (!instrumented[type]) {\n instrumentPerformanceObserver(type);\n instrumented[type] = true;\n }\n\n return getCleanupCallback(type, callback);\n}\n\n/** Trigger all handlers of a given type. */\nfunction triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\n const typeHandlers = handlers[type];\n\n if (!typeHandlers || !typeHandlers.length) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\nfunction instrumentCls(): StopListening {\n return onCLS(\n metric => {\n triggerHandlers('cls', {\n metric,\n });\n _previousCls = metric;\n },\n { reportAllChanges: true },\n );\n}\n\nfunction instrumentFid(): void {\n return onFID(metric => {\n triggerHandlers('fid', {\n metric,\n });\n _previousFid = metric;\n });\n}\n\nfunction instrumentLcp(): StopListening {\n return onLCP(metric => {\n triggerHandlers('lcp', {\n metric,\n });\n _previousLcp = metric;\n });\n}\n\nfunction instrumentTtfb(): StopListening {\n return onTTFB(metric => {\n triggerHandlers('ttfb', {\n metric,\n });\n _previousTtfb = metric;\n });\n}\n\nfunction instrumentInp(): void {\n return onINP(metric => {\n triggerHandlers('inp', {\n metric,\n });\n _previousInp = metric;\n });\n}\n\nfunction addMetricObserver(\n type: InstrumentHandlerTypeMetric,\n callback: InstrumentHandlerCallback,\n instrumentFn: () => StopListening,\n previousValue: Metric | undefined,\n stopOnCallback = false,\n): CleanupHandlerCallback {\n addHandler(type, callback);\n\n let stopListening: StopListening | undefined;\n\n if (!instrumented[type]) {\n stopListening = instrumentFn();\n instrumented[type] = true;\n }\n\n if (previousValue) {\n callback({ metric: previousValue });\n }\n\n return getCleanupCallback(type, callback, stopOnCallback ? stopListening : undefined);\n}\n\nfunction instrumentPerformanceObserver(type: InstrumentHandlerTypePerformanceObserver): void {\n const options: PerformanceObserverInit = {};\n\n // Special per-type options we want to use\n if (type === 'event') {\n options.durationThreshold = 0;\n }\n\n observe(\n type,\n entries => {\n triggerHandlers(type, { entries });\n },\n options,\n );\n}\n\nfunction addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n (handlers[type] as InstrumentHandlerCallback[]).push(handler);\n}\n\n// Get a callback which can be called to remove the instrumentation handler\nfunction getCleanupCallback(\n type: InstrumentHandlerType,\n callback: InstrumentHandlerCallback,\n stopListening: StopListening,\n): CleanupHandlerCallback {\n return () => {\n if (stopListening) {\n stopListening();\n }\n\n const typeHandlers = handlers[type];\n\n if (!typeHandlers) {\n return;\n }\n\n const index = typeHandlers.indexOf(callback);\n if (index !== -1) {\n typeHandlers.splice(index, 1);\n }\n };\n}\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\n// exporting a separate copy of `WINDOW` rather than exporting the one from `@sentry/browser`\n// prevents the browser package from being bundled in the CDN bundle, and avoids a\n// circular dependency between the browser and replay packages should `@sentry/browser` import\n// from `@sentry/replay` in the future\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n\nexport const REPLAY_SESSION_KEY = 'sentryReplaySession';\nexport const REPLAY_EVENT_NAME = 'replay_event';\nexport const RECORDING_EVENT_NAME = 'replay_recording';\nexport const UNABLE_TO_SEND_REPLAY = 'Unable to send Replay';\n\n// The idle limit for a session after which recording is paused.\nexport const SESSION_IDLE_PAUSE_DURATION = 300_000; // 5 minutes in ms\n\n// The idle limit for a session after which the session expires.\nexport const SESSION_IDLE_EXPIRE_DURATION = 900_000; // 15 minutes in ms\n\n/** Default flush delays */\nexport const DEFAULT_FLUSH_MIN_DELAY = 5_000;\n// XXX: Temp fix for our debounce logic where `maxWait` would never occur if it\n// was the same as `wait`\nexport const DEFAULT_FLUSH_MAX_DELAY = 5_500;\n\n/* How long to wait for error checkouts */\nexport const BUFFER_CHECKOUT_TIME = 60_000;\n\nexport const RETRY_BASE_INTERVAL = 5000;\nexport const RETRY_MAX_COUNT = 3;\n\n/* The max (uncompressed) size in bytes of a network body. Any body larger than this will be truncated. */\nexport const NETWORK_BODY_MAX_SIZE = 150_000;\n\n/* The max size of a single console arg that is captured. Any arg larger than this will be truncated. */\nexport const CONSOLE_ARG_MAX_SIZE = 5_000;\n\n/* Min. time to wait before we consider something a slow click. */\nexport const SLOW_CLICK_THRESHOLD = 3_000;\n/* For scroll actions after a click, we only look for a very short time period to detect programmatic scrolling. */\nexport const SLOW_CLICK_SCROLL_TIMEOUT = 300;\n\n/** When encountering a total segment size exceeding this size, stop the replay (as we cannot properly ingest it). */\nexport const REPLAY_MAX_EVENT_BUFFER_SIZE = 20_000_000; // ~20MB\n\n/** Replays must be min. 5s long before we send them. */\nexport const MIN_REPLAY_DURATION = 4_999;\n/* The max. allowed value that the minReplayDuration can be set to. */\nexport const MIN_REPLAY_DURATION_LIMIT = 15_000;\n\n/** The max. length of a replay. */\nexport const MAX_REPLAY_DURATION = 3_600_000; // 60 minutes in ms;\n\n/** Default attributes to be ignored when `maskAllText` is enabled */\nexport const DEFAULT_IGNORED_ATTRIBUTES = ['title', 'placeholder'];\n","var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n const host = n?.host;\r\n return Boolean(host?.shadowRoot === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction escapeImportStatement(rule) {\r\n const { cssText } = rule;\r\n if (cssText.split('\"').length < 3)\r\n return cssText;\r\n const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\r\n if (rule.layerName === '') {\r\n statement.push(`layer`);\r\n }\r\n else if (rule.layerName) {\r\n statement.push(`layer(${rule.layerName})`);\r\n }\r\n if (rule.supportsText) {\r\n statement.push(`supports(${rule.supportsText})`);\r\n }\r\n if (rule.media.length) {\r\n statement.push(rule.media.mediaText);\r\n }\r\n return statement.join(' ') + ';';\r\n}\r\nfunction stringifyStylesheet(s) {\r\n try {\r\n const rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules, stringifyRule).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction stringifyRule(rule) {\r\n let importStringified;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n importStringified =\r\n stringifyStylesheet(rule.styleSheet) ||\r\n escapeImportStatement(rule);\r\n }\r\n catch (error) {\r\n }\r\n }\r\n else if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\r\n return fixSafariColons(rule.cssText);\r\n }\r\n return importStringified || rule.cssText;\r\n}\r\nfunction fixSafariColons(cssStringified) {\r\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\r\n return cssStringified.replace(regex, '$1\\\\$2');\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nfunction isCSSStyleRule(rule) {\r\n return 'selectorText' in rule;\r\n}\r\nclass Mirror {\r\n constructor() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n getId(n) {\r\n if (!n)\r\n return -1;\r\n const id = this.getMeta(n)?.id;\r\n return id ?? -1;\r\n }\r\n getNode(id) {\r\n return this.idNodeMap.get(id) || null;\r\n }\r\n getIds() {\r\n return Array.from(this.idNodeMap.keys());\r\n }\r\n getMeta(n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n }\r\n removeNodeFromMap(n) {\r\n const id = this.getId(n);\r\n this.idNodeMap.delete(id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\r\n }\r\n }\r\n has(id) {\r\n return this.idNodeMap.has(id);\r\n }\r\n hasNode(node) {\r\n return this.nodeMetaMap.has(node);\r\n }\r\n add(n, meta) {\r\n const id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n replace(id, n) {\r\n const oldNode = this.getNode(id);\r\n if (oldNode) {\r\n const meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n }\r\n reset() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n}\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction shouldMaskInput({ maskInputOptions, tagName, type, }) {\r\n if (tagName === 'OPTION') {\r\n tagName = 'SELECT';\r\n }\r\n return Boolean(maskInputOptions[tagName.toLowerCase()] ||\r\n (type && maskInputOptions[type]) ||\r\n type === 'password' ||\r\n (tagName === 'INPUT' && !type && maskInputOptions['text']));\r\n}\r\nfunction maskInputValue({ isMasked, element, value, maskInputFn, }) {\r\n let text = value || '';\r\n if (!isMasked) {\r\n return text;\r\n }\r\n if (maskInputFn) {\r\n text = maskInputFn(text, element);\r\n }\r\n return '*'.repeat(text.length);\r\n}\r\nfunction toLowerCase(str) {\r\n return str.toLowerCase();\r\n}\r\nfunction toUpperCase(str) {\r\n return str.toUpperCase();\r\n}\r\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n const chunkSize = 50;\r\n for (let x = 0; x < canvas.width; x += chunkSize) {\r\n for (let y = 0; y < canvas.height; y += chunkSize) {\r\n const getImageData = ctx.getImageData;\r\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n const pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some((pixel) => pixel !== 0))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isNodeMetaEqual(a, b) {\r\n if (!a || !b || a.type !== b.type)\r\n return false;\r\n if (a.type === NodeType.Document)\r\n return a.compatMode === b.compatMode;\r\n else if (a.type === NodeType.DocumentType)\r\n return (a.name === b.name &&\r\n a.publicId === b.publicId &&\r\n a.systemId === b.systemId);\r\n else if (a.type === NodeType.Comment ||\r\n a.type === NodeType.Text ||\r\n a.type === NodeType.CDATA)\r\n return a.textContent === b.textContent;\r\n else if (a.type === NodeType.Element)\r\n return (a.tagName === b.tagName &&\r\n JSON.stringify(a.attributes) ===\r\n JSON.stringify(b.attributes) &&\r\n a.isSVG === b.isSVG &&\r\n a.needBlock === b.needBlock);\r\n return false;\r\n}\r\nfunction getInputType(element) {\r\n const type = element.type;\r\n return element.hasAttribute('data-rr-is-password')\r\n ? 'password'\r\n : type\r\n ?\r\n toLowerCase(type)\r\n : null;\r\n}\r\nfunction getInputValue(el, tagName, type) {\r\n if (tagName === 'INPUT' && (type === 'radio' || type === 'checkbox')) {\r\n return el.getAttribute('value') || '';\r\n }\r\n return el.value;\r\n}\n\nlet _id = 1;\r\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nconst IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n const processedTagName = toLowerCase(element.tagName);\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction extractOrigin(url) {\r\n let origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nlet canvasService;\r\nlet canvasCtx;\r\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\r\nconst URL_WWW_MATCH = /^www\\..*/i;\r\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\r\n const filePath = path1 || path2 || path3;\r\n const maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\r\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n }\r\n if (filePath[0] === '/') {\r\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\r\n }\r\n const stack = href.split('/');\r\n const parts = filePath.split('/');\r\n stack.pop();\r\n for (const part of parts) {\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\r\n });\r\n}\r\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n let pos = 0;\r\n function collectCharacters(regEx) {\r\n let chars;\r\n const match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n const output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n let url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n let descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n let inParens = false;\r\n while (true) {\r\n const c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n const a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n const a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value, element, maskAttributeFn) {\r\n if (!value) {\r\n return value;\r\n }\r\n if (name === 'src' ||\r\n (name === 'href' && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset') {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style') {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n if (typeof maskAttributeFn === 'function') {\r\n return maskAttributeFn(name, value, element);\r\n }\r\n return value;\r\n}\r\nfunction ignoreAttribute(tagName, name, _value) {\r\n return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector, unblockSelector) {\r\n try {\r\n if (unblockSelector && element.matches(unblockSelector)) {\r\n return false;\r\n }\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (let eIndex = element.classList.length; eIndex--;) {\r\n const className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return false;\r\n}\r\nfunction elementClassMatchesRegex(el, regex) {\r\n for (let eIndex = el.classList.length; eIndex--;) {\r\n const className = el.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction distanceToMatch(node, matchPredicate, limit = Infinity, distance = 0) {\r\n if (!node)\r\n return -1;\r\n if (node.nodeType !== node.ELEMENT_NODE)\r\n return -1;\r\n if (distance > limit)\r\n return -1;\r\n if (matchPredicate(node))\r\n return distance;\r\n return distanceToMatch(node.parentNode, matchPredicate, limit, distance + 1);\r\n}\r\nfunction createMatchPredicate(className, selector) {\r\n return (node) => {\r\n const el = node;\r\n if (el === null)\r\n return false;\r\n try {\r\n if (className) {\r\n if (typeof className === 'string') {\r\n if (el.matches(`.${className}`))\r\n return true;\r\n }\r\n else if (elementClassMatchesRegex(el, className)) {\r\n return true;\r\n }\r\n }\r\n if (selector && el.matches(selector))\r\n return true;\r\n return false;\r\n }\r\n catch {\r\n return false;\r\n }\r\n };\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText) {\r\n try {\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (el.tagName === 'INPUT') {\r\n const autocomplete = el.getAttribute('autocomplete');\r\n const disallowedAutocompleteValues = [\r\n 'current-password',\r\n 'new-password',\r\n 'cc-number',\r\n 'cc-exp',\r\n 'cc-exp-month',\r\n 'cc-exp-year',\r\n 'cc-csc',\r\n ];\r\n if (disallowedAutocompleteValues.includes(autocomplete)) {\r\n return true;\r\n }\r\n }\r\n let maskDistance = -1;\r\n let unmaskDistance = -1;\r\n if (maskAllText) {\r\n unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector));\r\n if (unmaskDistance < 0) {\r\n return true;\r\n }\r\n maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector), unmaskDistance >= 0 ? unmaskDistance : Infinity);\r\n }\r\n else {\r\n maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector));\r\n if (maskDistance < 0) {\r\n return false;\r\n }\r\n unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector), maskDistance >= 0 ? maskDistance : Infinity);\r\n }\r\n return maskDistance >= 0\r\n ? unmaskDistance >= 0\r\n ? maskDistance <= unmaskDistance\r\n : true\r\n : unmaskDistance >= 0\r\n ? false\r\n : !!maskAllText;\r\n }\r\n catch (e) {\r\n }\r\n return !!maskAllText;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n const win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n let fired = false;\r\n let readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n const timer = setTimeout(() => {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', () => {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n const blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n let fired = false;\r\n let styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n const timer = setTimeout(() => {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', () => {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskAttributeFn, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, inlineStylesheet, maskInputOptions = {}, maskTextFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, } = options;\r\n const rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode,\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId,\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n inlineStylesheet,\r\n maskAttributeFn,\r\n maskInputOptions,\r\n maskInputFn,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n keepIframeSrcFn,\r\n newlyAddedElement,\r\n rootId,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n maskTextFn,\r\n maskInputOptions,\r\n maskInputFn,\r\n rootId,\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId,\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId,\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n const docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n const { maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, maskTextFn, maskInputOptions, maskInputFn, rootId, } = options;\r\n const parentTagName = n.parentNode && n.parentNode.tagName;\r\n let textContent = n.textContent;\r\n const isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n const isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n const isTextarea = parentTagName === 'TEXTAREA' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if (n.parentNode.sheet?.cssRules) {\r\n textContent = stringifyStylesheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(`Cannot get CSS styles from text's parentNode. Error: ${err}`, n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n const forceMask = needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText);\r\n if (!isStyle && !isScript && !isTextarea && textContent && forceMask) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent, n.parentElement)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n if (isTextarea && textContent && (maskInputOptions.textarea || forceMask)) {\r\n textContent = maskInputFn\r\n ? maskInputFn(textContent, n.parentNode)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n if (parentTagName === 'OPTION' && textContent) {\r\n const isInputMasked = shouldMaskInput({\r\n type: null,\r\n tagName: parentTagName,\r\n maskInputOptions,\r\n });\r\n textContent = maskInputValue({\r\n isMasked: needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, isInputMasked),\r\n element: n,\r\n value: textContent,\r\n maskInputFn,\r\n });\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle,\r\n rootId,\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n const { doc, blockClass, blockSelector, unblockSelector, inlineStylesheet, maskInputOptions = {}, maskAttributeFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, rootId, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, } = options;\r\n const needBlock = _isBlockedElement(n, blockClass, blockSelector, unblockSelector);\r\n const tagName = getValidTagName(n);\r\n let attributes = {};\r\n const len = n.attributes.length;\r\n for (let i = 0; i < len; i++) {\r\n const attr = n.attributes[i];\r\n if (attr.name && !ignoreAttribute(tagName, attr.name, attr.value)) {\r\n attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value, n, maskAttributeFn);\r\n }\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n const stylesheet = Array.from(doc.styleSheets).find((s) => {\r\n return s.href === n.href;\r\n });\r\n let cssText = null;\r\n if (stylesheet) {\r\n cssText = stringifyStylesheet(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n const cssText = stringifyStylesheet(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' ||\r\n tagName === 'textarea' ||\r\n tagName === 'select' ||\r\n tagName === 'option') {\r\n const el = n;\r\n const type = getInputType(el);\r\n const value = getInputValue(el, toUpperCase(tagName), type);\r\n const checked = el.checked;\r\n if (type !== 'submit' && type !== 'button' && value) {\r\n const forceMask = needMaskingText(el, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, shouldMaskInput({\r\n type,\r\n tagName: toUpperCase(tagName),\r\n maskInputOptions,\r\n }));\r\n attributes.value = maskInputValue({\r\n isMasked: forceMask,\r\n element: el,\r\n value,\r\n maskInputFn,\r\n });\r\n }\r\n if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n const canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n const blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n const blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n const image = n;\r\n const oldValue = image.crossOrigin;\r\n image.crossOrigin = 'anonymous';\r\n const recordInlineImage = () => {\r\n image.removeEventListener('load', recordInlineImage);\r\n try {\r\n canvasService.width = image.naturalWidth;\r\n canvasService.height = image.naturalHeight;\r\n canvasCtx.drawImage(image, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(`Cannot inline img src=${image.currentSrc}! Error: ${err}`);\r\n }\r\n oldValue\r\n ? (attributes.crossOrigin = oldValue)\r\n : image.removeAttribute('crossorigin');\r\n };\r\n if (image.complete && image.naturalWidth !== 0)\r\n recordInlineImage();\r\n else\r\n image.addEventListener('load', recordInlineImage);\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n attributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n attributes.rr_mediaCurrentTime = n.currentTime;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n const { width, height } = n.getBoundingClientRect();\r\n attributes = {\r\n class: attributes.class,\r\n rr_width: `${width}px`,\r\n rr_height: `${height}px`,\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n let isCustomElement;\r\n try {\r\n if (customElements.get(tagName))\r\n isCustomElement = true;\r\n }\r\n catch (e) {\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName,\r\n attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock,\r\n rootId,\r\n isCustom: isCustomElement,\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined || maybeAttr === null) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n (sn.attributes.rel === 'preload' ||\r\n sn.attributes.rel === 'modulepreload') &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n sn.attributes.href.endsWith('.js')))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, skipChild = false, inlineStylesheet = true, maskInputOptions = {}, maskAttributeFn, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions = {}, inlineImages = false, recordCanvas = false, onSerialize, onIframeLoad, iframeLoadTimeout = 5000, onStylesheetLoad, stylesheetLoadTimeout = 5000, keepIframeSrcFn = () => false, newlyAddedElement = false, } = options;\r\n let { preserveWhiteSpace = true } = options;\r\n const _serializedNode = serializeNode(n, {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskAllText,\r\n unblockSelector,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n keepIframeSrcFn,\r\n newlyAddedElement,\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n let id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n const serializedNode = Object.assign(_serializedNode, { id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n let recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n const shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n const bypassOptions = {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskAllText,\r\n unblockSelector,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n skipChild,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n };\r\n for (const childN of Array.from(n.childNodes)) {\r\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (const childN of Array.from(n.shadowRoot.childNodes)) {\r\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, () => {\r\n const iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n serializedNode.attributes.rel === 'stylesheet') {\r\n onceStylesheetLoaded(n, () => {\r\n if (onStylesheetLoad) {\r\n const serializedLinkNode = serializeNodeWithId(n, {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n const { mirror = new Mirror(), blockClass = 'rr-block', blockSelector = null, unblockSelector = null, maskAllText = false, maskTextClass = 'rr-mask', unmaskTextClass = null, maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, inlineImages = false, recordCanvas = false, maskAllInputs = false, maskAttributeFn, maskTextFn, maskInputFn, slimDOM = false, dataURLOptions, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn = () => false, } = options || {};\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n }\r\n : maskAllInputs === false\r\n ? {}\r\n : maskAllInputs;\r\n const slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true,\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n newlyAddedElement: false,\r\n });\r\n}\r\n\nconst commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options = {}) {\r\n let lineno = 1;\r\n let column = 1;\r\n function updatePosition(str) {\r\n const lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n const i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n const start = { line: lineno, column };\r\n return (node) => {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n class Position {\r\n constructor(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column };\r\n this.source = options.source;\r\n }\r\n }\r\n Position.prototype.content = css;\r\n const errorsList = [];\r\n function error(msg) {\r\n const err = new Error(`${options.source || ''}:${lineno}:${column}: ${msg}`);\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n const rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList,\r\n },\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n let node;\r\n const rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n const m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n const str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules = []) {\r\n let c;\r\n while ((c = comment())) {\r\n if (c) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n const pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n let i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n const str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str,\r\n });\r\n }\r\n function selector() {\r\n whitespace();\r\n while (css[0] == '}') {\r\n error('extra closing bracket');\r\n css = css.slice(1);\r\n whitespace();\r\n }\r\n const m = match(/^((\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^{])+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const cleanedInput = m[0]\r\n .trim()\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, (m) => {\r\n return m.replace(/,/g, '\\u200C');\r\n });\r\n return customSplit(cleanedInput).map((s) => s.replace(/\\u200C/g, ',').trim());\r\n }\r\n function customSplit(input) {\r\n const result = [];\r\n let currentSegment = '';\r\n let depthParentheses = 0;\r\n let depthBrackets = 0;\r\n let currentStringChar = null;\r\n for (const char of input) {\r\n const hasStringEscape = currentSegment.endsWith('\\\\');\r\n if (currentStringChar) {\r\n if (currentStringChar === char && !hasStringEscape) {\r\n currentStringChar = null;\r\n }\r\n }\r\n else if (char === '(') {\r\n depthParentheses++;\r\n }\r\n else if (char === ')') {\r\n depthParentheses--;\r\n }\r\n else if (char === '[') {\r\n depthBrackets++;\r\n }\r\n else if (char === ']') {\r\n depthBrackets--;\r\n }\r\n else if ('\\'\"'.includes(char)) {\r\n currentStringChar = char;\r\n }\r\n if (char === ',' && depthParentheses === 0 && depthBrackets === 0) {\r\n result.push(currentSegment);\r\n currentSegment = '';\r\n }\r\n else {\r\n currentSegment += char;\r\n }\r\n }\r\n if (currentSegment) {\r\n result.push(currentSegment);\r\n }\r\n return result;\r\n }\r\n function declaration() {\r\n const pos = position();\r\n const propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n const prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(`property missing ':'`);\r\n }\r\n const val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n const ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : '',\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n const decls = [];\r\n if (!open()) {\r\n return error(`missing '{'`);\r\n }\r\n comments(decls);\r\n let decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(`missing '}'`);\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n let m;\r\n const vals = [];\r\n const pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations(),\r\n });\r\n }\r\n function atkeyframes() {\r\n const pos = position();\r\n let m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n const vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n const name = m[1];\r\n if (!open()) {\r\n return error(`@keyframes missing '{'`);\r\n }\r\n let frame;\r\n let frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@keyframes missing '}'`);\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name,\r\n vendor,\r\n keyframes: frames,\r\n });\r\n }\r\n function atsupports() {\r\n const pos = position();\r\n const m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const supports = trim(m[1]);\r\n if (!open()) {\r\n return error(`@supports missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@supports missing '}'`);\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports,\r\n rules: style,\r\n });\r\n }\r\n function athost() {\r\n const pos = position();\r\n const m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(`@host missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@host missing '}'`);\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style,\r\n });\r\n }\r\n function atmedia() {\r\n const pos = position();\r\n const m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const media = trim(m[1]);\r\n if (!open()) {\r\n return error(`@media missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@media missing '}'`);\r\n }\r\n return pos({\r\n type: 'media',\r\n media,\r\n rules: style,\r\n });\r\n }\r\n function atcustommedia() {\r\n const pos = position();\r\n const m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2]),\r\n });\r\n }\r\n function atpage() {\r\n const pos = position();\r\n const m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n const sel = selector() || [];\r\n if (!open()) {\r\n return error(`@page missing '{'`);\r\n }\r\n let decls = comments();\r\n let decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@page missing '}'`);\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls,\r\n });\r\n }\r\n function atdocument() {\r\n const pos = position();\r\n const m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const vendor = trim(m[1]);\r\n const doc = trim(m[2]);\r\n if (!open()) {\r\n return error(`@document missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@document missing '}'`);\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor,\r\n rules: style,\r\n });\r\n }\r\n function atfontface() {\r\n const pos = position();\r\n const m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(`@font-face missing '{'`);\r\n }\r\n let decls = comments();\r\n let decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@font-face missing '}'`);\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls,\r\n });\r\n }\r\n const atimport = _compileAtrule('import');\r\n const atcharset = _compileAtrule('charset');\r\n const atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n const re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return () => {\r\n const pos = position();\r\n const m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n const ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n const pos = position();\r\n const sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations(),\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n const isNode = obj && typeof obj.type === 'string';\r\n const childParent = isNode ? obj : parent;\r\n for (const k of Object.keys(obj)) {\r\n const value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach((v) => {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null,\r\n });\r\n }\r\n return obj;\r\n}\n\nconst tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient',\r\n};\r\nfunction getTagName(n) {\r\n let tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nconst HOVER_SELECTOR = /([^\\\\]):hover/;\r\nconst HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction addHoverClass(cssText, cache) {\r\n const cachedStyle = cache?.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n if (cssText.length >= 1000000) {\r\n return cssText;\r\n }\r\n const ast = parse(cssText, {\r\n silent: true,\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n const selectors = [];\r\n ast.stylesheet.rules.forEach((rule) => {\r\n if ('selectors' in rule) {\r\n (rule.selectors || []).forEach((selector) => {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n });\r\n if (selectors.length === 0) {\r\n return cssText;\r\n }\r\n const selectorMatcher = new RegExp(selectors\r\n .filter((selector, index) => selectors.indexOf(selector) === index)\r\n .sort((a, b) => b.length - a.length)\r\n .map((selector) => {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n const result = cssText.replace(selectorMatcher, (selector) => {\r\n const newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return `${selector}, ${newSelector}`;\r\n });\r\n cache?.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n const stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass,\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n const { doc, hackCss, cache } = options;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n const tagName = getTagName(n);\r\n let node;\r\n if (n.isSVG) {\r\n node = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n if (n.isCustom &&\r\n doc.defaultView?.customElements &&\r\n !doc.defaultView.customElements.get(n.tagName))\r\n doc.defaultView.customElements.define(n.tagName, class extends doc.defaultView.HTMLElement {\r\n });\r\n node = doc.createElement(tagName);\r\n }\r\n const specialAttributes = {};\r\n for (const name in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name)) {\r\n continue;\r\n }\r\n let value = n.attributes[name];\r\n if (tagName === 'option' &&\r\n name === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === null) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name.startsWith('rr_')) {\r\n specialAttributes[name] = value;\r\n continue;\r\n }\r\n const isTextarea = tagName === 'textarea' && name === 'value';\r\n const isRemoteOrDynamicCss = tagName === 'style' && name === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = addHoverClass(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n const child = doc.createTextNode(value);\r\n for (const c of Array.from(node.childNodes)) {\r\n if (c.nodeType === node.TEXT_NODE) {\r\n node.removeChild(c);\r\n }\r\n }\r\n node.appendChild(child);\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name === 'xlink:href') {\r\n node.setAttributeNS('http://www.w3.org/1999/xlink', name, value.toString());\r\n }\r\n else if (name === 'onload' ||\r\n name === 'onclick' ||\r\n name.substring(0, 7) === 'onmouse') {\r\n node.setAttribute('_' + name, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name === 'content') {\r\n node.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n (n.attributes.rel === 'preload' ||\r\n n.attributes.rel === 'modulepreload') &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node.setAttribute(name, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n for (const name in specialAttributes) {\r\n const value = specialAttributes[name];\r\n if (tagName === 'canvas' && name === 'rr_dataURL') {\r\n const image = document.createElement('img');\r\n image.onload = () => {\r\n const ctx = node.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image, 0, 0, image.width, image.height);\r\n }\r\n };\r\n image.src = value.toString();\r\n if (node.RRNodeType)\r\n node.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name === 'rr_dataURL') {\r\n const image = node;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name === 'rr_width') {\r\n node.style.setProperty('width', value.toString());\r\n }\r\n else if (name === 'rr_height') {\r\n node.style.setProperty('height', value.toString());\r\n }\r\n else if (name === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node.currentTime = value;\r\n }\r\n else if (name === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node\r\n .play()\r\n .catch((e) => console.warn('media playback error', e));\r\n break;\r\n case 'paused':\r\n node.pause();\r\n break;\r\n }\r\n }\r\n }\r\n if (n.isShadowHost) {\r\n if (!node.shadowRoot) {\r\n node.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node.shadowRoot.firstChild) {\r\n node.shadowRoot.removeChild(node.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? addHoverClass(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n const { doc, mirror, skipChild = false, hackCss = true, afterAppend, cache, } = options;\r\n if (mirror.has(n.id)) {\r\n const nodeInMirror = mirror.getNode(n.id);\r\n const meta = mirror.getMeta(nodeInMirror);\r\n if (isNodeMetaEqual(meta, n))\r\n return mirror.getNode(n.id);\r\n }\r\n let node = buildNode(n, { doc, hackCss, cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n }\r\n else {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n for (const childN of n.childNodes) {\r\n const childNode = buildNodeWithSN(childN, {\r\n doc,\r\n mirror,\r\n skipChild: false,\r\n hackCss,\r\n afterAppend,\r\n cache,\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n continue;\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else if (n.type === NodeType.Document &&\r\n childN.type == NodeType.Element) {\r\n const htmlElement = childNode;\r\n let body = null;\r\n htmlElement.childNodes.forEach((child) => {\r\n if (child.nodeName === 'BODY')\r\n body = child;\r\n });\r\n if (body) {\r\n htmlElement.removeChild(body);\r\n node.appendChild(childNode);\r\n htmlElement.appendChild(body);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (const id of mirror.getIds()) {\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n const n = mirror.getMeta(node);\r\n if (n?.type !== NodeType.Element) {\r\n return;\r\n }\r\n const el = node;\r\n for (const name in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name) &&\r\n name.startsWith('rr_'))) {\r\n continue;\r\n }\r\n const value = n.attributes[name];\r\n if (name === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n const { doc, onVisit, hackCss = true, afterAppend, cache, mirror = new Mirror(), } = options;\r\n const node = buildNodeWithSN(n, {\r\n doc,\r\n mirror,\r\n skipChild: false,\r\n hackCss,\r\n afterAppend,\r\n cache,\r\n });\r\n visit(mirror, (visitedNode) => {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, addHoverClass, buildNodeWithSN, createCache, createMatchPredicate, createMirror, distanceToMatch, escapeImportStatement, fixSafariColons, genId, getInputType, getInputValue, ignoreAttribute, is2DCanvasBlank, isCSSImportRule, isCSSStyleRule, isElement, isNativeShadowDom, isNodeMetaEqual, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, shouldMaskInput, snapshot, stringifyRule, stringifyStylesheet, toLowerCase, toUpperCase, transformAttribute };\n","import { distanceToMatch, IGNORED_NODE, isShadowRoot, createMatchPredicate } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target = document) {\r\n const options = { capture: true, passive: true };\r\n target.addEventListener(type, fn, options);\r\n return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n '\\r\\n' +\r\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n '\\r\\n' +\r\n 'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n map: {},\r\n getId() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return -1;\r\n },\r\n getNode() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return null;\r\n },\r\n removeNodeFromMap() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n has() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return false;\r\n },\r\n reset() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n _mirror = new Proxy(_mirror, {\r\n get(target, prop, receiver) {\r\n if (prop === 'map') {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n }\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n let timeout = null;\r\n let previous = 0;\r\n return function (...args) {\r\n const now = Date.now();\r\n if (!previous && options.leading === false) {\r\n previous = now;\r\n }\r\n const remaining = wait - (now - previous);\r\n const context = this;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n func.apply(context, args);\r\n }\r\n else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(() => {\r\n previous = options.leading === false ? 0 : Date.now();\r\n timeout = null;\r\n func.apply(context, args);\r\n }, remaining);\r\n }\r\n };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n win.Object.defineProperty(target, key, isRevoked\r\n ? d\r\n : {\r\n set(value) {\r\n setTimeout(() => {\r\n d.set.call(this, value);\r\n }, 0);\r\n if (original && original.set) {\r\n original.set.call(this, value);\r\n }\r\n },\r\n });\r\n return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n try {\r\n if (!(name in source)) {\r\n return () => {\r\n };\r\n }\r\n const original = source[name];\r\n const wrapped = replacement(original);\r\n if (typeof wrapped === 'function') {\r\n wrapped.prototype = wrapped.prototype || {};\r\n Object.defineProperties(wrapped, {\r\n __rrweb_original__: {\r\n enumerable: false,\r\n value: original,\r\n },\r\n });\r\n }\r\n source[name] = wrapped;\r\n return () => {\r\n source[name] = original;\r\n };\r\n }\r\n catch {\r\n return () => {\r\n };\r\n }\r\n}\r\nlet nowTimestamp = Date.now;\r\nif (!(/[1-9][0-9]{12}/.test(Date.now().toString()))) {\r\n nowTimestamp = () => new Date().getTime();\r\n}\r\nfunction getWindowScroll(win) {\r\n const doc = win.document;\r\n return {\r\n left: doc.scrollingElement\r\n ? doc.scrollingElement.scrollLeft\r\n : win.pageXOffset !== undefined\r\n ? win.pageXOffset\r\n : doc?.documentElement.scrollLeft ||\r\n doc?.body?.parentElement?.scrollLeft ||\r\n doc?.body?.scrollLeft ||\r\n 0,\r\n top: doc.scrollingElement\r\n ? doc.scrollingElement.scrollTop\r\n : win.pageYOffset !== undefined\r\n ? win.pageYOffset\r\n : doc?.documentElement.scrollTop ||\r\n doc?.body?.parentElement?.scrollTop ||\r\n doc?.body?.scrollTop ||\r\n 0,\r\n };\r\n}\r\nfunction getWindowHeight() {\r\n return (window.innerHeight ||\r\n (document.documentElement && document.documentElement.clientHeight) ||\r\n (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n return (window.innerWidth ||\r\n (document.documentElement && document.documentElement.clientWidth) ||\r\n (document.body && document.body.clientWidth));\r\n}\r\nfunction closestElementOfNode(node) {\r\n if (!node) {\r\n return null;\r\n }\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n return el;\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, unblockSelector, checkAncestors) {\r\n if (!node) {\r\n return false;\r\n }\r\n const el = closestElementOfNode(node);\r\n if (!el) {\r\n return false;\r\n }\r\n const blockedPredicate = createMatchPredicate(blockClass, blockSelector);\r\n if (!checkAncestors) {\r\n const isUnblocked = unblockSelector && el.matches(unblockSelector);\r\n return blockedPredicate(el) && !isUnblocked;\r\n }\r\n const blockDistance = distanceToMatch(el, blockedPredicate);\r\n let unblockDistance = -1;\r\n if (blockDistance < 0) {\r\n return false;\r\n }\r\n if (unblockSelector) {\r\n unblockDistance = distanceToMatch(el, createMatchPredicate(null, unblockSelector));\r\n }\r\n if (blockDistance > -1 && unblockDistance < 0) {\r\n return true;\r\n }\r\n return blockDistance < unblockDistance;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n if (isShadowRoot(target)) {\r\n return false;\r\n }\r\n const id = mirror.getId(target);\r\n if (!mirror.has(id)) {\r\n return true;\r\n }\r\n if (target.parentNode &&\r\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n if (!target.parentNode) {\r\n return true;\r\n }\r\n return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction legacy_isTouchEvent(event) {\r\n return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n win.NodeList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n win.DOMTokenList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if (!Node.prototype.contains) {\r\n Node.prototype.contains = (...args) => {\r\n let node = args[0];\r\n if (!(0 in args)) {\r\n throw new TypeError('1 argument is required');\r\n }\r\n do {\r\n if (this === node) {\r\n return true;\r\n }\r\n } while ((node = node && node.parentNode));\r\n return false;\r\n };\r\n }\r\n}\r\nfunction queueToResolveTrees(queue) {\r\n const queueNodeMap = {};\r\n const putIntoMap = (m, parent) => {\r\n const nodeInTree = {\r\n value: m,\r\n parent,\r\n children: [],\r\n };\r\n queueNodeMap[m.node.id] = nodeInTree;\r\n return nodeInTree;\r\n };\r\n const queueNodeTrees = [];\r\n for (const mutation of queue) {\r\n const { nextId, parentId } = mutation;\r\n if (nextId && nextId in queueNodeMap) {\r\n const nextInTree = queueNodeMap[nextId];\r\n if (nextInTree.parent) {\r\n const idx = nextInTree.parent.children.indexOf(nextInTree);\r\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\r\n }\r\n else {\r\n const idx = queueNodeTrees.indexOf(nextInTree);\r\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\r\n }\r\n continue;\r\n }\r\n if (parentId in queueNodeMap) {\r\n const parentInTree = queueNodeMap[parentId];\r\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\r\n continue;\r\n }\r\n queueNodeTrees.push(putIntoMap(mutation, null));\r\n }\r\n return queueNodeTrees;\r\n}\r\nfunction iterateResolveTree(tree, cb) {\r\n cb(tree.value);\r\n for (let i = tree.children.length - 1; i >= 0; i--) {\r\n iterateResolveTree(tree.children[i], cb);\r\n }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n return Boolean(n.nodeName === 'LINK' &&\r\n n.nodeType === n.ELEMENT_NODE &&\r\n n.getAttribute &&\r\n n.getAttribute('rel') === 'stylesheet' &&\r\n mirror.getMeta(n));\r\n}\r\nfunction getBaseDimension(node, rootIframe) {\r\n const frameElement = node.ownerDocument?.defaultView?.frameElement;\r\n if (!frameElement || frameElement === rootIframe) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n relativeScale: 1,\r\n absoluteScale: 1,\r\n };\r\n }\r\n const frameDimension = frameElement.getBoundingClientRect();\r\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\r\n const relativeScale = frameDimension.height / frameElement.clientHeight;\r\n return {\r\n x: frameDimension.x * frameBaseDimension.relativeScale +\r\n frameBaseDimension.x,\r\n y: frameDimension.y * frameBaseDimension.relativeScale +\r\n frameBaseDimension.y,\r\n relativeScale,\r\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\r\n };\r\n}\r\nfunction hasShadowRoot(n) {\r\n return Boolean(n?.shadowRoot);\r\n}\r\nfunction getNestedRule(rules, position) {\r\n const rule = rules[position[0]];\r\n if (position.length === 1) {\r\n return rule;\r\n }\r\n else {\r\n return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));\r\n }\r\n}\r\nfunction getPositionsAndIndex(nestedIndex) {\r\n const positions = [...nestedIndex];\r\n const index = positions.pop();\r\n return { positions, index };\r\n}\r\nfunction uniqueTextMutations(mutations) {\r\n const idSet = new Set();\r\n const uniqueMutations = [];\r\n for (let i = mutations.length; i--;) {\r\n const mutation = mutations[i];\r\n if (!idSet.has(mutation.id)) {\r\n uniqueMutations.push(mutation);\r\n idSet.add(mutation.id);\r\n }\r\n }\r\n return uniqueMutations;\r\n}\r\nclass StyleSheetMirror {\r\n constructor() {\r\n this.id = 1;\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n }\r\n getId(stylesheet) {\r\n return this.styleIDMap.get(stylesheet) ?? -1;\r\n }\r\n has(stylesheet) {\r\n return this.styleIDMap.has(stylesheet);\r\n }\r\n add(stylesheet, id) {\r\n if (this.has(stylesheet))\r\n return this.getId(stylesheet);\r\n let newId;\r\n if (id === undefined) {\r\n newId = this.id++;\r\n }\r\n else\r\n newId = id;\r\n this.styleIDMap.set(stylesheet, newId);\r\n this.idStyleMap.set(newId, stylesheet);\r\n return newId;\r\n }\r\n getStyle(id) {\r\n return this.idStyleMap.get(id) || null;\r\n }\r\n reset() {\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n this.id = 1;\r\n }\r\n generateId() {\r\n return this.id++;\r\n }\r\n}\r\nfunction getShadowHost(n) {\r\n let shadowHost = null;\r\n if (n.getRootNode?.()?.nodeType === Node.DOCUMENT_FRAGMENT_NODE &&\r\n n.getRootNode().host)\r\n shadowHost = n.getRootNode().host;\r\n return shadowHost;\r\n}\r\nfunction getRootShadowHost(n) {\r\n let rootShadowHost = n;\r\n let shadowHost;\r\n while ((shadowHost = getShadowHost(rootShadowHost)))\r\n rootShadowHost = shadowHost;\r\n return rootShadowHost;\r\n}\r\nfunction shadowHostInDom(n) {\r\n const doc = n.ownerDocument;\r\n if (!doc)\r\n return false;\r\n const shadowHost = getRootShadowHost(n);\r\n return doc.contains(shadowHost);\r\n}\r\nfunction inDom(n) {\r\n const doc = n.ownerDocument;\r\n if (!doc)\r\n return false;\r\n return doc.contains(n) || shadowHostInDom(n);\r\n}\r\nconst cachedImplementations = {};\r\nfunction getImplementation(name) {\r\n const cached = cachedImplementations[name];\r\n if (cached) {\r\n return cached;\r\n }\r\n const document = window.document;\r\n let impl = window[name];\r\n if (document && typeof document.createElement === 'function') {\r\n try {\r\n const sandbox = document.createElement('iframe');\r\n sandbox.hidden = true;\r\n document.head.appendChild(sandbox);\r\n const contentWindow = sandbox.contentWindow;\r\n if (contentWindow && contentWindow[name]) {\r\n impl =\r\n contentWindow[name];\r\n }\r\n document.head.removeChild(sandbox);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return (cachedImplementations[name] = impl.bind(window));\r\n}\r\nfunction onRequestAnimationFrame(...rest) {\r\n return getImplementation('requestAnimationFrame')(...rest);\r\n}\r\nfunction setTimeout(...rest) {\r\n return getImplementation('setTimeout')(...rest);\r\n}\r\nfunction clearTimeout(...rest) {\r\n return getImplementation('clearTimeout')(...rest);\r\n}\n\nexport { StyleSheetMirror, _mirror, clearTimeout, closestElementOfNode, getBaseDimension, getNestedRule, getPositionsAndIndex, getRootShadowHost, getShadowHost, getWindowHeight, getWindowScroll, getWindowWidth, hasShadowRoot, hookSetter, inDom, isAncestorRemoved, isBlocked, isIgnored, isSerialized, isSerializedIframe, isSerializedStylesheet, iterateResolveTree, legacy_isTouchEvent, nowTimestamp, on, onRequestAnimationFrame, patch, polyfill, queueToResolveTrees, setTimeout, shadowHostInDom, throttle, uniqueTextMutations };\n","// https://github.com/alangpierce/sucrase/tree/265887868966917f3b924ce38dfad01fbab1329f\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2012-2018 various contributors (see AUTHORS)\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 all\n// 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 THE\n// SOFTWARE.\n\n/**\n * Polyfill for the nullish coalescing operator (`??`).\n *\n * Note that the RHS is wrapped in a function so that if it's a computed value, that evaluation won't happen unless the\n * LHS evaluates to a nullish value, to mimic the operator's short-circuiting behavior.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n *\n * @param lhs The value of the expression to the left of the `??`\n * @param rhsFn A function returning the value of the expression to the right of the `??`\n * @returns The LHS value, unless it's `null` or `undefined`, in which case, the RHS value\n */\nexport function _nullishCoalesce(lhs: unknown, rhsFn: () => unknown): unknown {\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n return lhs != null ? lhs : rhsFn();\n}\n\n// Sucrase version:\n// function _nullishCoalesce(lhs, rhsFn) {\n// if (lhs != null) {\n// return lhs;\n// } else {\n// return rhsFn();\n// }\n// }\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\n\nexport { CanvasContext, EventType, IncrementalSource, MouseInteractions, PointerTypes, ReplayerEvents };\n","import { isShadowRoot, isNativeShadowDom, getInputType, getInputValue, shouldMaskInput, needMaskingText, maskInputValue, ignoreAttribute, transformAttribute, toLowerCase, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isSerialized, isAncestorRemoved, closestElementOfNode, hasShadowRoot, inDom, getShadowHost, isSerializedIframe, isSerializedStylesheet } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\r\n return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n constructor() {\r\n this.length = 0;\r\n this.head = null;\r\n this.tail = null;\r\n }\r\n get(position) {\r\n if (position >= this.length) {\r\n throw new Error('Position outside of list range');\r\n }\r\n let current = this.head;\r\n for (let index = 0; index < position; index++) {\r\n current = current?.next || null;\r\n }\r\n return current;\r\n }\r\n addNode(n) {\r\n const node = {\r\n value: n,\r\n previous: null,\r\n next: null,\r\n };\r\n n.__ln = node;\r\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n const current = n.previousSibling.__ln.next;\r\n node.next = current;\r\n node.previous = n.previousSibling.__ln;\r\n n.previousSibling.__ln.next = node;\r\n if (current) {\r\n current.previous = node;\r\n }\r\n }\r\n else if (n.nextSibling &&\r\n isNodeInLinkedList(n.nextSibling) &&\r\n n.nextSibling.__ln.previous) {\r\n const current = n.nextSibling.__ln.previous;\r\n node.previous = current;\r\n node.next = n.nextSibling.__ln;\r\n n.nextSibling.__ln.previous = node;\r\n if (current) {\r\n current.next = node;\r\n }\r\n }\r\n else {\r\n if (this.head) {\r\n this.head.previous = node;\r\n }\r\n node.next = this.head;\r\n this.head = node;\r\n }\r\n if (node.next === null) {\r\n this.tail = node;\r\n }\r\n this.length++;\r\n }\r\n removeNode(n) {\r\n const current = n.__ln;\r\n if (!this.head) {\r\n return;\r\n }\r\n if (!current.previous) {\r\n this.head = current.next;\r\n if (this.head) {\r\n this.head.previous = null;\r\n }\r\n else {\r\n this.tail = null;\r\n }\r\n }\r\n else {\r\n current.previous.next = current.next;\r\n if (current.next) {\r\n current.next.previous = current.previous;\r\n }\r\n else {\r\n this.tail = current.previous;\r\n }\r\n }\r\n if (n.__ln) {\r\n delete n.__ln;\r\n }\r\n this.length--;\r\n }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n constructor() {\r\n this.frozen = false;\r\n this.locked = false;\r\n this.texts = [];\r\n this.attributes = [];\r\n this.attributeMap = new WeakMap();\r\n this.removes = [];\r\n this.mapRemoves = [];\r\n this.movedMap = {};\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.processMutations = (mutations) => {\r\n mutations.forEach(this.processMutation);\r\n this.emit();\r\n };\r\n this.emit = () => {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const adds = [];\r\n const addedIds = new Set();\r\n const addList = new DoubleLinkedList();\r\n const getNextId = (n) => {\r\n let ns = n;\r\n let nextId = IGNORED_NODE;\r\n while (nextId === IGNORED_NODE) {\r\n ns = ns && ns.nextSibling;\r\n nextId = ns && this.mirror.getId(ns);\r\n }\r\n return nextId;\r\n };\r\n const pushAdd = (n) => {\r\n if (!n.parentNode || !inDom(n)) {\r\n return;\r\n }\r\n const parentId = isShadowRoot(n.parentNode)\r\n ? this.mirror.getId(getShadowHost(n))\r\n : this.mirror.getId(n.parentNode);\r\n const nextId = getNextId(n);\r\n if (parentId === -1 || nextId === -1) {\r\n return addList.addNode(n);\r\n }\r\n const sn = serializeNodeWithId(n, {\r\n doc: this.doc,\r\n mirror: this.mirror,\r\n blockClass: this.blockClass,\r\n blockSelector: this.blockSelector,\r\n maskAllText: this.maskAllText,\r\n unblockSelector: this.unblockSelector,\r\n maskTextClass: this.maskTextClass,\r\n unmaskTextClass: this.unmaskTextClass,\r\n maskTextSelector: this.maskTextSelector,\r\n unmaskTextSelector: this.unmaskTextSelector,\r\n skipChild: true,\r\n newlyAddedElement: true,\r\n inlineStylesheet: this.inlineStylesheet,\r\n maskInputOptions: this.maskInputOptions,\r\n maskAttributeFn: this.maskAttributeFn,\r\n maskTextFn: this.maskTextFn,\r\n maskInputFn: this.maskInputFn,\r\n slimDOMOptions: this.slimDOMOptions,\r\n dataURLOptions: this.dataURLOptions,\r\n recordCanvas: this.recordCanvas,\r\n inlineImages: this.inlineImages,\r\n onSerialize: (currentN) => {\r\n if (isSerializedIframe(currentN, this.mirror)) {\r\n this.iframeManager.addIframe(currentN);\r\n }\r\n if (isSerializedStylesheet(currentN, this.mirror)) {\r\n this.stylesheetManager.trackLinkElement(currentN);\r\n }\r\n if (hasShadowRoot(n)) {\r\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n this.iframeManager.attachIframe(iframe, childSn);\r\n this.shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (link, childSn) => {\r\n this.stylesheetManager.attachLinkElement(link, childSn);\r\n },\r\n });\r\n if (sn) {\r\n adds.push({\r\n parentId,\r\n nextId,\r\n node: sn,\r\n });\r\n addedIds.add(sn.id);\r\n }\r\n };\r\n while (this.mapRemoves.length) {\r\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n }\r\n for (const n of this.movedSet) {\r\n if (isParentRemoved(this.removes, n, this.mirror) &&\r\n !this.movedSet.has(n.parentNode)) {\r\n continue;\r\n }\r\n pushAdd(n);\r\n }\r\n for (const n of this.addedSet) {\r\n if (!isAncestorInSet(this.droppedSet, n) &&\r\n !isParentRemoved(this.removes, n, this.mirror)) {\r\n pushAdd(n);\r\n }\r\n else if (isAncestorInSet(this.movedSet, n)) {\r\n pushAdd(n);\r\n }\r\n else {\r\n this.droppedSet.add(n);\r\n }\r\n }\r\n let candidate = null;\r\n while (addList.length) {\r\n let node = null;\r\n if (candidate) {\r\n const parentId = this.mirror.getId(candidate.value.parentNode);\r\n const nextId = getNextId(candidate.value);\r\n if (parentId !== -1 && nextId !== -1) {\r\n node = candidate;\r\n }\r\n }\r\n if (!node) {\r\n let tailNode = addList.tail;\r\n while (tailNode) {\r\n const _node = tailNode;\r\n tailNode = tailNode.previous;\r\n if (_node) {\r\n const parentId = this.mirror.getId(_node.value.parentNode);\r\n const nextId = getNextId(_node.value);\r\n if (nextId === -1)\r\n continue;\r\n else if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n else {\r\n const unhandledNode = _node.value;\r\n if (unhandledNode.parentNode &&\r\n unhandledNode.parentNode.nodeType ===\r\n Node.DOCUMENT_FRAGMENT_NODE) {\r\n const shadowHost = unhandledNode.parentNode\r\n .host;\r\n const parentId = this.mirror.getId(shadowHost);\r\n if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!node) {\r\n while (addList.head) {\r\n addList.removeNode(addList.head.value);\r\n }\r\n break;\r\n }\r\n candidate = node.previous;\r\n addList.removeNode(node.value);\r\n pushAdd(node.value);\r\n }\r\n const payload = {\r\n texts: this.texts\r\n .map((text) => ({\r\n id: this.mirror.getId(text.node),\r\n value: text.value,\r\n }))\r\n .filter((text) => !addedIds.has(text.id))\r\n .filter((text) => this.mirror.has(text.id)),\r\n attributes: this.attributes\r\n .map((attribute) => {\r\n const { attributes } = attribute;\r\n if (typeof attributes.style === 'string') {\r\n const diffAsStr = JSON.stringify(attribute.styleDiff);\r\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\r\n if (diffAsStr.length < attributes.style.length) {\r\n if ((diffAsStr + unchangedAsStr).split('var(').length ===\r\n attributes.style.split('var(').length) {\r\n attributes.style = attribute.styleDiff;\r\n }\r\n }\r\n }\r\n return {\r\n id: this.mirror.getId(attribute.node),\r\n attributes: attributes,\r\n };\r\n })\r\n .filter((attribute) => !addedIds.has(attribute.id))\r\n .filter((attribute) => this.mirror.has(attribute.id)),\r\n removes: this.removes,\r\n adds,\r\n };\r\n if (!payload.texts.length &&\r\n !payload.attributes.length &&\r\n !payload.removes.length &&\r\n !payload.adds.length) {\r\n return;\r\n }\r\n this.texts = [];\r\n this.attributes = [];\r\n this.attributeMap = new WeakMap();\r\n this.removes = [];\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.movedMap = {};\r\n this.mutationCb(payload);\r\n };\r\n this.processMutation = (m) => {\r\n if (isIgnored(m.target, this.mirror)) {\r\n return;\r\n }\r\n switch (m.type) {\r\n case 'characterData': {\r\n const value = m.target.textContent;\r\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) &&\r\n value !== m.oldValue) {\r\n this.texts.push({\r\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, this.unmaskTextClass, this.unmaskTextSelector, this.maskAllText) && value\r\n ? this.maskTextFn\r\n ? this.maskTextFn(value, closestElementOfNode(m.target))\r\n : value.replace(/[\\S]/g, '*')\r\n : value,\r\n node: m.target,\r\n });\r\n }\r\n break;\r\n }\r\n case 'attributes': {\r\n const target = m.target;\r\n let attributeName = m.attributeName;\r\n let value = m.target.getAttribute(attributeName);\r\n if (attributeName === 'value') {\r\n const type = getInputType(target);\r\n const tagName = target.tagName;\r\n value = getInputValue(target, tagName, type);\r\n const isInputMasked = shouldMaskInput({\r\n maskInputOptions: this.maskInputOptions,\r\n tagName,\r\n type,\r\n });\r\n const forceMask = needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, this.unmaskTextClass, this.unmaskTextSelector, isInputMasked);\r\n value = maskInputValue({\r\n isMasked: forceMask,\r\n element: target,\r\n value,\r\n maskInputFn: this.maskInputFn,\r\n });\r\n }\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) ||\r\n value === m.oldValue) {\r\n return;\r\n }\r\n let item = this.attributeMap.get(m.target);\r\n if (target.tagName === 'IFRAME' &&\r\n attributeName === 'src' &&\r\n !this.keepIframeSrcFn(value)) {\r\n if (!target.contentDocument) {\r\n attributeName = 'rr_src';\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (!item) {\r\n item = {\r\n node: m.target,\r\n attributes: {},\r\n styleDiff: {},\r\n _unchangedStyles: {},\r\n };\r\n this.attributes.push(item);\r\n this.attributeMap.set(m.target, item);\r\n }\r\n if (attributeName === 'type' &&\r\n target.tagName === 'INPUT' &&\r\n (m.oldValue || '').toLowerCase() === 'password') {\r\n target.setAttribute('data-rr-is-password', 'true');\r\n }\r\n if (!ignoreAttribute(target.tagName, attributeName)) {\r\n item.attributes[attributeName] = transformAttribute(this.doc, toLowerCase(target.tagName), toLowerCase(attributeName), value, target, this.maskAttributeFn);\r\n if (attributeName === 'style') {\r\n if (!this.unattachedDoc) {\r\n try {\r\n this.unattachedDoc =\r\n document.implementation.createHTMLDocument();\r\n }\r\n catch (e) {\r\n this.unattachedDoc = this.doc;\r\n }\r\n }\r\n const old = this.unattachedDoc.createElement('span');\r\n if (m.oldValue) {\r\n old.setAttribute('style', m.oldValue);\r\n }\r\n for (const pname of Array.from(target.style)) {\r\n const newValue = target.style.getPropertyValue(pname);\r\n const newPriority = target.style.getPropertyPriority(pname);\r\n if (newValue !== old.style.getPropertyValue(pname) ||\r\n newPriority !== old.style.getPropertyPriority(pname)) {\r\n if (newPriority === '') {\r\n item.styleDiff[pname] = newValue;\r\n }\r\n else {\r\n item.styleDiff[pname] = [newValue, newPriority];\r\n }\r\n }\r\n else {\r\n item._unchangedStyles[pname] = [newValue, newPriority];\r\n }\r\n }\r\n for (const pname of Array.from(old.style)) {\r\n if (target.style.getPropertyValue(pname) === '') {\r\n item.styleDiff[pname] = false;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n case 'childList': {\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, true)) {\r\n return;\r\n }\r\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n m.removedNodes.forEach((n) => {\r\n const nodeId = this.mirror.getId(n);\r\n const parentId = isShadowRoot(m.target)\r\n ? this.mirror.getId(m.target.host)\r\n : this.mirror.getId(m.target);\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) ||\r\n isIgnored(n, this.mirror) ||\r\n !isSerialized(n, this.mirror)) {\r\n return;\r\n }\r\n if (this.addedSet.has(n)) {\r\n deepDelete(this.addedSet, n);\r\n this.droppedSet.add(n);\r\n }\r\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n else if (this.movedSet.has(n) &&\r\n this.movedMap[moveKey(nodeId, parentId)]) {\r\n deepDelete(this.movedSet, n);\r\n }\r\n else {\r\n this.removes.push({\r\n parentId,\r\n id: nodeId,\r\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n ? true\r\n : undefined,\r\n });\r\n }\r\n this.mapRemoves.push(n);\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n this.genAdds = (n, target) => {\r\n if (this.processedNodeManager.inOtherBuffer(n, this))\r\n return;\r\n if (this.addedSet.has(n) || this.movedSet.has(n))\r\n return;\r\n if (this.mirror.hasNode(n)) {\r\n if (isIgnored(n, this.mirror)) {\r\n return;\r\n }\r\n this.movedSet.add(n);\r\n let targetId = null;\r\n if (target && this.mirror.hasNode(target)) {\r\n targetId = this.mirror.getId(target);\r\n }\r\n if (targetId && targetId !== -1) {\r\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n }\r\n }\r\n else {\r\n this.addedSet.add(n);\r\n this.droppedSet.delete(n);\r\n }\r\n if (!isBlocked(n, this.blockClass, this.blockSelector, this.unblockSelector, false)) {\r\n n.childNodes.forEach((childN) => this.genAdds(childN));\r\n if (hasShadowRoot(n)) {\r\n n.shadowRoot.childNodes.forEach((childN) => {\r\n this.processedNodeManager.add(childN, this);\r\n this.genAdds(childN, n);\r\n });\r\n }\r\n }\r\n };\r\n }\r\n init(options) {\r\n [\r\n 'mutationCb',\r\n 'blockClass',\r\n 'blockSelector',\r\n 'unblockSelector',\r\n 'maskAllText',\r\n 'maskTextClass',\r\n 'unmaskTextClass',\r\n 'maskTextSelector',\r\n 'unmaskTextSelector',\r\n 'inlineStylesheet',\r\n 'maskInputOptions',\r\n 'maskAttributeFn',\r\n 'maskTextFn',\r\n 'maskInputFn',\r\n 'keepIframeSrcFn',\r\n 'recordCanvas',\r\n 'inlineImages',\r\n 'slimDOMOptions',\r\n 'dataURLOptions',\r\n 'doc',\r\n 'mirror',\r\n 'iframeManager',\r\n 'stylesheetManager',\r\n 'shadowDomManager',\r\n 'canvasManager',\r\n 'processedNodeManager',\r\n ].forEach((key) => {\r\n this[key] = options[key];\r\n });\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n this.canvasManager.freeze();\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n this.canvasManager.unfreeze();\r\n this.emit();\r\n }\r\n isFrozen() {\r\n return this.frozen;\r\n }\r\n lock() {\r\n this.locked = true;\r\n this.canvasManager.lock();\r\n }\r\n unlock() {\r\n this.locked = false;\r\n this.canvasManager.unlock();\r\n this.emit();\r\n }\r\n reset() {\r\n this.shadowDomManager.reset();\r\n this.canvasManager.reset();\r\n }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n addsSet.delete(n);\r\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n if (removes.length === 0)\r\n return false;\r\n return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const parentId = mirror.getId(parentNode);\r\n if (removes.some((r) => r.id === parentId)) {\r\n return true;\r\n }\r\n return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n if (set.size === 0)\r\n return false;\r\n return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n if (set.has(parentNode)) {\r\n return true;\r\n }\r\n return _isAncestorInSet(set, parentNode);\r\n}\n\nexport { MutationBuffer as default };\n","let errorHandler;\r\nfunction registerErrorHandler(handler) {\r\n errorHandler = handler;\r\n}\r\nfunction unregisterErrorHandler() {\r\n errorHandler = undefined;\r\n}\r\nconst callbackWrapper = (cb) => {\r\n if (!errorHandler) {\r\n return cb;\r\n }\r\n const rrwebWrapped = ((...rest) => {\r\n try {\r\n return cb(...rest);\r\n }\r\n catch (error) {\r\n if (errorHandler && errorHandler(error) === true) {\r\n return () => {\r\n };\r\n }\r\n throw error;\r\n }\r\n });\r\n return rrwebWrapped;\r\n};\n\nexport { callbackWrapper, registerErrorHandler, unregisterErrorHandler };\n","import { toLowerCase, toUpperCase, getInputType, getInputValue, shouldMaskInput, needMaskingText, maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isBlocked, getWindowScroll, hookSetter, patch, setTimeout, legacy_isTouchEvent, nowTimestamp, getWindowHeight, getWindowWidth } from '../utils.js';\nimport { MouseInteractions, IncrementalSource, PointerTypes } from '../../../types/dist/rrweb-types.js';\nimport MutationBuffer from './mutation.js';\nimport { callbackWrapper } from './error-handler.js';\n\nconst mutationBuffers = [];\r\nfunction getEventTarget(event) {\r\n try {\r\n if ('composedPath' in event) {\r\n const path = event.composedPath();\r\n if (path.length) {\r\n return path[0];\r\n }\r\n }\r\n else if ('path' in event && event.path.length) {\r\n return event.path[0];\r\n }\r\n }\r\n catch {\r\n }\r\n return event && event.target;\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n const mutationBuffer = new MutationBuffer();\r\n mutationBuffers.push(mutationBuffer);\r\n mutationBuffer.init(options);\r\n let mutationObserverCtor = window.MutationObserver ||\r\n window.__rrMutationObserver;\r\n const angularZoneSymbol = window?.Zone?.__symbol__?.('MutationObserver');\r\n if (angularZoneSymbol &&\r\n window[angularZoneSymbol]) {\r\n mutationObserverCtor = window[angularZoneSymbol];\r\n }\r\n const observer = new mutationObserverCtor(callbackWrapper((mutations) => {\r\n if (options.onMutation && options.onMutation(mutations) === false) {\r\n return;\r\n }\r\n mutationBuffer.processMutations.bind(mutationBuffer)(mutations);\r\n }));\r\n observer.observe(rootEl, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n characterData: true,\r\n characterDataOldValue: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n if (sampling.mousemove === false) {\r\n return () => {\r\n };\r\n }\r\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n ? sampling.mousemoveCallback\r\n : 500;\r\n let positions = [];\r\n let timeBaseline;\r\n const wrappedCb = throttle(callbackWrapper((source) => {\r\n const totalOffset = Date.now() - timeBaseline;\r\n mousemoveCb(positions.map((p) => {\r\n p.timeOffset -= totalOffset;\r\n return p;\r\n }), source);\r\n positions = [];\r\n timeBaseline = null;\r\n }), callbackThreshold);\r\n const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n const target = getEventTarget(evt);\r\n const { clientX, clientY } = legacy_isTouchEvent(evt)\r\n ? evt.changedTouches[0]\r\n : evt;\r\n if (!timeBaseline) {\r\n timeBaseline = nowTimestamp();\r\n }\r\n positions.push({\r\n x: clientX,\r\n y: clientY,\r\n id: mirror.getId(target),\r\n timeOffset: nowTimestamp() - timeBaseline,\r\n });\r\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n ? IncrementalSource.Drag\r\n : evt instanceof MouseEvent\r\n ? IncrementalSource.MouseMove\r\n : IncrementalSource.TouchMove);\r\n }), threshold, {\r\n trailing: false,\r\n }));\r\n const handlers = [\r\n on('mousemove', updatePosition, doc),\r\n on('touchmove', updatePosition, doc),\r\n on('drag', updatePosition, doc),\r\n ];\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, unblockSelector, sampling, }) {\r\n if (sampling.mouseInteraction === false) {\r\n return () => {\r\n };\r\n }\r\n const disableMap = sampling.mouseInteraction === true ||\r\n sampling.mouseInteraction === undefined\r\n ? {}\r\n : sampling.mouseInteraction;\r\n const handlers = [];\r\n let currentPointerType = null;\r\n const getHandler = (eventKey) => {\r\n return (event) => {\r\n const target = getEventTarget(event);\r\n if (isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\r\n return;\r\n }\r\n let pointerType = null;\r\n let thisEventKey = eventKey;\r\n if ('pointerType' in event) {\r\n switch (event.pointerType) {\r\n case 'mouse':\r\n pointerType = PointerTypes.Mouse;\r\n break;\r\n case 'touch':\r\n pointerType = PointerTypes.Touch;\r\n break;\r\n case 'pen':\r\n pointerType = PointerTypes.Pen;\r\n break;\r\n }\r\n if (pointerType === PointerTypes.Touch) {\r\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\r\n thisEventKey = 'TouchStart';\r\n }\r\n else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\r\n thisEventKey = 'TouchEnd';\r\n }\r\n }\r\n else if (pointerType === PointerTypes.Pen) ;\r\n }\r\n else if (legacy_isTouchEvent(event)) {\r\n pointerType = PointerTypes.Touch;\r\n }\r\n if (pointerType !== null) {\r\n currentPointerType = pointerType;\r\n if ((thisEventKey.startsWith('Touch') &&\r\n pointerType === PointerTypes.Touch) ||\r\n (thisEventKey.startsWith('Mouse') &&\r\n pointerType === PointerTypes.Mouse)) {\r\n pointerType = null;\r\n }\r\n }\r\n else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\r\n pointerType = currentPointerType;\r\n currentPointerType = null;\r\n }\r\n const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\r\n if (!e) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n const { clientX, clientY } = e;\r\n callbackWrapper(mouseInteractionCb)({\r\n type: MouseInteractions[thisEventKey],\r\n id,\r\n x: clientX,\r\n y: clientY,\r\n ...(pointerType !== null && { pointerType }),\r\n });\r\n };\r\n };\r\n Object.keys(MouseInteractions)\r\n .filter((key) => Number.isNaN(Number(key)) &&\r\n !key.endsWith('_Departed') &&\r\n disableMap[key] !== false)\r\n .forEach((eventKey) => {\r\n let eventName = toLowerCase(eventKey);\r\n const handler = getHandler(eventKey);\r\n if (window.PointerEvent) {\r\n switch (MouseInteractions[eventKey]) {\r\n case MouseInteractions.MouseDown:\r\n case MouseInteractions.MouseUp:\r\n eventName = eventName.replace('mouse', 'pointer');\r\n break;\r\n case MouseInteractions.TouchStart:\r\n case MouseInteractions.TouchEnd:\r\n return;\r\n }\r\n }\r\n handlers.push(on(eventName, handler, doc));\r\n });\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, unblockSelector, sampling, }) {\r\n const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n const target = getEventTarget(evt);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n if (target === doc && doc.defaultView) {\r\n const scrollLeftTop = getWindowScroll(doc.defaultView);\r\n scrollCb({\r\n id,\r\n x: scrollLeftTop.left,\r\n y: scrollLeftTop.top,\r\n });\r\n }\r\n else {\r\n scrollCb({\r\n id,\r\n x: target.scrollLeft,\r\n y: target.scrollTop,\r\n });\r\n }\r\n }), sampling.scroll || 100));\r\n return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\r\n let lastH = -1;\r\n let lastW = -1;\r\n const updateDimension = callbackWrapper(throttle(callbackWrapper(() => {\r\n const height = getWindowHeight();\r\n const width = getWindowWidth();\r\n if (lastH !== height || lastW !== width) {\r\n viewportResizeCb({\r\n width: Number(width),\r\n height: Number(height),\r\n });\r\n lastH = height;\r\n lastW = width;\r\n }\r\n }), 200));\r\n return on('resize', updateDimension, win);\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, unblockSelector, ignoreClass, ignoreSelector, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, }) {\r\n function eventHandler(event) {\r\n let target = getEventTarget(event);\r\n const userTriggered = event.isTrusted;\r\n const tagName = target && toUpperCase(target.tagName);\r\n if (tagName === 'OPTION')\r\n target = target.parentElement;\r\n if (!target ||\r\n !tagName ||\r\n INPUT_TAGS.indexOf(tagName) < 0 ||\r\n isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\r\n return;\r\n }\r\n const el = target;\r\n if (el.classList.contains(ignoreClass) ||\r\n (ignoreSelector && el.matches(ignoreSelector))) {\r\n return;\r\n }\r\n const type = getInputType(target);\r\n let text = getInputValue(el, tagName, type);\r\n let isChecked = false;\r\n const isInputMasked = shouldMaskInput({\r\n maskInputOptions,\r\n tagName,\r\n type,\r\n });\r\n const forceMask = needMaskingText(target, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, isInputMasked);\r\n if (type === 'radio' || type === 'checkbox') {\r\n isChecked = target.checked;\r\n }\r\n text = maskInputValue({\r\n isMasked: forceMask,\r\n element: target,\r\n value: text,\r\n maskInputFn,\r\n });\r\n cbWithDedup(target, userTriggeredOnInput\r\n ? { text, isChecked, userTriggered }\r\n : { text, isChecked });\r\n const name = target.name;\r\n if (type === 'radio' && name && isChecked) {\r\n doc\r\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n .forEach((el) => {\r\n if (el !== target) {\r\n const text = maskInputValue({\r\n isMasked: forceMask,\r\n element: el,\r\n value: getInputValue(el, tagName, type),\r\n maskInputFn,\r\n });\r\n cbWithDedup(el, userTriggeredOnInput\r\n ? { text, isChecked: !isChecked, userTriggered: false }\r\n : { text, isChecked: !isChecked });\r\n }\r\n });\r\n }\r\n }\r\n function cbWithDedup(target, v) {\r\n const lastInputValue = lastInputValueMap.get(target);\r\n if (!lastInputValue ||\r\n lastInputValue.text !== v.text ||\r\n lastInputValue.isChecked !== v.isChecked) {\r\n lastInputValueMap.set(target, v);\r\n const id = mirror.getId(target);\r\n callbackWrapper(inputCb)({\r\n ...v,\r\n id,\r\n });\r\n }\r\n }\r\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n const handlers = events.map((eventName) => on(eventName, callbackWrapper(eventHandler), doc));\r\n const currentWindow = doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n }\r\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n const hookProperties = [\r\n [currentWindow.HTMLInputElement.prototype, 'value'],\r\n [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n ];\r\n if (propertyDescriptor && propertyDescriptor.set) {\r\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n set() {\r\n callbackWrapper(eventHandler)({\r\n target: this,\r\n isTrusted: false,\r\n });\r\n },\r\n }, false, currentWindow)));\r\n }\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n const positions = [];\r\n function recurse(childRule, pos) {\r\n if ((hasNestedCSSRule('CSSGroupingRule') &&\r\n childRule.parentRule instanceof CSSGroupingRule) ||\r\n (hasNestedCSSRule('CSSMediaRule') &&\r\n childRule.parentRule instanceof CSSMediaRule) ||\r\n (hasNestedCSSRule('CSSSupportsRule') &&\r\n childRule.parentRule instanceof CSSSupportsRule) ||\r\n (hasNestedCSSRule('CSSConditionRule') &&\r\n childRule.parentRule instanceof CSSConditionRule)) {\r\n const rules = Array.from(childRule.parentRule.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n else if (childRule.parentStyleSheet) {\r\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n return pos;\r\n }\r\n return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n let id, styleId;\r\n if (!sheet)\r\n return {};\r\n if (sheet.ownerNode)\r\n id = mirror.getId(sheet.ownerNode);\r\n else\r\n styleId = styleMirror.getId(sheet);\r\n return {\r\n styleId,\r\n id,\r\n };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\r\n return () => {\r\n };\r\n }\r\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [rule, index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [{ rule, index }],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [{ index }],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n let replace;\r\n if (win.CSSStyleSheet.prototype.replace) {\r\n replace = win.CSSStyleSheet.prototype.replace;\r\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [text] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replace: text,\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n }\r\n let replaceSync;\r\n if (win.CSSStyleSheet.prototype.replaceSync) {\r\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [text] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replaceSync: text,\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n }\r\n const supportedNestedCSSRuleTypes = {};\r\n if (canMonkeyPatchNestedCSSRule('CSSGroupingRule')) {\r\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n }\r\n else {\r\n if (canMonkeyPatchNestedCSSRule('CSSMediaRule')) {\r\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n }\r\n if (canMonkeyPatchNestedCSSRule('CSSConditionRule')) {\r\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n }\r\n if (canMonkeyPatchNestedCSSRule('CSSSupportsRule')) {\r\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n }\r\n }\r\n const unmodifiedFunctions = {};\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n unmodifiedFunctions[typeKey] = {\r\n insertRule: type.prototype.insertRule,\r\n deleteRule: type.prototype.deleteRule,\r\n };\r\n type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [rule, index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [\r\n {\r\n rule,\r\n index: [\r\n ...getNestedCSSRulePositions(thisArg),\r\n index || 0,\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [\r\n { index: [...getNestedCSSRulePositions(thisArg), index] },\r\n ],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n });\r\n return callbackWrapper(() => {\r\n win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n });\r\n });\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n let hostId = null;\r\n if (host.nodeName === '#document')\r\n hostId = mirror.getId(host);\r\n else\r\n hostId = mirror.getId(host.host);\r\n const patchTarget = host.nodeName === '#document'\r\n ? host.defaultView?.Document\r\n : host.ownerDocument?.defaultView?.ShadowRoot;\r\n const originalPropertyDescriptor = patchTarget?.prototype\r\n ? Object.getOwnPropertyDescriptor(patchTarget?.prototype, 'adoptedStyleSheets')\r\n : undefined;\r\n if (hostId === null ||\r\n hostId === -1 ||\r\n !patchTarget ||\r\n !originalPropertyDescriptor)\r\n return () => {\r\n };\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get() {\r\n return originalPropertyDescriptor.get?.call(this);\r\n },\r\n set(sheets) {\r\n const result = originalPropertyDescriptor.set?.call(this, sheets);\r\n if (hostId !== null && hostId !== -1) {\r\n try {\r\n stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return result;\r\n },\r\n });\r\n return callbackWrapper(() => {\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get: originalPropertyDescriptor.get,\r\n set: originalPropertyDescriptor.set,\r\n });\r\n });\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [property, value, priority] = argumentsList;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return setProperty.apply(thisArg, [property, value, priority]);\r\n }\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentRule?.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n set: {\r\n property,\r\n value,\r\n priority,\r\n },\r\n index: getNestedCSSRulePositions(thisArg.parentRule),\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [property] = argumentsList;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return removeProperty.apply(thisArg, [property]);\r\n }\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentRule?.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n remove: {\r\n property,\r\n },\r\n index: getNestedCSSRulePositions(thisArg.parentRule),\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n return callbackWrapper(() => {\r\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n });\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, unblockSelector, mirror, sampling, doc, }) {\r\n const handler = callbackWrapper((type) => throttle(callbackWrapper((event) => {\r\n const target = getEventTarget(event);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\r\n return;\r\n }\r\n const { currentTime, volume, muted, playbackRate } = target;\r\n mediaInteractionCb({\r\n type,\r\n id: mirror.getId(target),\r\n currentTime,\r\n volume,\r\n muted,\r\n playbackRate,\r\n });\r\n }), sampling.media || 500));\r\n const handlers = [\r\n on('play', handler(0), doc),\r\n on('pause', handler(1), doc),\r\n on('seeked', handler(2), doc),\r\n on('volumechange', handler(3), doc),\r\n on('ratechange', handler(4), doc),\r\n ];\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n const win = doc.defaultView;\r\n if (!win) {\r\n return () => {\r\n };\r\n }\r\n const handlers = [];\r\n const fontMap = new WeakMap();\r\n const originalFontFace = win.FontFace;\r\n win.FontFace = function FontFace(family, source, descriptors) {\r\n const fontFace = new originalFontFace(family, source, descriptors);\r\n fontMap.set(fontFace, {\r\n family,\r\n buffer: typeof source !== 'string',\r\n descriptors,\r\n fontSource: typeof source === 'string'\r\n ? source\r\n : JSON.stringify(Array.from(new Uint8Array(source))),\r\n });\r\n return fontFace;\r\n };\r\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n return function (fontFace) {\r\n setTimeout(callbackWrapper(() => {\r\n const p = fontMap.get(fontFace);\r\n if (p) {\r\n fontCb(p);\r\n fontMap.delete(fontFace);\r\n }\r\n }), 0);\r\n return original.apply(this, [fontFace]);\r\n };\r\n });\r\n handlers.push(() => {\r\n win.FontFace = originalFontFace;\r\n });\r\n handlers.push(restoreHandler);\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initSelectionObserver(param) {\r\n const { doc, mirror, blockClass, blockSelector, unblockSelector, selectionCb, } = param;\r\n let collapsed = true;\r\n const updateSelection = callbackWrapper(() => {\r\n const selection = doc.getSelection();\r\n if (!selection || (collapsed && selection?.isCollapsed))\r\n return;\r\n collapsed = selection.isCollapsed || false;\r\n const ranges = [];\r\n const count = selection.rangeCount || 0;\r\n for (let i = 0; i < count; i++) {\r\n const range = selection.getRangeAt(i);\r\n const { startContainer, startOffset, endContainer, endOffset } = range;\r\n const blocked = isBlocked(startContainer, blockClass, blockSelector, unblockSelector, true) ||\r\n isBlocked(endContainer, blockClass, blockSelector, unblockSelector, true);\r\n if (blocked)\r\n continue;\r\n ranges.push({\r\n start: mirror.getId(startContainer),\r\n startOffset,\r\n end: mirror.getId(endContainer),\r\n endOffset,\r\n });\r\n }\r\n selectionCb({ ranges });\r\n });\r\n updateSelection();\r\n return on('selectionchange', updateSelection);\r\n}\r\nfunction initCustomElementObserver({ doc, customElementCb, }) {\r\n const win = doc.defaultView;\r\n if (!win || !win.customElements)\r\n return () => { };\r\n const restoreHandler = patch(win.customElements, 'define', function (original) {\r\n return function (name, constructor, options) {\r\n try {\r\n customElementCb({\r\n define: {\r\n name,\r\n },\r\n });\r\n }\r\n catch (e) {\r\n }\r\n return original.apply(this, [name, constructor, options]);\r\n };\r\n });\r\n return restoreHandler;\r\n}\r\nfunction initObservers(o, _hooks = {}) {\r\n const currentWindow = o.doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n };\r\n }\r\n const mutationObserver = initMutationObserver(o, o.doc);\r\n const mousemoveHandler = initMoveObserver(o);\r\n const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n const scrollHandler = initScrollObserver(o);\r\n const viewportResizeHandler = initViewportResizeObserver(o, {\r\n win: currentWindow,\r\n });\r\n const inputHandler = initInputObserver(o);\r\n const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n const adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n const styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n win: currentWindow,\r\n });\r\n const fontObserver = o.collectFonts\r\n ? initFontObserver(o)\r\n : () => {\r\n };\r\n const selectionObserver = initSelectionObserver(o);\r\n const customElementObserver = initCustomElementObserver(o);\r\n const pluginHandlers = [];\r\n for (const plugin of o.plugins) {\r\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n }\r\n return callbackWrapper(() => {\r\n mutationBuffers.forEach((b) => b.reset());\r\n mutationObserver.disconnect();\r\n mousemoveHandler();\r\n mouseInteractionHandler();\r\n scrollHandler();\r\n viewportResizeHandler();\r\n inputHandler();\r\n mediaInteractionHandler();\r\n styleSheetObserver();\r\n adoptedStyleSheetObserver();\r\n styleDeclarationObserver();\r\n fontObserver();\r\n selectionObserver();\r\n customElementObserver();\r\n pluginHandlers.forEach((h) => h());\r\n });\r\n}\r\nfunction hasNestedCSSRule(prop) {\r\n return typeof window[prop] !== 'undefined';\r\n}\r\nfunction canMonkeyPatchNestedCSSRule(prop) {\r\n return Boolean(typeof window[prop] !== 'undefined' &&\r\n window[prop].prototype &&\r\n 'insertRule' in window[prop].prototype &&\r\n 'deleteRule' in window[prop].prototype);\r\n}\n\nexport { INPUT_TAGS, initAdoptedStyleSheetObserver, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","class CrossOriginIframeMirror {\r\n constructor(generateIdFn) {\r\n this.generateIdFn = generateIdFn;\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n }\r\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n let id = idToRemoteIdMap.get(remoteId);\r\n if (!id) {\r\n id = this.generateIdFn();\r\n idToRemoteIdMap.set(remoteId, id);\r\n remoteIdToIdMap.set(id, remoteId);\r\n }\r\n return id;\r\n }\r\n getIds(iframe, remoteId) {\r\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n }\r\n getRemoteId(iframe, id, map) {\r\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n if (typeof id !== 'number')\r\n return id;\r\n const remoteId = remoteIdToIdMap.get(id);\r\n if (!remoteId)\r\n return -1;\r\n return remoteId;\r\n }\r\n getRemoteIds(iframe, ids) {\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n }\r\n reset(iframe) {\r\n if (!iframe) {\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n return;\r\n }\r\n this.iframeIdToRemoteIdMap.delete(iframe);\r\n this.iframeRemoteIdToIdMap.delete(iframe);\r\n }\r\n getIdToRemoteIdMap(iframe) {\r\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n if (!idToRemoteIdMap) {\r\n idToRemoteIdMap = new Map();\r\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n }\r\n return idToRemoteIdMap;\r\n }\r\n getRemoteIdToIdMap(iframe) {\r\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n if (!remoteIdToIdMap) {\r\n remoteIdToIdMap = new Map();\r\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n }\r\n return remoteIdToIdMap;\r\n }\r\n}\n\nexport { CrossOriginIframeMirror as default };\n","import { genId, NodeType } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/rrweb-types.js';\n\nclass IframeManagerNoop {\r\n constructor() {\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.crossOriginIframeRootIdMap = new WeakMap();\r\n }\r\n addIframe() {\r\n }\r\n addLoadListener() {\r\n }\r\n attachIframe() {\r\n }\r\n}\r\nclass IframeManager {\r\n constructor(options) {\r\n this.iframes = new WeakMap();\r\n this.crossOriginIframeMap = new WeakMap();\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.crossOriginIframeRootIdMap = new WeakMap();\r\n this.mutationCb = options.mutationCb;\r\n this.wrappedEmit = options.wrappedEmit;\r\n this.stylesheetManager = options.stylesheetManager;\r\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n this.mirror = options.mirror;\r\n if (this.recordCrossOriginIframes) {\r\n window.addEventListener('message', this.handleMessage.bind(this));\r\n }\r\n }\r\n addIframe(iframeEl) {\r\n this.iframes.set(iframeEl, true);\r\n if (iframeEl.contentWindow)\r\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n }\r\n addLoadListener(cb) {\r\n this.loadListener = cb;\r\n }\r\n attachIframe(iframeEl, childSn) {\r\n this.mutationCb({\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: childSn,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n });\r\n this.loadListener?.(iframeEl);\r\n if (iframeEl.contentDocument &&\r\n iframeEl.contentDocument.adoptedStyleSheets &&\r\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n }\r\n handleMessage(message) {\r\n const crossOriginMessageEvent = message;\r\n if (crossOriginMessageEvent.data.type !== 'rrweb' ||\r\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\r\n return;\r\n const iframeSourceWindow = message.source;\r\n if (!iframeSourceWindow)\r\n return;\r\n const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n if (!iframeEl)\r\n return;\r\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\r\n if (transformedEvent)\r\n this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\r\n }\r\n transformCrossOriginEvent(iframeEl, e) {\r\n switch (e.type) {\r\n case EventType.FullSnapshot: {\r\n this.crossOriginIframeMirror.reset(iframeEl);\r\n this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n this.replaceIdOnNode(e.data.node, iframeEl);\r\n const rootId = e.data.node.id;\r\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\r\n this.patchRootIdOnNode(e.data.node, rootId);\r\n return {\r\n timestamp: e.timestamp,\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: e.data.node,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n },\r\n };\r\n }\r\n case EventType.Meta:\r\n case EventType.Load:\r\n case EventType.DomContentLoaded: {\r\n return false;\r\n }\r\n case EventType.Plugin: {\r\n return e;\r\n }\r\n case EventType.Custom: {\r\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n return e;\r\n }\r\n case EventType.IncrementalSnapshot: {\r\n switch (e.data.source) {\r\n case IncrementalSource.Mutation: {\r\n e.data.adds.forEach((n) => {\r\n this.replaceIds(n, iframeEl, [\r\n 'parentId',\r\n 'nextId',\r\n 'previousId',\r\n ]);\r\n this.replaceIdOnNode(n.node, iframeEl);\r\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\r\n rootId && this.patchRootIdOnNode(n.node, rootId);\r\n });\r\n e.data.removes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n });\r\n e.data.attributes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n e.data.texts.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.Drag:\r\n case IncrementalSource.TouchMove:\r\n case IncrementalSource.MouseMove: {\r\n e.data.positions.forEach((p) => {\r\n this.replaceIds(p, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.ViewportResize: {\r\n return false;\r\n }\r\n case IncrementalSource.MediaInteraction:\r\n case IncrementalSource.MouseInteraction:\r\n case IncrementalSource.Scroll:\r\n case IncrementalSource.CanvasMutation:\r\n case IncrementalSource.Input: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n return e;\r\n }\r\n case IncrementalSource.StyleSheetRule:\r\n case IncrementalSource.StyleDeclaration: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n return e;\r\n }\r\n case IncrementalSource.Font: {\r\n return e;\r\n }\r\n case IncrementalSource.Selection: {\r\n e.data.ranges.forEach((range) => {\r\n this.replaceIds(range, iframeEl, ['start', 'end']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.AdoptedStyleSheet: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n e.data.styles?.forEach((style) => {\r\n this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n });\r\n return e;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n replace(iframeMirror, obj, iframeEl, keys) {\r\n for (const key of keys) {\r\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n continue;\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n }\r\n else {\r\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n }\r\n }\r\n return obj;\r\n }\r\n replaceIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n }\r\n replaceStyleIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n }\r\n replaceIdOnNode(node, iframeEl) {\r\n this.replaceIds(node, iframeEl, ['id', 'rootId']);\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.replaceIdOnNode(child, iframeEl);\r\n });\r\n }\r\n }\r\n patchRootIdOnNode(node, rootId) {\r\n if (node.type !== NodeType.Document && !node.rootId)\r\n node.rootId = rootId;\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.patchRootIdOnNode(child, rootId);\r\n });\r\n }\r\n }\r\n}\n\nexport { IframeManager, IframeManagerNoop };\n","import { initMutationObserver, initScrollObserver, initAdoptedStyleSheetObserver } from './observer.js';\nimport { setTimeout, patch, inDom } from '../utils.js';\nimport { isNativeShadowDom } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nclass ShadowDomManagerNoop {\r\n init() {\r\n }\r\n addShadowRoot() {\r\n }\r\n observeAttachShadow() {\r\n }\r\n reset() {\r\n }\r\n}\r\nclass ShadowDomManager {\r\n constructor(options) {\r\n this.shadowDoms = new WeakSet();\r\n this.restoreHandlers = [];\r\n this.mutationCb = options.mutationCb;\r\n this.scrollCb = options.scrollCb;\r\n this.bypassOptions = options.bypassOptions;\r\n this.mirror = options.mirror;\r\n this.init();\r\n }\r\n init() {\r\n this.reset();\r\n this.patchAttachShadow(Element, document);\r\n }\r\n addShadowRoot(shadowRoot, doc) {\r\n if (!isNativeShadowDom(shadowRoot))\r\n return;\r\n if (this.shadowDoms.has(shadowRoot))\r\n return;\r\n this.shadowDoms.add(shadowRoot);\r\n const observer = initMutationObserver({\r\n ...this.bypassOptions,\r\n doc,\r\n mutationCb: this.mutationCb,\r\n mirror: this.mirror,\r\n shadowDomManager: this,\r\n }, shadowRoot);\r\n this.restoreHandlers.push(() => observer.disconnect());\r\n this.restoreHandlers.push(initScrollObserver({\r\n ...this.bypassOptions,\r\n scrollCb: this.scrollCb,\r\n doc: shadowRoot,\r\n mirror: this.mirror,\r\n }));\r\n setTimeout(() => {\r\n if (shadowRoot.adoptedStyleSheets &&\r\n shadowRoot.adoptedStyleSheets.length > 0)\r\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n this.restoreHandlers.push(initAdoptedStyleSheetObserver({\r\n mirror: this.mirror,\r\n stylesheetManager: this.bypassOptions.stylesheetManager,\r\n }, shadowRoot));\r\n }, 0);\r\n }\r\n observeAttachShadow(iframeElement) {\r\n if (!iframeElement.contentWindow || !iframeElement.contentDocument)\r\n return;\r\n this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\r\n }\r\n patchAttachShadow(element, doc) {\r\n const manager = this;\r\n this.restoreHandlers.push(patch(element.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot && inDom(this))\r\n manager.addShadowRoot(this.shadowRoot, doc);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n reset() {\r\n this.restoreHandlers.forEach((handler) => {\r\n try {\r\n handler();\r\n }\r\n catch (e) {\r\n }\r\n });\r\n this.restoreHandlers = [];\r\n this.shadowDoms = new WeakSet();\r\n }\r\n}\n\nexport { ShadowDomManager, ShadowDomManagerNoop };\n","import { onRequestAnimationFrame, isBlocked } from '../../../utils.js';\nimport { CanvasContext } from '../../../../../types/dist/rrweb-types.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\nimport { getImageBitmapDataUrlWorkerURL as t } from '../../../../../rrweb-worker/es/rrweb-worker/index.js';\nimport { callbackWrapper, registerErrorHandler } from '../../error-handler.js';\n\nclass CanvasManagerNoop {\r\n reset() {\r\n }\r\n freeze() {\r\n }\r\n unfreeze() {\r\n }\r\n lock() {\r\n }\r\n unlock() {\r\n }\r\n snapshot() {\r\n }\r\n}\r\nclass CanvasManager {\r\n reset() {\r\n this.pendingCanvasMutations.clear();\r\n this.resetObservers && this.resetObservers();\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n }\r\n lock() {\r\n this.locked = true;\r\n }\r\n unlock() {\r\n this.locked = false;\r\n }\r\n constructor(options) {\r\n this.pendingCanvasMutations = new Map();\r\n this.rafStamps = { latestId: 0, invokeId: null };\r\n this.frozen = false;\r\n this.locked = false;\r\n this.processMutation = (target, mutation) => {\r\n const newFrame = this.rafStamps.invokeId &&\r\n this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n if (newFrame || !this.rafStamps.invokeId)\r\n this.rafStamps.invokeId = this.rafStamps.latestId;\r\n if (!this.pendingCanvasMutations.has(target)) {\r\n this.pendingCanvasMutations.set(target, []);\r\n }\r\n this.pendingCanvasMutations.get(target).push(mutation);\r\n };\r\n const { sampling = 'all', win, blockClass, blockSelector, unblockSelector, maxCanvasSize, recordCanvas, dataURLOptions, errorHandler, } = options;\r\n this.mutationCb = options.mutationCb;\r\n this.mirror = options.mirror;\r\n this.options = options;\r\n if (errorHandler) {\r\n registerErrorHandler(errorHandler);\r\n }\r\n if (options.enableManualSnapshot) {\r\n return;\r\n }\r\n callbackWrapper(() => {\r\n if (recordCanvas && sampling === 'all')\r\n this.initCanvasMutationObserver(win, blockClass, blockSelector, unblockSelector);\r\n if (recordCanvas && typeof sampling === 'number')\r\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, {\r\n dataURLOptions,\r\n });\r\n })();\r\n }\r\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, options) {\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector, true);\r\n const rafId = this.takeSnapshot(false, fps, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, options.dataURLOptions);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n initCanvasMutationObserver(win, blockClass, blockSelector, unblockSelector) {\r\n this.startRAFTimestamping();\r\n this.startPendingCanvasMutationFlusher();\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector, false);\r\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, unblockSelector);\r\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, unblockSelector, this.mirror);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n canvas2DReset();\r\n canvasWebGL1and2Reset();\r\n };\r\n }\r\n snapshot(canvasElement) {\r\n const { options } = this;\r\n const rafId = this.takeSnapshot(true, options.sampling === 'all' ? 2 : options.sampling || 2, options.win, options.blockClass, options.blockSelector, options.unblockSelector, options.maxCanvasSize, options.dataURLOptions, canvasElement);\r\n this.resetObservers = () => {\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n takeSnapshot(isManualSnapshot, fps, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, dataURLOptions, canvasElement) {\r\n const snapshotInProgressMap = new Map();\r\n const worker = new Worker(t());\r\n worker.onmessage = (e) => {\r\n const data = e.data;\r\n const { id } = data;\r\n snapshotInProgressMap.set(id, false);\r\n if (!('base64' in data))\r\n return;\r\n const { base64, type, width, height } = data;\r\n this.mutationCb({\r\n id,\r\n type: CanvasContext['2D'],\r\n commands: [\r\n {\r\n property: 'clearRect',\r\n args: [0, 0, width, height],\r\n },\r\n {\r\n property: 'drawImage',\r\n args: [\r\n {\r\n rr_type: 'ImageBitmap',\r\n args: [\r\n {\r\n rr_type: 'Blob',\r\n data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n type,\r\n },\r\n ],\r\n },\r\n 0,\r\n 0,\r\n width,\r\n height,\r\n ],\r\n },\r\n ],\r\n });\r\n };\r\n const timeBetweenSnapshots = 1000 / fps;\r\n let lastSnapshotTime = 0;\r\n let rafId;\r\n const getCanvas = (canvasElement) => {\r\n if (canvasElement) {\r\n return [canvasElement];\r\n }\r\n const matchedCanvas = [];\r\n win.document.querySelectorAll('canvas').forEach((canvas) => {\r\n if (!isBlocked(canvas, blockClass, blockSelector, unblockSelector, true)) {\r\n matchedCanvas.push(canvas);\r\n }\r\n });\r\n return matchedCanvas;\r\n };\r\n const takeCanvasSnapshots = (timestamp) => {\r\n if (lastSnapshotTime &&\r\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n rafId = onRequestAnimationFrame(takeCanvasSnapshots);\r\n return;\r\n }\r\n lastSnapshotTime = timestamp;\r\n getCanvas(canvasElement).forEach((canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n if (snapshotInProgressMap.get(id))\r\n return;\r\n if (!canvas.width || !canvas.height)\r\n return;\r\n snapshotInProgressMap.set(id, true);\r\n if (!isManualSnapshot &&\r\n ['webgl', 'webgl2'].includes(canvas.__context)) {\r\n const context = canvas.getContext(canvas.__context);\r\n if (context?.getContextAttributes()?.preserveDrawingBuffer === false) {\r\n context.clear(context.COLOR_BUFFER_BIT);\r\n }\r\n }\r\n createImageBitmap(canvas)\r\n .then((bitmap) => {\r\n worker.postMessage({\r\n id,\r\n bitmap,\r\n width: canvas.width,\r\n height: canvas.height,\r\n dataURLOptions,\r\n maxCanvasSize,\r\n }, [bitmap]);\r\n })\r\n .catch((error) => {\r\n callbackWrapper(() => {\r\n throw error;\r\n })();\r\n });\r\n });\r\n rafId = onRequestAnimationFrame(takeCanvasSnapshots);\r\n };\r\n rafId = onRequestAnimationFrame(takeCanvasSnapshots);\r\n return rafId;\r\n }\r\n startPendingCanvasMutationFlusher() {\r\n onRequestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n startRAFTimestamping() {\r\n const setLatestRAFTimestamp = (timestamp) => {\r\n this.rafStamps.latestId = timestamp;\r\n onRequestAnimationFrame(setLatestRAFTimestamp);\r\n };\r\n onRequestAnimationFrame(setLatestRAFTimestamp);\r\n }\r\n flushPendingCanvasMutations() {\r\n this.pendingCanvasMutations.forEach((values, canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n this.flushPendingCanvasMutationFor(canvas, id);\r\n });\r\n onRequestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n flushPendingCanvasMutationFor(canvas, id) {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n if (!valuesWithType || id === -1)\r\n return;\r\n const values = valuesWithType.map((value) => {\r\n const { type, ...rest } = value;\r\n return rest;\r\n });\r\n const { type } = valuesWithType[0];\r\n this.mutationCb({ id, type, commands: values });\r\n this.pendingCanvasMutations.delete(canvas);\r\n }\r\n}\n\nexport { CanvasManager, CanvasManagerNoop };\n","import { stringifyRule } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { StyleSheetMirror } from '../utils.js';\n\nclass StylesheetManager {\r\n constructor(options) {\r\n this.trackedLinkElements = new WeakSet();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.mutationCb = options.mutationCb;\r\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n }\r\n attachLinkElement(linkEl, childSn) {\r\n if ('_cssText' in childSn.attributes)\r\n this.mutationCb({\r\n adds: [],\r\n removes: [],\r\n texts: [],\r\n attributes: [\r\n {\r\n id: childSn.id,\r\n attributes: childSn\r\n .attributes,\r\n },\r\n ],\r\n });\r\n this.trackLinkElement(linkEl);\r\n }\r\n trackLinkElement(linkEl) {\r\n if (this.trackedLinkElements.has(linkEl))\r\n return;\r\n this.trackedLinkElements.add(linkEl);\r\n this.trackStylesheetInLinkElement(linkEl);\r\n }\r\n adoptStyleSheets(sheets, hostId) {\r\n if (sheets.length === 0)\r\n return;\r\n const adoptedStyleSheetData = {\r\n id: hostId,\r\n styleIds: [],\r\n };\r\n const styles = [];\r\n for (const sheet of sheets) {\r\n let styleId;\r\n if (!this.styleMirror.has(sheet)) {\r\n styleId = this.styleMirror.add(sheet);\r\n styles.push({\r\n styleId,\r\n rules: Array.from(sheet.rules || CSSRule, (r, index) => ({\r\n rule: stringifyRule(r),\r\n index,\r\n })),\r\n });\r\n }\r\n else\r\n styleId = this.styleMirror.getId(sheet);\r\n adoptedStyleSheetData.styleIds.push(styleId);\r\n }\r\n if (styles.length > 0)\r\n adoptedStyleSheetData.styles = styles;\r\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n }\r\n reset() {\r\n this.styleMirror.reset();\r\n this.trackedLinkElements = new WeakSet();\r\n }\r\n trackStylesheetInLinkElement(linkEl) {\r\n }\r\n}\n\nexport { StylesheetManager };\n","import { onRequestAnimationFrame } from '../utils.js';\n\nclass ProcessedNodeManager {\r\n constructor() {\r\n this.nodeMap = new WeakMap();\r\n this.loop = true;\r\n this.periodicallyClear();\r\n }\r\n periodicallyClear() {\r\n onRequestAnimationFrame(() => {\r\n this.clear();\r\n if (this.loop)\r\n this.periodicallyClear();\r\n });\r\n }\r\n inOtherBuffer(node, thisBuffer) {\r\n const buffers = this.nodeMap.get(node);\r\n return (buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer));\r\n }\r\n add(node, buffer) {\r\n this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\r\n }\r\n clear() {\r\n this.nodeMap = new WeakMap();\r\n }\r\n destroy() {\r\n this.loop = false;\r\n }\r\n}\n\nexport { ProcessedNodeManager as default };\n","import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, nowTimestamp, getWindowWidth, getWindowHeight, getWindowScroll, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/rrweb-types.js';\nimport { IframeManagerNoop, IframeManager } from './iframe-manager.js';\nimport { ShadowDomManagerNoop, ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManagerNoop } from './observers/canvas/canvas-manager.js';\nexport { CanvasManager } from './observers/canvas/canvas-manager.js';\nimport { StylesheetManager } from './stylesheet-manager.js';\nimport ProcessedNodeManager from './processed-node-manager.js';\nimport { callbackWrapper, unregisterErrorHandler, registerErrorHandler } from './error-handler.js';\n\nlet wrappedEmit;\r\nlet _wrappedEmit;\r\nlet _takeFullSnapshot;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, unblockSelector = null, ignoreClass = 'rr-ignore', ignoreSelector = null, maskAllText = false, maskTextClass = 'rr-mask', unmaskTextClass = null, maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskAttributeFn, maskInputFn, maskTextFn, maxCanvasSize = null, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordCanvas = false, recordCrossOriginIframes = false, recordAfter = options.recordAfter === 'DOMContentLoaded'\r\n ? options.recordAfter\r\n : 'load', userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), errorHandler, onMutation, getCanvasManager, } = options;\r\n registerErrorHandler(errorHandler);\r\n const inEmittingFrame = recordCrossOriginIframes\r\n ? window.parent === window\r\n : true;\r\n let passEmitsToParent = false;\r\n if (!inEmittingFrame) {\r\n try {\r\n if (window.parent.document) {\r\n passEmitsToParent = false;\r\n }\r\n }\r\n catch (e) {\r\n passEmitsToParent = true;\r\n }\r\n }\r\n if (inEmittingFrame && !emit) {\r\n throw new Error('emit function is required');\r\n }\r\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n sampling.mousemove = mousemoveWait;\r\n }\r\n mirror.reset();\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n radio: true,\r\n checkbox: true,\r\n }\r\n : _maskInputOptions !== undefined\r\n ? _maskInputOptions\r\n : {};\r\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n ? {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaVerification: true,\r\n headMetaAuthorship: _slimDOMOptions === 'all',\r\n headMetaDescKeywords: _slimDOMOptions === 'all',\r\n }\r\n : _slimDOMOptions\r\n ? _slimDOMOptions\r\n : {};\r\n polyfill();\r\n let lastFullSnapshotEvent;\r\n let incrementalSnapshotCount = 0;\r\n const eventProcessor = (e) => {\r\n for (const plugin of plugins || []) {\r\n if (plugin.eventProcessor) {\r\n e = plugin.eventProcessor(e);\r\n }\r\n }\r\n if (packFn &&\r\n !passEmitsToParent) {\r\n e = packFn(e);\r\n }\r\n return e;\r\n };\r\n wrappedEmit = (r, isCheckout) => {\r\n const e = r;\r\n e.timestamp = nowTimestamp();\r\n if (mutationBuffers[0]?.isFrozen() &&\r\n e.type !== EventType.FullSnapshot &&\r\n !(e.type === EventType.IncrementalSnapshot &&\r\n e.data.source === IncrementalSource.Mutation)) {\r\n mutationBuffers.forEach((buf) => buf.unfreeze());\r\n }\r\n if (inEmittingFrame) {\r\n emit?.(eventProcessor(e), isCheckout);\r\n }\r\n else if (passEmitsToParent) {\r\n const message = {\r\n type: 'rrweb',\r\n event: eventProcessor(e),\r\n origin: window.location.origin,\r\n isCheckout,\r\n };\r\n window.parent.postMessage(message, '*');\r\n }\r\n if (e.type === EventType.FullSnapshot) {\r\n lastFullSnapshotEvent = e;\r\n incrementalSnapshotCount = 0;\r\n }\r\n else if (e.type === EventType.IncrementalSnapshot) {\r\n if (e.data.source === IncrementalSource.Mutation &&\r\n e.data.isAttachIframe) {\r\n return;\r\n }\r\n incrementalSnapshotCount++;\r\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n const exceedTime = checkoutEveryNms &&\r\n lastFullSnapshotEvent &&\r\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n if (exceedCount || exceedTime) {\r\n takeFullSnapshot(true);\r\n }\r\n }\r\n };\r\n _wrappedEmit = wrappedEmit;\r\n const wrappedMutationEmit = (m) => {\r\n wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n ...m,\r\n },\r\n });\r\n };\r\n const wrappedScrollEmit = (p) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Scroll,\r\n ...p,\r\n },\r\n });\r\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.CanvasMutation,\r\n ...p,\r\n },\r\n });\r\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.AdoptedStyleSheet,\r\n ...a,\r\n },\r\n });\r\n const stylesheetManager = new StylesheetManager({\r\n mutationCb: wrappedMutationEmit,\r\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n });\r\n const iframeManager = typeof __RRWEB_EXCLUDE_IFRAME__ === 'boolean' && __RRWEB_EXCLUDE_IFRAME__\r\n ? new IframeManagerNoop()\r\n : new IframeManager({\r\n mirror,\r\n mutationCb: wrappedMutationEmit,\r\n stylesheetManager: stylesheetManager,\r\n recordCrossOriginIframes,\r\n wrappedEmit,\r\n });\r\n for (const plugin of plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({\r\n nodeMirror: mirror,\r\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n });\r\n }\r\n const processedNodeManager = new ProcessedNodeManager();\r\n const canvasManager = _getCanvasManager(getCanvasManager, {\r\n mirror,\r\n win: window,\r\n mutationCb: (p) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.CanvasMutation,\r\n ...p,\r\n },\r\n }),\r\n recordCanvas,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maxCanvasSize,\r\n sampling: sampling['canvas'],\r\n dataURLOptions,\r\n errorHandler,\r\n });\r\n const shadowDomManager = typeof __RRWEB_EXCLUDE_SHADOW_DOM__ === 'boolean' &&\r\n __RRWEB_EXCLUDE_SHADOW_DOM__\r\n ? new ShadowDomManagerNoop()\r\n : new ShadowDomManager({\r\n mutationCb: wrappedMutationEmit,\r\n scrollCb: wrappedScrollEmit,\r\n bypassOptions: {\r\n onMutation,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n dataURLOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n recordCanvas,\r\n inlineImages,\r\n sampling,\r\n slimDOMOptions,\r\n iframeManager,\r\n stylesheetManager,\r\n canvasManager,\r\n keepIframeSrcFn,\r\n processedNodeManager,\r\n },\r\n mirror,\r\n });\r\n const takeFullSnapshot = (isCheckout = false) => {\r\n wrappedEmit({\r\n type: EventType.Meta,\r\n data: {\r\n href: window.location.href,\r\n width: getWindowWidth(),\r\n height: getWindowHeight(),\r\n },\r\n }, isCheckout);\r\n stylesheetManager.reset();\r\n shadowDomManager.init();\r\n mutationBuffers.forEach((buf) => buf.lock());\r\n const node = snapshot(document, {\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n inlineStylesheet,\r\n maskAllInputs: maskInputOptions,\r\n maskAttributeFn,\r\n maskInputFn,\r\n maskTextFn,\r\n slimDOM: slimDOMOptions,\r\n dataURLOptions,\r\n recordCanvas,\r\n inlineImages,\r\n onSerialize: (n) => {\r\n if (isSerializedIframe(n, mirror)) {\r\n iframeManager.addIframe(n);\r\n }\r\n if (isSerializedStylesheet(n, mirror)) {\r\n stylesheetManager.trackLinkElement(n);\r\n }\r\n if (hasShadowRoot(n)) {\r\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n iframeManager.attachIframe(iframe, childSn);\r\n shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (linkEl, childSn) => {\r\n stylesheetManager.attachLinkElement(linkEl, childSn);\r\n },\r\n keepIframeSrcFn,\r\n });\r\n if (!node) {\r\n return console.warn('Failed to snapshot the document');\r\n }\r\n wrappedEmit({\r\n type: EventType.FullSnapshot,\r\n data: {\r\n node,\r\n initialOffset: getWindowScroll(window),\r\n },\r\n });\r\n mutationBuffers.forEach((buf) => buf.unlock());\r\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n };\r\n _takeFullSnapshot = takeFullSnapshot;\r\n try {\r\n const handlers = [];\r\n const observe = (doc) => {\r\n return callbackWrapper(initObservers)({\r\n onMutation,\r\n mutationCb: wrappedMutationEmit,\r\n mousemoveCb: (positions, source) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source,\r\n positions,\r\n },\r\n }),\r\n mouseInteractionCb: (d) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.MouseInteraction,\r\n ...d,\r\n },\r\n }),\r\n scrollCb: wrappedScrollEmit,\r\n viewportResizeCb: (d) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.ViewportResize,\r\n ...d,\r\n },\r\n }),\r\n inputCb: (v) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Input,\r\n ...v,\r\n },\r\n }),\r\n mediaInteractionCb: (p) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.MediaInteraction,\r\n ...p,\r\n },\r\n }),\r\n styleSheetRuleCb: (r) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.StyleSheetRule,\r\n ...r,\r\n },\r\n }),\r\n styleDeclarationCb: (r) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.StyleDeclaration,\r\n ...r,\r\n },\r\n }),\r\n canvasMutationCb: wrappedCanvasMutationEmit,\r\n fontCb: (p) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Font,\r\n ...p,\r\n },\r\n }),\r\n selectionCb: (p) => {\r\n wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Selection,\r\n ...p,\r\n },\r\n });\r\n },\r\n customElementCb: (c) => {\r\n wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.CustomElement,\r\n ...c,\r\n },\r\n });\r\n },\r\n blockClass,\r\n ignoreClass,\r\n ignoreSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n maskInputOptions,\r\n inlineStylesheet,\r\n sampling,\r\n recordCanvas,\r\n inlineImages,\r\n userTriggeredOnInput,\r\n collectFonts,\r\n doc,\r\n maskAttributeFn,\r\n maskInputFn,\r\n maskTextFn,\r\n keepIframeSrcFn,\r\n blockSelector,\r\n unblockSelector,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n mirror,\r\n iframeManager,\r\n stylesheetManager,\r\n shadowDomManager,\r\n processedNodeManager,\r\n canvasManager,\r\n ignoreCSSAttributes,\r\n plugins: plugins\r\n ?.filter((p) => p.observer)\r\n ?.map((p) => ({\r\n observer: p.observer,\r\n options: p.options,\r\n callback: (payload) => wrappedEmit({\r\n type: EventType.Plugin,\r\n data: {\r\n plugin: p.name,\r\n payload,\r\n },\r\n }),\r\n })) || [],\r\n }, {});\r\n };\r\n iframeManager.addLoadListener((iframeEl) => {\r\n try {\r\n handlers.push(observe(iframeEl.contentDocument));\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n });\r\n const init = () => {\r\n takeFullSnapshot();\r\n handlers.push(observe(document));\r\n };\r\n if (document.readyState === 'interactive' ||\r\n document.readyState === 'complete') {\r\n init();\r\n }\r\n else {\r\n handlers.push(on('DOMContentLoaded', () => {\r\n wrappedEmit({\r\n type: EventType.DomContentLoaded,\r\n data: {},\r\n });\r\n if (recordAfter === 'DOMContentLoaded')\r\n init();\r\n }));\r\n handlers.push(on('load', () => {\r\n wrappedEmit({\r\n type: EventType.Load,\r\n data: {},\r\n });\r\n if (recordAfter === 'load')\r\n init();\r\n }, window));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n processedNodeManager.destroy();\r\n _takeFullSnapshot = undefined;\r\n unregisterErrorHandler();\r\n };\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n}\r\nfunction addCustomEvent(tag, payload) {\r\n if (!_wrappedEmit) {\r\n throw new Error('please add custom event after start recording');\r\n }\r\n wrappedEmit({\r\n type: EventType.Custom,\r\n data: {\r\n tag,\r\n payload,\r\n },\r\n });\r\n}\r\nfunction freezePage() {\r\n mutationBuffers.forEach((buf) => buf.freeze());\r\n}\r\nfunction takeFullSnapshot(isCheckout) {\r\n if (!_takeFullSnapshot) {\r\n throw new Error('please take full snapshot after start recording');\r\n }\r\n _takeFullSnapshot(isCheckout);\r\n}\r\nrecord.mirror = mirror;\r\nrecord.takeFullSnapshot = takeFullSnapshot;\r\nfunction _getCanvasManager(getCanvasManagerFn, options) {\r\n try {\r\n return getCanvasManagerFn\r\n ? getCanvasManagerFn(options)\r\n : new CanvasManagerNoop();\r\n }\r\n catch {\r\n console.warn('Unable to initialize CanvasManager');\r\n return new CanvasManagerNoop();\r\n }\r\n}\n\nexport { addCustomEvent, record as default, freezePage, mirror, takeFullSnapshot };\n","/**\n * Converts a timestamp to ms, if it was in s, or keeps it as ms.\n */\nexport function timestampToMs(timestamp: number): number {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp : timestamp * 1000;\n}\n\n/**\n * Converts a timestamp to s, if it was in ms, or keeps it as s.\n */\nexport function timestampToS(timestamp: number): number {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1000 : timestamp;\n}\n","import { EventType } from '@sentry-internal/rrweb';\nimport type { Breadcrumb } from '@sentry/types';\nimport { normalize } from '@sentry/utils';\n\nimport type { ReplayContainer } from '../../types';\n\n/**\n * Add a breadcrumb event to replay.\n */\nexport function addBreadcrumbEvent(replay: ReplayContainer, breadcrumb: Breadcrumb): void {\n if (breadcrumb.category === 'sentry.transaction') {\n return;\n }\n\n if (['ui.click', 'ui.input'].includes(breadcrumb.category as string)) {\n replay.triggerUserActivity();\n } else {\n replay.checkAndHandleExpiredSession();\n }\n\n replay.addUpdate(() => {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.throttledAddEvent({\n type: EventType.Custom,\n // TODO: We were converting from ms to seconds for breadcrumbs, spans,\n // but maybe we should just keep them as milliseconds\n timestamp: (breadcrumb.timestamp || 0) * 1000,\n data: {\n tag: 'breadcrumb',\n // normalize to max. 10 depth and 1_000 properties per object\n payload: normalize(breadcrumb, 10, 1_000),\n },\n });\n\n // Do not flush after console log messages\n return breadcrumb.category === 'console';\n });\n}\n","import type { INode } from '@sentry-internal/rrweb-snapshot';\n\nconst INTERACTIVE_SELECTOR = 'button,a';\n\n/** Get the closest interactive parent element, or else return the given element. */\nexport function getClosestInteractive(element: Element): Element {\n const closestInteractive = element.closest(INTERACTIVE_SELECTOR);\n return closestInteractive || element;\n}\n\n/**\n * For clicks, we check if the target is inside of a button or link\n * If so, we use this as the target instead\n * This is useful because if you click on the image in <button><img></button>,\n * The target will be the image, not the button, which we don't want here\n */\nexport function getClickTargetNode(event: Event | MouseEvent | Node): Node | INode | null {\n const target = getTargetNode(event);\n\n if (!target || !(target instanceof Element)) {\n return target;\n }\n\n return getClosestInteractive(target);\n}\n\n/** Get the event target node. */\nexport function getTargetNode(event: Node | { target: EventTarget | null }): Node | INode | null {\n if (isEventWithTarget(event)) {\n return event.target as Node | null;\n }\n\n return event;\n}\n\nfunction isEventWithTarget(event: unknown): event is { target: EventTarget | null } {\n return typeof event === 'object' && !!event && 'target' in event;\n}\n","import { fill } from '@sentry/utils';\n\nimport { WINDOW } from '../../constants';\n\ntype WindowOpenHandler = () => void;\n\nlet handlers: undefined | WindowOpenHandler[];\n\n/**\n * Register a handler to be called when `window.open()` is called.\n * Returns a cleanup function.\n */\nexport function onWindowOpen(cb: WindowOpenHandler): () => void {\n // Ensure to only register this once\n if (!handlers) {\n handlers = [];\n monkeyPatchWindowOpen();\n }\n\n handlers.push(cb);\n\n return () => {\n const pos = handlers ? handlers.indexOf(cb) : -1;\n if (pos > -1) {\n (handlers as WindowOpenHandler[]).splice(pos, 1);\n }\n };\n}\n\nfunction monkeyPatchWindowOpen(): void {\n fill(WINDOW, 'open', function (originalWindowOpen: () => void): () => void {\n return function (...args: unknown[]): void {\n if (handlers) {\n try {\n handlers.forEach(handler => handler());\n } catch (e) {\n // ignore errors in here\n }\n }\n\n return originalWindowOpen.apply(WINDOW, args);\n };\n });\n}\n","import { IncrementalSource, MouseInteractions, record } from '@sentry-internal/rrweb';\nimport type { Breadcrumb } from '@sentry/types';\n\nimport { WINDOW } from '../constants';\nimport type {\n RecordingEvent,\n ReplayClickDetector,\n ReplayContainer,\n ReplayMultiClickFrame,\n ReplaySlowClickFrame,\n SlowClickConfig,\n} from '../types';\nimport { ReplayEventTypeIncrementalSnapshot } from '../types';\nimport { timestampToS } from '../util/timestamp';\nimport { addBreadcrumbEvent } from './util/addBreadcrumbEvent';\nimport { getClosestInteractive } from './util/domUtils';\nimport { onWindowOpen } from './util/onWindowOpen';\n\ntype ClickBreadcrumb = Breadcrumb & {\n timestamp: number;\n};\n\ninterface Click {\n timestamp: number;\n mutationAfter?: number;\n scrollAfter?: number;\n clickBreadcrumb: ClickBreadcrumb;\n clickCount: number;\n node: HTMLElement;\n}\n\ntype IncrementalRecordingEvent = RecordingEvent & {\n type: typeof ReplayEventTypeIncrementalSnapshot;\n data: { source: IncrementalSource };\n};\n\ntype IncrementalMouseInteractionRecordingEvent = IncrementalRecordingEvent & {\n type: typeof ReplayEventTypeIncrementalSnapshot;\n data: { type: MouseInteractions; id: number };\n};\n\n/** Handle a click. */\nexport function handleClick(clickDetector: ReplayClickDetector, clickBreadcrumb: Breadcrumb, node: HTMLElement): void {\n clickDetector.handleClick(clickBreadcrumb, node);\n}\n\n/** A click detector class that can be used to detect slow or rage clicks on elements. */\nexport class ClickDetector implements ReplayClickDetector {\n // protected for testing\n protected _lastMutation: number;\n protected _lastScroll: number;\n\n private _clicks: Click[];\n private _teardown: undefined | (() => void);\n\n private _threshold: number;\n private _scollTimeout: number;\n private _timeout: number;\n private _ignoreSelector: string;\n\n private _replay: ReplayContainer;\n private _checkClickTimeout?: ReturnType<typeof setTimeout>;\n private _addBreadcrumbEvent: typeof addBreadcrumbEvent;\n\n public constructor(\n replay: ReplayContainer,\n slowClickConfig: SlowClickConfig,\n // Just for easier testing\n _addBreadcrumbEvent = addBreadcrumbEvent,\n ) {\n this._lastMutation = 0;\n this._lastScroll = 0;\n this._clicks = [];\n\n // We want everything in s, but options are in ms\n this._timeout = slowClickConfig.timeout / 1000;\n this._threshold = slowClickConfig.threshold / 1000;\n this._scollTimeout = slowClickConfig.scrollTimeout / 1000;\n this._replay = replay;\n this._ignoreSelector = slowClickConfig.ignoreSelector;\n this._addBreadcrumbEvent = _addBreadcrumbEvent;\n }\n\n /** Register click detection handlers on mutation or scroll. */\n public addListeners(): void {\n const cleanupWindowOpen = onWindowOpen(() => {\n // Treat window.open as mutation\n this._lastMutation = nowInSeconds();\n });\n\n this._teardown = () => {\n cleanupWindowOpen();\n\n this._clicks = [];\n this._lastMutation = 0;\n this._lastScroll = 0;\n };\n }\n\n /** Clean up listeners. */\n public removeListeners(): void {\n if (this._teardown) {\n this._teardown();\n }\n\n if (this._checkClickTimeout) {\n clearTimeout(this._checkClickTimeout);\n }\n }\n\n /** @inheritDoc */\n public handleClick(breadcrumb: Breadcrumb, node: HTMLElement): void {\n if (ignoreElement(node, this._ignoreSelector) || !isClickBreadcrumb(breadcrumb)) {\n return;\n }\n\n const newClick: Click = {\n timestamp: timestampToS(breadcrumb.timestamp),\n clickBreadcrumb: breadcrumb,\n // Set this to 0 so we know it originates from the click breadcrumb\n clickCount: 0,\n node,\n };\n\n // If there was a click in the last 1s on the same element, ignore it - only keep a single reference per second\n if (\n this._clicks.some(click => click.node === newClick.node && Math.abs(click.timestamp - newClick.timestamp) < 1)\n ) {\n return;\n }\n\n this._clicks.push(newClick);\n\n // If this is the first new click, set a timeout to check for multi clicks\n if (this._clicks.length === 1) {\n this._scheduleCheckClicks();\n }\n }\n\n /** @inheritDoc */\n public registerMutation(timestamp = Date.now()): void {\n this._lastMutation = timestampToS(timestamp);\n }\n\n /** @inheritDoc */\n public registerScroll(timestamp = Date.now()): void {\n this._lastScroll = timestampToS(timestamp);\n }\n\n /** @inheritDoc */\n public registerClick(element: HTMLElement): void {\n const node = getClosestInteractive(element);\n this._handleMultiClick(node as HTMLElement);\n }\n\n /** Count multiple clicks on elements. */\n private _handleMultiClick(node: HTMLElement): void {\n this._getClicks(node).forEach(click => {\n click.clickCount++;\n });\n }\n\n /** Get all pending clicks for a given node. */\n private _getClicks(node: HTMLElement): Click[] {\n return this._clicks.filter(click => click.node === node);\n }\n\n /** Check the clicks that happened. */\n private _checkClicks(): void {\n const timedOutClicks: Click[] = [];\n\n const now = nowInSeconds();\n\n this._clicks.forEach(click => {\n if (!click.mutationAfter && this._lastMutation) {\n click.mutationAfter = click.timestamp <= this._lastMutation ? this._lastMutation - click.timestamp : undefined;\n }\n if (!click.scrollAfter && this._lastScroll) {\n click.scrollAfter = click.timestamp <= this._lastScroll ? this._lastScroll - click.timestamp : undefined;\n }\n\n // All of these are in seconds!\n if (click.timestamp + this._timeout <= now) {\n timedOutClicks.push(click);\n }\n });\n\n // Remove \"old\" clicks\n for (const click of timedOutClicks) {\n const pos = this._clicks.indexOf(click);\n\n if (pos > -1) {\n this._generateBreadcrumbs(click);\n this._clicks.splice(pos, 1);\n }\n }\n\n // Trigger new check, unless no clicks left\n if (this._clicks.length) {\n this._scheduleCheckClicks();\n }\n }\n\n /** Generate matching breadcrumb(s) for the click. */\n private _generateBreadcrumbs(click: Click): void {\n const replay = this._replay;\n const hadScroll = click.scrollAfter && click.scrollAfter <= this._scollTimeout;\n const hadMutation = click.mutationAfter && click.mutationAfter <= this._threshold;\n\n const isSlowClick = !hadScroll && !hadMutation;\n const { clickCount, clickBreadcrumb } = click;\n\n // Slow click\n if (isSlowClick) {\n // If `mutationAfter` is set, it means a mutation happened after the threshold, but before the timeout\n // If not, it means we just timed out without scroll & mutation\n const timeAfterClickMs = Math.min(click.mutationAfter || this._timeout, this._timeout) * 1000;\n const endReason = timeAfterClickMs < this._timeout * 1000 ? 'mutation' : 'timeout';\n\n const breadcrumb: ReplaySlowClickFrame = {\n type: 'default',\n message: clickBreadcrumb.message,\n timestamp: clickBreadcrumb.timestamp,\n category: 'ui.slowClickDetected',\n data: {\n ...clickBreadcrumb.data,\n url: WINDOW.location.href,\n route: replay.getCurrentRoute(),\n timeAfterClickMs,\n endReason,\n // If clickCount === 0, it means multiClick was not correctly captured here\n // - we still want to send 1 in this case\n clickCount: clickCount || 1,\n },\n };\n\n this._addBreadcrumbEvent(replay, breadcrumb);\n return;\n }\n\n // Multi click\n if (clickCount > 1) {\n const breadcrumb: ReplayMultiClickFrame = {\n type: 'default',\n message: clickBreadcrumb.message,\n timestamp: clickBreadcrumb.timestamp,\n category: 'ui.multiClick',\n data: {\n ...clickBreadcrumb.data,\n url: WINDOW.location.href,\n route: replay.getCurrentRoute(),\n clickCount,\n metric: true,\n },\n };\n\n this._addBreadcrumbEvent(replay, breadcrumb);\n }\n }\n\n /** Schedule to check current clicks. */\n private _scheduleCheckClicks(): void {\n if (this._checkClickTimeout) {\n clearTimeout(this._checkClickTimeout);\n }\n\n this._checkClickTimeout = setTimeout(() => this._checkClicks(), 1000);\n }\n}\n\nconst SLOW_CLICK_TAGS = ['A', 'BUTTON', 'INPUT'];\n\n/** exported for tests only */\nexport function ignoreElement(node: HTMLElement, ignoreSelector: string): boolean {\n if (!SLOW_CLICK_TAGS.includes(node.tagName)) {\n return true;\n }\n\n // If <input> tag, we only want to consider input[type='submit'] & input[type='button']\n if (node.tagName === 'INPUT' && !['submit', 'button'].includes(node.getAttribute('type') || '')) {\n return true;\n }\n\n // If <a> tag, detect special variants that may not lead to an action\n // If target !== _self, we may open the link somewhere else, which would lead to no action\n // Also, when downloading a file, we may not leave the page, but still not trigger an action\n if (\n node.tagName === 'A' &&\n (node.hasAttribute('download') || (node.hasAttribute('target') && node.getAttribute('target') !== '_self'))\n ) {\n return true;\n }\n\n if (ignoreSelector && node.matches(ignoreSelector)) {\n return true;\n }\n\n return false;\n}\n\nfunction isClickBreadcrumb(breadcrumb: Breadcrumb): breadcrumb is ClickBreadcrumb {\n return !!(breadcrumb.data && typeof breadcrumb.data.nodeId === 'number' && breadcrumb.timestamp);\n}\n\n// This is good enough for us, and is easier to test/mock than `timestampInSeconds`\nfunction nowInSeconds(): number {\n return Date.now() / 1000;\n}\n\n/** Update the click detector based on a recording event of rrweb. */\nexport function updateClickDetectorForRecordingEvent(clickDetector: ReplayClickDetector, event: RecordingEvent): void {\n try {\n // note: We only consider incremental snapshots here\n // This means that any full snapshot is ignored for mutation detection - the reason is that we simply cannot know if a mutation happened here.\n // E.g. think that we are buffering, an error happens and we take a full snapshot because we switched to session mode -\n // in this scenario, we would not know if a dead click happened because of the error, which is a key dead click scenario.\n // Instead, by ignoring full snapshots, we have the risk that we generate a false positive\n // (if a mutation _did_ happen but was \"swallowed\" by the full snapshot)\n // But this should be more unlikely as we'd generally capture the incremental snapshot right away\n\n if (!isIncrementalEvent(event)) {\n return;\n }\n\n const { source } = event.data;\n if (source === IncrementalSource.Mutation) {\n clickDetector.registerMutation(event.timestamp);\n }\n\n if (source === IncrementalSource.Scroll) {\n clickDetector.registerScroll(event.timestamp);\n }\n\n if (isIncrementalMouseInteraction(event)) {\n const { type, id } = event.data;\n const node = record.mirror.getNode(id);\n\n if (node instanceof HTMLElement && type === MouseInteractions.Click) {\n clickDetector.registerClick(node);\n }\n }\n } catch {\n // ignore errors here, e.g. if accessing something that does not exist\n }\n}\n\nfunction isIncrementalEvent(event: RecordingEvent): event is IncrementalRecordingEvent {\n return event.type === ReplayEventTypeIncrementalSnapshot;\n}\n\nfunction isIncrementalMouseInteraction(\n event: IncrementalRecordingEvent,\n): event is IncrementalMouseInteractionRecordingEvent {\n return event.data.source === IncrementalSource.MouseInteraction;\n}\n","type ClassOption = string | RegExp;\n\n/** Duplicate this from @sentry-internal/rrweb so we can export this as well. */\nexport const ReplayEventTypeDomContentLoaded = 0;\nexport const ReplayEventTypeLoad = 1;\nexport const ReplayEventTypeFullSnapshot = 2;\nexport const ReplayEventTypeIncrementalSnapshot = 3;\nexport const ReplayEventTypeMeta = 4;\nexport const ReplayEventTypeCustom = 5;\nexport const ReplayEventTypePlugin = 6;\n\nexport type ReplayEventType =\n | typeof ReplayEventTypeDomContentLoaded\n | typeof ReplayEventTypeLoad\n | typeof ReplayEventTypeFullSnapshot\n | typeof ReplayEventTypeIncrementalSnapshot\n | typeof ReplayEventTypeMeta\n | typeof ReplayEventTypeCustom\n | typeof ReplayEventTypePlugin;\n\n/**\n * This is a partial copy of rrweb's eventWithTime type which only contains the properties\n * we specifcally need in the SDK.\n */\nexport type ReplayEventWithTime = {\n type: ReplayEventType;\n data: unknown;\n timestamp: number;\n delay?: number;\n};\n\n/**\n * This is a partial copy of rrweb's recording options which only contains the properties\n * we specifically us in the SDK. Users can specify additional properties, hence we add the\n * Record<string, unknown> union type.\n */\nexport type RrwebRecordOptions = {\n maskAllText?: boolean;\n maskAllInputs?: boolean;\n blockClass?: ClassOption;\n ignoreClass?: string;\n maskTextClass?: ClassOption;\n maskTextSelector?: string;\n blockSelector?: string;\n maskInputOptions?: Record<string, boolean>;\n} & Record<string, unknown>;\n\nexport interface CanvasManagerInterface {\n reset(): void;\n freeze(): void;\n unfreeze(): void;\n lock(): void;\n unlock(): void;\n snapshot(): void;\n}\n\nexport interface CanvasManagerOptions {\n recordCanvas: boolean;\n enableManualSnapshot?: boolean;\n blockClass: string | RegExp;\n blockSelector: string | null;\n unblockSelector: string | null;\n sampling?: 'all' | number;\n dataURLOptions: Partial<{\n type: string;\n quality: number;\n }>;\n mutationCb: (p: any) => void;\n win: typeof globalThis & Window;\n mirror: any;\n}\n","import type { ReplayBreadcrumbFrame } from '../types/replayFrame';\n\n/**\n * Create a breadcrumb for a replay.\n */\nexport function createBreadcrumb(\n breadcrumb: Omit<ReplayBreadcrumbFrame, 'timestamp' | 'type'> & Partial<Pick<ReplayBreadcrumbFrame, 'timestamp'>>,\n): ReplayBreadcrumbFrame {\n return {\n timestamp: Date.now() / 1000,\n type: 'default',\n ...breadcrumb,\n };\n}\n","var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n const host = n?.host;\r\n return Boolean(host?.shadowRoot === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction escapeImportStatement(rule) {\r\n const { cssText } = rule;\r\n if (cssText.split('\"').length < 3)\r\n return cssText;\r\n const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\r\n if (rule.layerName === '') {\r\n statement.push(`layer`);\r\n }\r\n else if (rule.layerName) {\r\n statement.push(`layer(${rule.layerName})`);\r\n }\r\n if (rule.supportsText) {\r\n statement.push(`supports(${rule.supportsText})`);\r\n }\r\n if (rule.media.length) {\r\n statement.push(rule.media.mediaText);\r\n }\r\n return statement.join(' ') + ';';\r\n}\r\nfunction stringifyStylesheet(s) {\r\n try {\r\n const rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules, stringifyRule).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction stringifyRule(rule) {\r\n let importStringified;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n importStringified =\r\n stringifyStylesheet(rule.styleSheet) ||\r\n escapeImportStatement(rule);\r\n }\r\n catch (error) {\r\n }\r\n }\r\n else if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\r\n return fixSafariColons(rule.cssText);\r\n }\r\n return importStringified || rule.cssText;\r\n}\r\nfunction fixSafariColons(cssStringified) {\r\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\r\n return cssStringified.replace(regex, '$1\\\\$2');\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nfunction isCSSStyleRule(rule) {\r\n return 'selectorText' in rule;\r\n}\r\nclass Mirror {\r\n constructor() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n getId(n) {\r\n if (!n)\r\n return -1;\r\n const id = this.getMeta(n)?.id;\r\n return id ?? -1;\r\n }\r\n getNode(id) {\r\n return this.idNodeMap.get(id) || null;\r\n }\r\n getIds() {\r\n return Array.from(this.idNodeMap.keys());\r\n }\r\n getMeta(n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n }\r\n removeNodeFromMap(n) {\r\n const id = this.getId(n);\r\n this.idNodeMap.delete(id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\r\n }\r\n }\r\n has(id) {\r\n return this.idNodeMap.has(id);\r\n }\r\n hasNode(node) {\r\n return this.nodeMetaMap.has(node);\r\n }\r\n add(n, meta) {\r\n const id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n replace(id, n) {\r\n const oldNode = this.getNode(id);\r\n if (oldNode) {\r\n const meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n }\r\n reset() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n}\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction shouldMaskInput({ maskInputOptions, tagName, type, }) {\r\n if (tagName === 'OPTION') {\r\n tagName = 'SELECT';\r\n }\r\n return Boolean(maskInputOptions[tagName.toLowerCase()] ||\r\n (type && maskInputOptions[type]) ||\r\n type === 'password' ||\r\n (tagName === 'INPUT' && !type && maskInputOptions['text']));\r\n}\r\nfunction maskInputValue({ isMasked, element, value, maskInputFn, }) {\r\n let text = value || '';\r\n if (!isMasked) {\r\n return text;\r\n }\r\n if (maskInputFn) {\r\n text = maskInputFn(text, element);\r\n }\r\n return '*'.repeat(text.length);\r\n}\r\nfunction toLowerCase(str) {\r\n return str.toLowerCase();\r\n}\r\nfunction toUpperCase(str) {\r\n return str.toUpperCase();\r\n}\r\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n const chunkSize = 50;\r\n for (let x = 0; x < canvas.width; x += chunkSize) {\r\n for (let y = 0; y < canvas.height; y += chunkSize) {\r\n const getImageData = ctx.getImageData;\r\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n const pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some((pixel) => pixel !== 0))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isNodeMetaEqual(a, b) {\r\n if (!a || !b || a.type !== b.type)\r\n return false;\r\n if (a.type === NodeType.Document)\r\n return a.compatMode === b.compatMode;\r\n else if (a.type === NodeType.DocumentType)\r\n return (a.name === b.name &&\r\n a.publicId === b.publicId &&\r\n a.systemId === b.systemId);\r\n else if (a.type === NodeType.Comment ||\r\n a.type === NodeType.Text ||\r\n a.type === NodeType.CDATA)\r\n return a.textContent === b.textContent;\r\n else if (a.type === NodeType.Element)\r\n return (a.tagName === b.tagName &&\r\n JSON.stringify(a.attributes) ===\r\n JSON.stringify(b.attributes) &&\r\n a.isSVG === b.isSVG &&\r\n a.needBlock === b.needBlock);\r\n return false;\r\n}\r\nfunction getInputType(element) {\r\n const type = element.type;\r\n return element.hasAttribute('data-rr-is-password')\r\n ? 'password'\r\n : type\r\n ?\r\n toLowerCase(type)\r\n : null;\r\n}\r\nfunction getInputValue(el, tagName, type) {\r\n if (tagName === 'INPUT' && (type === 'radio' || type === 'checkbox')) {\r\n return el.getAttribute('value') || '';\r\n }\r\n return el.value;\r\n}\n\nlet _id = 1;\r\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nconst IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n const processedTagName = toLowerCase(element.tagName);\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction extractOrigin(url) {\r\n let origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nlet canvasService;\r\nlet canvasCtx;\r\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\r\nconst URL_WWW_MATCH = /^www\\..*/i;\r\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\r\n const filePath = path1 || path2 || path3;\r\n const maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\r\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n }\r\n if (filePath[0] === '/') {\r\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\r\n }\r\n const stack = href.split('/');\r\n const parts = filePath.split('/');\r\n stack.pop();\r\n for (const part of parts) {\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\r\n });\r\n}\r\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n let pos = 0;\r\n function collectCharacters(regEx) {\r\n let chars;\r\n const match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n const output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n let url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n let descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n let inParens = false;\r\n while (true) {\r\n const c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n const a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n const a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value, element, maskAttributeFn) {\r\n if (!value) {\r\n return value;\r\n }\r\n if (name === 'src' ||\r\n (name === 'href' && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset') {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style') {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n if (typeof maskAttributeFn === 'function') {\r\n return maskAttributeFn(name, value, element);\r\n }\r\n return value;\r\n}\r\nfunction ignoreAttribute(tagName, name, _value) {\r\n return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector, unblockSelector) {\r\n try {\r\n if (unblockSelector && element.matches(unblockSelector)) {\r\n return false;\r\n }\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (let eIndex = element.classList.length; eIndex--;) {\r\n const className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return false;\r\n}\r\nfunction elementClassMatchesRegex(el, regex) {\r\n for (let eIndex = el.classList.length; eIndex--;) {\r\n const className = el.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n if (!node)\r\n return false;\r\n if (checkAncestors) {\r\n return (distanceToMatch(node, (node) => elementClassMatchesRegex(node, regex)) >= 0);\r\n }\r\n else if (node.nodeType === node.ELEMENT_NODE) {\r\n return elementClassMatchesRegex(node, regex);\r\n }\r\n return false;\r\n}\r\nfunction distanceToMatch(node, matchPredicate, limit = Infinity, distance = 0) {\r\n if (!node)\r\n return -1;\r\n if (node.nodeType !== node.ELEMENT_NODE)\r\n return -1;\r\n if (distance > limit)\r\n return -1;\r\n if (matchPredicate(node))\r\n return distance;\r\n return distanceToMatch(node.parentNode, matchPredicate, limit, distance + 1);\r\n}\r\nfunction createMatchPredicate(className, selector) {\r\n return (node) => {\r\n const el = node;\r\n if (el === null)\r\n return false;\r\n try {\r\n if (className) {\r\n if (typeof className === 'string') {\r\n if (el.matches(`.${className}`))\r\n return true;\r\n }\r\n else if (elementClassMatchesRegex(el, className)) {\r\n return true;\r\n }\r\n }\r\n if (selector && el.matches(selector))\r\n return true;\r\n return false;\r\n }\r\n catch {\r\n return false;\r\n }\r\n };\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText) {\r\n try {\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (el.tagName === 'INPUT') {\r\n const autocomplete = el.getAttribute('autocomplete');\r\n const disallowedAutocompleteValues = [\r\n 'current-password',\r\n 'new-password',\r\n 'cc-number',\r\n 'cc-exp',\r\n 'cc-exp-month',\r\n 'cc-exp-year',\r\n 'cc-csc',\r\n ];\r\n if (disallowedAutocompleteValues.includes(autocomplete)) {\r\n return true;\r\n }\r\n }\r\n let maskDistance = -1;\r\n let unmaskDistance = -1;\r\n if (maskAllText) {\r\n unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector));\r\n if (unmaskDistance < 0) {\r\n return true;\r\n }\r\n maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector), unmaskDistance >= 0 ? unmaskDistance : Infinity);\r\n }\r\n else {\r\n maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector));\r\n if (maskDistance < 0) {\r\n return false;\r\n }\r\n unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector), maskDistance >= 0 ? maskDistance : Infinity);\r\n }\r\n return maskDistance >= 0\r\n ? unmaskDistance >= 0\r\n ? maskDistance <= unmaskDistance\r\n : true\r\n : unmaskDistance >= 0\r\n ? false\r\n : !!maskAllText;\r\n }\r\n catch (e) {\r\n }\r\n return !!maskAllText;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n const win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n let fired = false;\r\n let readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n const timer = setTimeout(() => {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', () => {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n const blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n let fired = false;\r\n let styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n const timer = setTimeout(() => {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', () => {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskAttributeFn, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, inlineStylesheet, maskInputOptions = {}, maskTextFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, } = options;\r\n const rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode,\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId,\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n inlineStylesheet,\r\n maskAttributeFn,\r\n maskInputOptions,\r\n maskInputFn,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n keepIframeSrcFn,\r\n newlyAddedElement,\r\n rootId,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n maskTextFn,\r\n maskInputOptions,\r\n maskInputFn,\r\n rootId,\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId,\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId,\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n const docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n const { maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, maskTextFn, maskInputOptions, maskInputFn, rootId, } = options;\r\n const parentTagName = n.parentNode && n.parentNode.tagName;\r\n let textContent = n.textContent;\r\n const isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n const isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n const isTextarea = parentTagName === 'TEXTAREA' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if (n.parentNode.sheet?.cssRules) {\r\n textContent = stringifyStylesheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(`Cannot get CSS styles from text's parentNode. Error: ${err}`, n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n const forceMask = needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText);\r\n if (!isStyle && !isScript && !isTextarea && textContent && forceMask) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent, n.parentElement)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n if (isTextarea && textContent && (maskInputOptions.textarea || forceMask)) {\r\n textContent = maskInputFn\r\n ? maskInputFn(textContent, n.parentNode)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n if (parentTagName === 'OPTION' && textContent) {\r\n const isInputMasked = shouldMaskInput({\r\n type: null,\r\n tagName: parentTagName,\r\n maskInputOptions,\r\n });\r\n textContent = maskInputValue({\r\n isMasked: needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, isInputMasked),\r\n element: n,\r\n value: textContent,\r\n maskInputFn,\r\n });\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle,\r\n rootId,\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n const { doc, blockClass, blockSelector, unblockSelector, inlineStylesheet, maskInputOptions = {}, maskAttributeFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, rootId, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, } = options;\r\n const needBlock = _isBlockedElement(n, blockClass, blockSelector, unblockSelector);\r\n const tagName = getValidTagName(n);\r\n let attributes = {};\r\n const len = n.attributes.length;\r\n for (let i = 0; i < len; i++) {\r\n const attr = n.attributes[i];\r\n if (attr.name && !ignoreAttribute(tagName, attr.name, attr.value)) {\r\n attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value, n, maskAttributeFn);\r\n }\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n const stylesheet = Array.from(doc.styleSheets).find((s) => {\r\n return s.href === n.href;\r\n });\r\n let cssText = null;\r\n if (stylesheet) {\r\n cssText = stringifyStylesheet(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n const cssText = stringifyStylesheet(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' ||\r\n tagName === 'textarea' ||\r\n tagName === 'select' ||\r\n tagName === 'option') {\r\n const el = n;\r\n const type = getInputType(el);\r\n const value = getInputValue(el, toUpperCase(tagName), type);\r\n const checked = el.checked;\r\n if (type !== 'submit' && type !== 'button' && value) {\r\n const forceMask = needMaskingText(el, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, shouldMaskInput({\r\n type,\r\n tagName: toUpperCase(tagName),\r\n maskInputOptions,\r\n }));\r\n attributes.value = maskInputValue({\r\n isMasked: forceMask,\r\n element: el,\r\n value,\r\n maskInputFn,\r\n });\r\n }\r\n if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n const canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n const blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n const blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n const image = n;\r\n const oldValue = image.crossOrigin;\r\n image.crossOrigin = 'anonymous';\r\n const recordInlineImage = () => {\r\n image.removeEventListener('load', recordInlineImage);\r\n try {\r\n canvasService.width = image.naturalWidth;\r\n canvasService.height = image.naturalHeight;\r\n canvasCtx.drawImage(image, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(`Cannot inline img src=${image.currentSrc}! Error: ${err}`);\r\n }\r\n oldValue\r\n ? (attributes.crossOrigin = oldValue)\r\n : image.removeAttribute('crossorigin');\r\n };\r\n if (image.complete && image.naturalWidth !== 0)\r\n recordInlineImage();\r\n else\r\n image.addEventListener('load', recordInlineImage);\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n attributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n attributes.rr_mediaCurrentTime = n.currentTime;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n const { width, height } = n.getBoundingClientRect();\r\n attributes = {\r\n class: attributes.class,\r\n rr_width: `${width}px`,\r\n rr_height: `${height}px`,\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n let isCustomElement;\r\n try {\r\n if (customElements.get(tagName))\r\n isCustomElement = true;\r\n }\r\n catch (e) {\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName,\r\n attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock,\r\n rootId,\r\n isCustom: isCustomElement,\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined || maybeAttr === null) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n (sn.attributes.rel === 'preload' ||\r\n sn.attributes.rel === 'modulepreload') &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n sn.attributes.href.endsWith('.js')))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, skipChild = false, inlineStylesheet = true, maskInputOptions = {}, maskAttributeFn, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions = {}, inlineImages = false, recordCanvas = false, onSerialize, onIframeLoad, iframeLoadTimeout = 5000, onStylesheetLoad, stylesheetLoadTimeout = 5000, keepIframeSrcFn = () => false, newlyAddedElement = false, } = options;\r\n let { preserveWhiteSpace = true } = options;\r\n const _serializedNode = serializeNode(n, {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskAllText,\r\n unblockSelector,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n keepIframeSrcFn,\r\n newlyAddedElement,\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n let id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n const serializedNode = Object.assign(_serializedNode, { id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n let recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n const shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n const bypassOptions = {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskAllText,\r\n unblockSelector,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n skipChild,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n };\r\n for (const childN of Array.from(n.childNodes)) {\r\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (const childN of Array.from(n.shadowRoot.childNodes)) {\r\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, () => {\r\n const iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n serializedNode.attributes.rel === 'stylesheet') {\r\n onceStylesheetLoaded(n, () => {\r\n if (onStylesheetLoad) {\r\n const serializedLinkNode = serializeNodeWithId(n, {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n const { mirror = new Mirror(), blockClass = 'rr-block', blockSelector = null, unblockSelector = null, maskAllText = false, maskTextClass = 'rr-mask', unmaskTextClass = null, maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, inlineImages = false, recordCanvas = false, maskAllInputs = false, maskAttributeFn, maskTextFn, maskInputFn, slimDOM = false, dataURLOptions, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn = () => false, } = options || {};\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n }\r\n : maskAllInputs === false\r\n ? {}\r\n : maskAllInputs;\r\n const slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true,\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n newlyAddedElement: false,\r\n });\r\n}\r\nfunction visitSnapshot(node, onVisit) {\r\n function walk(current) {\r\n onVisit(current);\r\n if (current.type === NodeType.Document ||\r\n current.type === NodeType.Element) {\r\n current.childNodes.forEach(walk);\r\n }\r\n }\r\n walk(node);\r\n}\r\nfunction cleanupSnapshot() {\r\n _id = 1;\r\n}\n\nconst commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options = {}) {\r\n let lineno = 1;\r\n let column = 1;\r\n function updatePosition(str) {\r\n const lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n const i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n const start = { line: lineno, column };\r\n return (node) => {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n class Position {\r\n constructor(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column };\r\n this.source = options.source;\r\n }\r\n }\r\n Position.prototype.content = css;\r\n const errorsList = [];\r\n function error(msg) {\r\n const err = new Error(`${options.source || ''}:${lineno}:${column}: ${msg}`);\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n const rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList,\r\n },\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n let node;\r\n const rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n const m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n const str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules = []) {\r\n let c;\r\n while ((c = comment())) {\r\n if (c) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n const pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n let i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n const str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str,\r\n });\r\n }\r\n function selector() {\r\n whitespace();\r\n while (css[0] == '}') {\r\n error('extra closing bracket');\r\n css = css.slice(1);\r\n whitespace();\r\n }\r\n const m = match(/^((\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^{])+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const cleanedInput = m[0]\r\n .trim()\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, (m) => {\r\n return m.replace(/,/g, '\\u200C');\r\n });\r\n return customSplit(cleanedInput).map((s) => s.replace(/\\u200C/g, ',').trim());\r\n }\r\n function customSplit(input) {\r\n const result = [];\r\n let currentSegment = '';\r\n let depthParentheses = 0;\r\n let depthBrackets = 0;\r\n let currentStringChar = null;\r\n for (const char of input) {\r\n const hasStringEscape = currentSegment.endsWith('\\\\');\r\n if (currentStringChar) {\r\n if (currentStringChar === char && !hasStringEscape) {\r\n currentStringChar = null;\r\n }\r\n }\r\n else if (char === '(') {\r\n depthParentheses++;\r\n }\r\n else if (char === ')') {\r\n depthParentheses--;\r\n }\r\n else if (char === '[') {\r\n depthBrackets++;\r\n }\r\n else if (char === ']') {\r\n depthBrackets--;\r\n }\r\n else if ('\\'\"'.includes(char)) {\r\n currentStringChar = char;\r\n }\r\n if (char === ',' && depthParentheses === 0 && depthBrackets === 0) {\r\n result.push(currentSegment);\r\n currentSegment = '';\r\n }\r\n else {\r\n currentSegment += char;\r\n }\r\n }\r\n if (currentSegment) {\r\n result.push(currentSegment);\r\n }\r\n return result;\r\n }\r\n function declaration() {\r\n const pos = position();\r\n const propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n const prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(`property missing ':'`);\r\n }\r\n const val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n const ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : '',\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n const decls = [];\r\n if (!open()) {\r\n return error(`missing '{'`);\r\n }\r\n comments(decls);\r\n let decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(`missing '}'`);\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n let m;\r\n const vals = [];\r\n const pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations(),\r\n });\r\n }\r\n function atkeyframes() {\r\n const pos = position();\r\n let m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n const vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n const name = m[1];\r\n if (!open()) {\r\n return error(`@keyframes missing '{'`);\r\n }\r\n let frame;\r\n let frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@keyframes missing '}'`);\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name,\r\n vendor,\r\n keyframes: frames,\r\n });\r\n }\r\n function atsupports() {\r\n const pos = position();\r\n const m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const supports = trim(m[1]);\r\n if (!open()) {\r\n return error(`@supports missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@supports missing '}'`);\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports,\r\n rules: style,\r\n });\r\n }\r\n function athost() {\r\n const pos = position();\r\n const m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(`@host missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@host missing '}'`);\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style,\r\n });\r\n }\r\n function atmedia() {\r\n const pos = position();\r\n const m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const media = trim(m[1]);\r\n if (!open()) {\r\n return error(`@media missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@media missing '}'`);\r\n }\r\n return pos({\r\n type: 'media',\r\n media,\r\n rules: style,\r\n });\r\n }\r\n function atcustommedia() {\r\n const pos = position();\r\n const m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2]),\r\n });\r\n }\r\n function atpage() {\r\n const pos = position();\r\n const m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n const sel = selector() || [];\r\n if (!open()) {\r\n return error(`@page missing '{'`);\r\n }\r\n let decls = comments();\r\n let decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@page missing '}'`);\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls,\r\n });\r\n }\r\n function atdocument() {\r\n const pos = position();\r\n const m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const vendor = trim(m[1]);\r\n const doc = trim(m[2]);\r\n if (!open()) {\r\n return error(`@document missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@document missing '}'`);\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor,\r\n rules: style,\r\n });\r\n }\r\n function atfontface() {\r\n const pos = position();\r\n const m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(`@font-face missing '{'`);\r\n }\r\n let decls = comments();\r\n let decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@font-face missing '}'`);\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls,\r\n });\r\n }\r\n const atimport = _compileAtrule('import');\r\n const atcharset = _compileAtrule('charset');\r\n const atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n const re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return () => {\r\n const pos = position();\r\n const m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n const ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n const pos = position();\r\n const sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations(),\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n const isNode = obj && typeof obj.type === 'string';\r\n const childParent = isNode ? obj : parent;\r\n for (const k of Object.keys(obj)) {\r\n const value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach((v) => {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null,\r\n });\r\n }\r\n return obj;\r\n}\n\nconst tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient',\r\n};\r\nfunction getTagName(n) {\r\n let tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nconst HOVER_SELECTOR = /([^\\\\]):hover/;\r\nconst HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction addHoverClass(cssText, cache) {\r\n const cachedStyle = cache?.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n if (cssText.length >= 1000000) {\r\n return cssText;\r\n }\r\n const ast = parse(cssText, {\r\n silent: true,\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n const selectors = [];\r\n ast.stylesheet.rules.forEach((rule) => {\r\n if ('selectors' in rule) {\r\n (rule.selectors || []).forEach((selector) => {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n });\r\n if (selectors.length === 0) {\r\n return cssText;\r\n }\r\n const selectorMatcher = new RegExp(selectors\r\n .filter((selector, index) => selectors.indexOf(selector) === index)\r\n .sort((a, b) => b.length - a.length)\r\n .map((selector) => {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n const result = cssText.replace(selectorMatcher, (selector) => {\r\n const newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return `${selector}, ${newSelector}`;\r\n });\r\n cache?.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n const stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass,\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n const { doc, hackCss, cache } = options;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n const tagName = getTagName(n);\r\n let node;\r\n if (n.isSVG) {\r\n node = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n if (n.isCustom &&\r\n doc.defaultView?.customElements &&\r\n !doc.defaultView.customElements.get(n.tagName))\r\n doc.defaultView.customElements.define(n.tagName, class extends doc.defaultView.HTMLElement {\r\n });\r\n node = doc.createElement(tagName);\r\n }\r\n const specialAttributes = {};\r\n for (const name in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name)) {\r\n continue;\r\n }\r\n let value = n.attributes[name];\r\n if (tagName === 'option' &&\r\n name === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === null) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name.startsWith('rr_')) {\r\n specialAttributes[name] = value;\r\n continue;\r\n }\r\n const isTextarea = tagName === 'textarea' && name === 'value';\r\n const isRemoteOrDynamicCss = tagName === 'style' && name === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = addHoverClass(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n const child = doc.createTextNode(value);\r\n for (const c of Array.from(node.childNodes)) {\r\n if (c.nodeType === node.TEXT_NODE) {\r\n node.removeChild(c);\r\n }\r\n }\r\n node.appendChild(child);\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name === 'xlink:href') {\r\n node.setAttributeNS('http://www.w3.org/1999/xlink', name, value.toString());\r\n }\r\n else if (name === 'onload' ||\r\n name === 'onclick' ||\r\n name.substring(0, 7) === 'onmouse') {\r\n node.setAttribute('_' + name, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name === 'content') {\r\n node.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n (n.attributes.rel === 'preload' ||\r\n n.attributes.rel === 'modulepreload') &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node.setAttribute(name, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n for (const name in specialAttributes) {\r\n const value = specialAttributes[name];\r\n if (tagName === 'canvas' && name === 'rr_dataURL') {\r\n const image = document.createElement('img');\r\n image.onload = () => {\r\n const ctx = node.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image, 0, 0, image.width, image.height);\r\n }\r\n };\r\n image.src = value.toString();\r\n if (node.RRNodeType)\r\n node.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name === 'rr_dataURL') {\r\n const image = node;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name === 'rr_width') {\r\n node.style.setProperty('width', value.toString());\r\n }\r\n else if (name === 'rr_height') {\r\n node.style.setProperty('height', value.toString());\r\n }\r\n else if (name === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node.currentTime = value;\r\n }\r\n else if (name === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node\r\n .play()\r\n .catch((e) => console.warn('media playback error', e));\r\n break;\r\n case 'paused':\r\n node.pause();\r\n break;\r\n }\r\n }\r\n }\r\n if (n.isShadowHost) {\r\n if (!node.shadowRoot) {\r\n node.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node.shadowRoot.firstChild) {\r\n node.shadowRoot.removeChild(node.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? addHoverClass(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n const { doc, mirror, skipChild = false, hackCss = true, afterAppend, cache, } = options;\r\n if (mirror.has(n.id)) {\r\n const nodeInMirror = mirror.getNode(n.id);\r\n const meta = mirror.getMeta(nodeInMirror);\r\n if (isNodeMetaEqual(meta, n))\r\n return mirror.getNode(n.id);\r\n }\r\n let node = buildNode(n, { doc, hackCss, cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n }\r\n else {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n for (const childN of n.childNodes) {\r\n const childNode = buildNodeWithSN(childN, {\r\n doc,\r\n mirror,\r\n skipChild: false,\r\n hackCss,\r\n afterAppend,\r\n cache,\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n continue;\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else if (n.type === NodeType.Document &&\r\n childN.type == NodeType.Element) {\r\n const htmlElement = childNode;\r\n let body = null;\r\n htmlElement.childNodes.forEach((child) => {\r\n if (child.nodeName === 'BODY')\r\n body = child;\r\n });\r\n if (body) {\r\n htmlElement.removeChild(body);\r\n node.appendChild(childNode);\r\n htmlElement.appendChild(body);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (const id of mirror.getIds()) {\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n const n = mirror.getMeta(node);\r\n if (n?.type !== NodeType.Element) {\r\n return;\r\n }\r\n const el = node;\r\n for (const name in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name) &&\r\n name.startsWith('rr_'))) {\r\n continue;\r\n }\r\n const value = n.attributes[name];\r\n if (name === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n const { doc, onVisit, hackCss = true, afterAppend, cache, mirror = new Mirror(), } = options;\r\n const node = buildNodeWithSN(n, {\r\n doc,\r\n mirror,\r\n skipChild: false,\r\n hackCss,\r\n afterAppend,\r\n cache,\r\n });\r\n visit(mirror, (visitedNode) => {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, addHoverClass, buildNodeWithSN, classMatchesRegex, cleanupSnapshot, createCache, createMatchPredicate, createMirror, distanceToMatch, escapeImportStatement, fixSafariColons, genId, getInputType, getInputValue, ignoreAttribute, is2DCanvasBlank, isCSSImportRule, isCSSStyleRule, isElement, isNativeShadowDom, isNodeMetaEqual, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, shouldMaskInput, snapshot, stringifyRule, stringifyStylesheet, toLowerCase, toUpperCase, transformAttribute, visitSnapshot };\n","// Note that these are the serialized attributes and not attributes directly on\n// the DOM Node. Attributes we are interested in:\nconst ATTRIBUTES_TO_RECORD = new Set([\n 'id',\n 'class',\n 'aria-label',\n 'role',\n 'name',\n 'alt',\n 'title',\n 'data-test-id',\n 'data-testid',\n 'disabled',\n 'aria-disabled',\n 'data-sentry-component',\n]);\n\n/**\n * Inclusion list of attributes that we want to record from the DOM element\n */\nexport function getAttributesToRecord(attributes: Record<string, unknown>): Record<string, unknown> {\n const obj: Record<string, unknown> = {};\n for (const key in attributes) {\n if (ATTRIBUTES_TO_RECORD.has(key)) {\n let normalizedKey = key;\n\n if (key === 'data-testid' || key === 'data-test-id') {\n normalizedKey = 'testId';\n }\n\n obj[normalizedKey] = attributes[key];\n }\n }\n\n return obj;\n}\n","import { record } from '@sentry-internal/rrweb';\nimport type { serializedElementNodeWithId, serializedNodeWithId } from '@sentry-internal/rrweb-snapshot';\nimport { NodeType } from '@sentry-internal/rrweb-snapshot';\nimport type { Breadcrumb, HandlerDataDom } from '@sentry/types';\nimport { htmlTreeAsString } from '@sentry/utils';\n\nimport type { ReplayContainer } from '../types';\nimport { createBreadcrumb } from '../util/createBreadcrumb';\nimport { handleClick } from './handleClick';\nimport { addBreadcrumbEvent } from './util/addBreadcrumbEvent';\nimport { getClickTargetNode, getTargetNode } from './util/domUtils';\nimport { getAttributesToRecord } from './util/getAttributesToRecord';\n\nexport const handleDomListener: (replay: ReplayContainer) => (handlerData: HandlerDataDom) => void = (\n replay: ReplayContainer,\n) => {\n return (handlerData: HandlerDataDom): void => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleDom(handlerData);\n\n if (!result) {\n return;\n }\n\n const isClick = handlerData.name === 'click';\n const event = isClick ? (handlerData.event as PointerEvent) : undefined;\n // Ignore clicks if ctrl/alt/meta/shift keys are held down as they alter behavior of clicks (e.g. open in new tab)\n if (\n isClick &&\n replay.clickDetector &&\n event &&\n event.target &&\n !event.altKey &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.shiftKey\n ) {\n handleClick(\n replay.clickDetector,\n result as Breadcrumb & { timestamp: number; data: { nodeId: number } },\n getClickTargetNode(handlerData.event as Event) as HTMLElement,\n );\n }\n\n addBreadcrumbEvent(replay, result);\n };\n};\n\n/** Get the base DOM breadcrumb. */\nexport function getBaseDomBreadcrumb(target: Node | null, message: string): Breadcrumb {\n const nodeId = record.mirror.getId(target);\n const node = nodeId && record.mirror.getNode(nodeId);\n const meta = node && record.mirror.getMeta(node);\n const element = meta && isElement(meta) ? meta : null;\n\n return {\n message,\n data: element\n ? {\n nodeId,\n node: {\n id: nodeId,\n tagName: element.tagName,\n textContent: Array.from(element.childNodes)\n .map((node: serializedNodeWithId) => node.type === NodeType.Text && node.textContent)\n .filter(Boolean) // filter out empty values\n .map(text => (text as string).trim())\n .join(''),\n attributes: getAttributesToRecord(element.attributes),\n },\n }\n : {},\n };\n}\n\n/**\n * An event handler to react to DOM events.\n * Exported for tests.\n */\nexport function handleDom(handlerData: HandlerDataDom): Breadcrumb | null {\n const { target, message } = getDomTarget(handlerData);\n\n return createBreadcrumb({\n category: `ui.${handlerData.name}`,\n ...getBaseDomBreadcrumb(target, message),\n });\n}\n\nfunction getDomTarget(handlerData: HandlerDataDom): { target: Node | null; message: string } {\n const isClick = handlerData.name === 'click';\n\n let message: string | undefined;\n let target: Node | null = null;\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = isClick ? getClickTargetNode(handlerData.event as Event) : getTargetNode(handlerData.event as Event);\n message = htmlTreeAsString(target, { maxStringLength: 200 }) || '<unknown>';\n } catch (e) {\n message = '<unknown>';\n }\n\n return { target, message };\n}\n\nfunction isElement(node: serializedNodeWithId): node is serializedElementNodeWithId {\n return node.type === NodeType.Element;\n}\n","import type { Breadcrumb } from '@sentry/types';\nimport { htmlTreeAsString } from '@sentry/utils';\n\nimport type { ReplayContainer } from '../types';\nimport { createBreadcrumb } from '../util/createBreadcrumb';\nimport { getBaseDomBreadcrumb } from './handleDom';\nimport { addBreadcrumbEvent } from './util/addBreadcrumbEvent';\n\n/** Handle keyboard events & create breadcrumbs. */\nexport function handleKeyboardEvent(replay: ReplayContainer, event: KeyboardEvent): void {\n if (!replay.isEnabled()) {\n return;\n }\n\n // Update user activity, but do not restart recording as it can create\n // noisy/low-value replays (e.g. user comes back from idle, hits alt-tab, new\n // session with a single \"keydown\" breadcrumb is created)\n replay.updateUserActivity();\n\n const breadcrumb = getKeyboardBreadcrumb(event);\n\n if (!breadcrumb) {\n return;\n }\n\n addBreadcrumbEvent(replay, breadcrumb);\n}\n\n/** exported only for tests */\nexport function getKeyboardBreadcrumb(event: KeyboardEvent): Breadcrumb | null {\n const { metaKey, shiftKey, ctrlKey, altKey, key, target } = event;\n\n // never capture for input fields\n if (!target || isInputElement(target as HTMLElement) || !key) {\n return null;\n }\n\n // Note: We do not consider shift here, as that means \"uppercase\"\n const hasModifierKey = metaKey || ctrlKey || altKey;\n const isCharacterKey = key.length === 1; // other keys like Escape, Tab, etc have a longer length\n\n // Do not capture breadcrumb if only a word key is pressed\n // This could leak e.g. user input\n if (!hasModifierKey && isCharacterKey) {\n return null;\n }\n\n const message = htmlTreeAsString(target, { maxStringLength: 200 }) || '<unknown>';\n const baseBreadcrumb = getBaseDomBreadcrumb(target as Node, message);\n\n return createBreadcrumb({\n category: 'ui.keyDown',\n message,\n data: {\n ...baseBreadcrumb.data,\n metaKey,\n shiftKey,\n ctrlKey,\n altKey,\n key,\n },\n });\n}\n\nfunction isInputElement(target: HTMLElement): boolean {\n return target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable;\n}\n","import { record } from '@sentry-internal/rrweb';\nimport { browserPerformanceTimeOrigin } from '@sentry/utils';\n\nimport { WINDOW } from '../constants';\nimport type {\n AllPerformanceEntry,\n AllPerformanceEntryData,\n ExperimentalPerformanceResourceTiming,\n LargestContentfulPaintData,\n NavigationData,\n PaintData,\n ReplayPerformanceEntry,\n ResourceData,\n} from '../types';\n\n// Map entryType -> function to normalize data for event\nconst ENTRY_TYPES: Record<\n string,\n (entry: AllPerformanceEntry) => null | ReplayPerformanceEntry<AllPerformanceEntryData>\n> = {\n // @ts-expect-error TODO: entry type does not fit the create* functions entry type\n resource: createResourceEntry,\n paint: createPaintEntry,\n // @ts-expect-error TODO: entry type does not fit the create* functions entry type\n navigation: createNavigationEntry,\n};\n\n/**\n * Create replay performance entries from the browser performance entries.\n */\nexport function createPerformanceEntries(\n entries: AllPerformanceEntry[],\n): ReplayPerformanceEntry<AllPerformanceEntryData>[] {\n return entries.map(createPerformanceEntry).filter(Boolean) as ReplayPerformanceEntry<AllPerformanceEntryData>[];\n}\n\nfunction createPerformanceEntry(entry: AllPerformanceEntry): ReplayPerformanceEntry<AllPerformanceEntryData> | null {\n if (!ENTRY_TYPES[entry.entryType]) {\n return null;\n }\n\n return ENTRY_TYPES[entry.entryType](entry);\n}\n\nfunction getAbsoluteTime(time: number): number {\n // browserPerformanceTimeOrigin can be undefined if `performance` or\n // `performance.now` doesn't exist, but this is already checked by this integration\n return ((browserPerformanceTimeOrigin || WINDOW.performance.timeOrigin) + time) / 1000;\n}\n\nfunction createPaintEntry(entry: PerformancePaintTiming): ReplayPerformanceEntry<PaintData> {\n const { duration, entryType, name, startTime } = entry;\n\n const start = getAbsoluteTime(startTime);\n return {\n type: entryType,\n name,\n start,\n end: start + duration,\n data: undefined,\n };\n}\n\nfunction createNavigationEntry(entry: PerformanceNavigationTiming): ReplayPerformanceEntry<NavigationData> | null {\n const {\n entryType,\n name,\n decodedBodySize,\n duration,\n domComplete,\n encodedBodySize,\n domContentLoadedEventStart,\n domContentLoadedEventEnd,\n domInteractive,\n loadEventStart,\n loadEventEnd,\n redirectCount,\n startTime,\n transferSize,\n type,\n } = entry;\n\n // Ignore entries with no duration, they do not seem to be useful and cause dupes\n if (duration === 0) {\n return null;\n }\n\n return {\n type: `${entryType}.${type}`,\n start: getAbsoluteTime(startTime),\n end: getAbsoluteTime(domComplete),\n name,\n data: {\n size: transferSize,\n decodedBodySize,\n encodedBodySize,\n duration,\n domInteractive,\n domContentLoadedEventStart,\n domContentLoadedEventEnd,\n loadEventStart,\n loadEventEnd,\n domComplete,\n redirectCount,\n },\n };\n}\n\nfunction createResourceEntry(\n entry: ExperimentalPerformanceResourceTiming,\n): ReplayPerformanceEntry<ResourceData> | null {\n const {\n entryType,\n initiatorType,\n name,\n responseEnd,\n startTime,\n decodedBodySize,\n encodedBodySize,\n responseStatus,\n transferSize,\n } = entry;\n\n // Core SDK handles these\n if (['fetch', 'xmlhttprequest'].includes(initiatorType)) {\n return null;\n }\n\n return {\n type: `${entryType}.${initiatorType}`,\n start: getAbsoluteTime(startTime),\n end: getAbsoluteTime(responseEnd),\n name,\n data: {\n size: transferSize,\n statusCode: responseStatus,\n decodedBodySize,\n encodedBodySize,\n },\n };\n}\n\n/**\n * Add a LCP event to the replay based on an LCP metric.\n */\nexport function getLargestContentfulPaint(metric: {\n value: number;\n entries: PerformanceEntry[];\n}): ReplayPerformanceEntry<LargestContentfulPaintData> {\n const entries = metric.entries;\n const lastEntry = entries[entries.length - 1] as (PerformanceEntry & { element?: Element }) | undefined;\n const element = lastEntry ? lastEntry.element : undefined;\n\n const value = metric.value;\n\n const end = getAbsoluteTime(value);\n\n const data: ReplayPerformanceEntry<LargestContentfulPaintData> = {\n type: 'largest-contentful-paint',\n name: 'largest-contentful-paint',\n start: end,\n end,\n data: {\n value,\n size: value,\n nodeId: element ? record.mirror.getId(element) : undefined,\n },\n };\n\n return data;\n}\n","import { addLcpInstrumentationHandler, addPerformanceInstrumentationHandler } from '@sentry-internal/tracing';\n\nimport type { ReplayContainer } from '../types';\nimport { getLargestContentfulPaint } from '../util/createPerformanceEntries';\n\n/**\n * Sets up a PerformanceObserver to listen to all performance entry types.\n * Returns a callback to stop observing.\n */\nexport function setupPerformanceObserver(replay: ReplayContainer): () => void {\n function addPerformanceEntry(entry: PerformanceEntry): void {\n // It is possible for entries to come up multiple times\n if (!replay.performanceEntries.includes(entry)) {\n replay.performanceEntries.push(entry);\n }\n }\n\n function onEntries({ entries }: { entries: PerformanceEntry[] }): void {\n entries.forEach(addPerformanceEntry);\n }\n\n const clearCallbacks: (() => void)[] = [];\n\n (['navigation', 'paint', 'resource'] as const).forEach(type => {\n clearCallbacks.push(addPerformanceInstrumentationHandler(type, onEntries));\n });\n\n clearCallbacks.push(\n addLcpInstrumentationHandler(({ metric }) => {\n replay.replayPerformanceEntries.push(getLargestContentfulPaint(metric));\n }),\n );\n\n // A callback to cleanup all handlers\n return () => {\n clearCallbacks.forEach(clearCallback => clearCallback());\n };\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import { addBreadcrumb } from '@sentry/core';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\n/**\n * Log a message in debug mode, and add a breadcrumb when _experiment.traceInternals is enabled.\n */\nexport function logInfo(message: string, shouldAddBreadcrumb?: boolean): void {\n if (!DEBUG_BUILD) {\n return;\n }\n\n logger.info(message);\n\n if (shouldAddBreadcrumb) {\n addLogBreadcrumb(message);\n }\n}\n\n/**\n * Log a message, and add a breadcrumb in the next tick.\n * This is necessary when the breadcrumb may be added before the replay is initialized.\n */\nexport function logInfoNextTick(message: string, shouldAddBreadcrumb?: boolean): void {\n if (!DEBUG_BUILD) {\n return;\n }\n\n logger.info(message);\n\n if (shouldAddBreadcrumb) {\n // Wait a tick here to avoid race conditions for some initial logs\n // which may be added before replay is initialized\n setTimeout(() => {\n addLogBreadcrumb(message);\n }, 0);\n }\n}\n\nfunction addLogBreadcrumb(message: string): void {\n addBreadcrumb(\n {\n category: 'console',\n data: {\n logger: 'replay',\n },\n level: 'info',\n message,\n },\n { level: 'info' },\n );\n}\n","import { REPLAY_MAX_EVENT_BUFFER_SIZE } from '../constants';\n\n/** This error indicates that the event buffer size exceeded the limit.. */\nexport class EventBufferSizeExceededError extends Error {\n public constructor() {\n super(`Event buffer exceeded maximum size of ${REPLAY_MAX_EVENT_BUFFER_SIZE}.`);\n }\n}\n","import { REPLAY_MAX_EVENT_BUFFER_SIZE } from '../constants';\nimport type { AddEventResult, EventBuffer, EventBufferType, RecordingEvent } from '../types';\nimport { timestampToMs } from '../util/timestamp';\nimport { EventBufferSizeExceededError } from './error';\n\n/**\n * A basic event buffer that does not do any compression.\n * Used as fallback if the compression worker cannot be loaded or is disabled.\n */\nexport class EventBufferArray implements EventBuffer {\n /** All the events that are buffered to be sent. */\n public events: RecordingEvent[];\n\n /** @inheritdoc */\n public hasCheckout: boolean;\n\n private _totalSize: number;\n\n public constructor() {\n this.events = [];\n this._totalSize = 0;\n this.hasCheckout = false;\n }\n\n /** @inheritdoc */\n public get hasEvents(): boolean {\n return this.events.length > 0;\n }\n\n /** @inheritdoc */\n public get type(): EventBufferType {\n return 'sync';\n }\n\n /** @inheritdoc */\n public destroy(): void {\n this.events = [];\n }\n\n /** @inheritdoc */\n public async addEvent(event: RecordingEvent): Promise<AddEventResult> {\n const eventSize = JSON.stringify(event).length;\n this._totalSize += eventSize;\n if (this._totalSize > REPLAY_MAX_EVENT_BUFFER_SIZE) {\n throw new EventBufferSizeExceededError();\n }\n\n this.events.push(event);\n }\n\n /** @inheritdoc */\n public finish(): Promise<string> {\n return new Promise<string>(resolve => {\n // Make a copy of the events array reference and immediately clear the\n // events member so that we do not lose new events while uploading\n // attachment.\n const eventsRet = this.events;\n this.clear();\n resolve(JSON.stringify(eventsRet));\n });\n }\n\n /** @inheritdoc */\n public clear(): void {\n this.events = [];\n this._totalSize = 0;\n this.hasCheckout = false;\n }\n\n /** @inheritdoc */\n public getEarliestTimestamp(): number | null {\n const timestamp = this.events.map(event => event.timestamp).sort()[0];\n\n if (!timestamp) {\n return null;\n }\n\n return timestampToMs(timestamp);\n }\n}\n","import { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { WorkerRequest, WorkerResponse } from '../types';\nimport { logInfo } from '../util/log';\n\n/**\n * Event buffer that uses a web worker to compress events.\n * Exported only for testing.\n */\nexport class WorkerHandler {\n private _worker: Worker;\n private _id: number;\n private _ensureReadyPromise?: Promise<void>;\n\n public constructor(worker: Worker) {\n this._worker = worker;\n this._id = 0;\n }\n\n /**\n * Ensure the worker is ready (or not).\n * This will either resolve when the worker is ready, or reject if an error occured.\n */\n public ensureReady(): Promise<void> {\n // Ensure we only check once\n if (this._ensureReadyPromise) {\n return this._ensureReadyPromise;\n }\n\n this._ensureReadyPromise = new Promise((resolve, reject) => {\n this._worker.addEventListener(\n 'message',\n ({ data }: MessageEvent) => {\n if ((data as WorkerResponse).success) {\n resolve();\n } else {\n reject();\n }\n },\n { once: true },\n );\n\n this._worker.addEventListener(\n 'error',\n error => {\n reject(error);\n },\n { once: true },\n );\n });\n\n return this._ensureReadyPromise;\n }\n\n /**\n * Destroy the worker.\n */\n public destroy(): void {\n logInfo('[Replay] Destroying compression worker');\n this._worker.terminate();\n }\n\n /**\n * Post message to worker and wait for response before resolving promise.\n */\n public postMessage<T>(method: WorkerRequest['method'], arg?: WorkerRequest['arg']): Promise<T> {\n const id = this._getAndIncrementId();\n\n return new Promise((resolve, reject) => {\n const listener = ({ data }: MessageEvent): void => {\n const response = data as WorkerResponse;\n if (response.method !== method) {\n return;\n }\n\n // There can be multiple listeners for a single method, the id ensures\n // that the response matches the caller.\n if (response.id !== id) {\n return;\n }\n\n // At this point, we'll always want to remove listener regardless of result status\n this._worker.removeEventListener('message', listener);\n\n if (!response.success) {\n // TODO: Do some error handling, not sure what\n DEBUG_BUILD && logger.error('[Replay]', response.response);\n\n reject(new Error('Error in compression worker'));\n return;\n }\n\n resolve(response.response as T);\n };\n\n // Note: we can't use `once` option because it's possible it needs to\n // listen to multiple messages\n this._worker.addEventListener('message', listener);\n this._worker.postMessage({ id, method, arg });\n });\n }\n\n /** Get the current ID and increment it for the next call. */\n private _getAndIncrementId(): number {\n return this._id++;\n }\n}\n","import type { ReplayRecordingData } from '@sentry/types';\n\nimport { logger } from '@sentry/utils';\nimport { REPLAY_MAX_EVENT_BUFFER_SIZE } from '../constants';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { AddEventResult, EventBuffer, EventBufferType, RecordingEvent } from '../types';\nimport { timestampToMs } from '../util/timestamp';\nimport { WorkerHandler } from './WorkerHandler';\nimport { EventBufferSizeExceededError } from './error';\n\n/**\n * Event buffer that uses a web worker to compress events.\n * Exported only for testing.\n */\nexport class EventBufferCompressionWorker implements EventBuffer {\n /** @inheritdoc */\n public hasCheckout: boolean;\n\n private _worker: WorkerHandler;\n private _earliestTimestamp: number | null;\n private _totalSize;\n\n public constructor(worker: Worker) {\n this._worker = new WorkerHandler(worker);\n this._earliestTimestamp = null;\n this._totalSize = 0;\n this.hasCheckout = false;\n }\n\n /** @inheritdoc */\n public get hasEvents(): boolean {\n return !!this._earliestTimestamp;\n }\n\n /** @inheritdoc */\n public get type(): EventBufferType {\n return 'worker';\n }\n\n /**\n * Ensure the worker is ready (or not).\n * This will either resolve when the worker is ready, or reject if an error occured.\n */\n public ensureReady(): Promise<void> {\n return this._worker.ensureReady();\n }\n\n /**\n * Destroy the event buffer.\n */\n public destroy(): void {\n this._worker.destroy();\n }\n\n /**\n * Add an event to the event buffer.\n *\n * Returns true if event was successfuly received and processed by worker.\n */\n public addEvent(event: RecordingEvent): Promise<AddEventResult> {\n const timestamp = timestampToMs(event.timestamp);\n if (!this._earliestTimestamp || timestamp < this._earliestTimestamp) {\n this._earliestTimestamp = timestamp;\n }\n\n const data = JSON.stringify(event);\n this._totalSize += data.length;\n\n if (this._totalSize > REPLAY_MAX_EVENT_BUFFER_SIZE) {\n return Promise.reject(new EventBufferSizeExceededError());\n }\n\n return this._sendEventToWorker(data);\n }\n\n /**\n * Finish the event buffer and return the compressed data.\n */\n public finish(): Promise<ReplayRecordingData> {\n return this._finishRequest();\n }\n\n /** @inheritdoc */\n public clear(): void {\n this._earliestTimestamp = null;\n this._totalSize = 0;\n this.hasCheckout = false;\n\n // We do not wait on this, as we assume the order of messages is consistent for the worker\n this._worker.postMessage('clear').then(null, e => {\n DEBUG_BUILD && logger.warn('[Replay] Sending \"clear\" message to worker failed', e);\n });\n }\n\n /** @inheritdoc */\n public getEarliestTimestamp(): number | null {\n return this._earliestTimestamp;\n }\n\n /**\n * Send the event to the worker.\n */\n private _sendEventToWorker(data: string): Promise<AddEventResult> {\n return this._worker.postMessage<void>('addEvent', data);\n }\n\n /**\n * Finish the request and return the compressed data from the worker.\n */\n private async _finishRequest(): Promise<Uint8Array> {\n const response = await this._worker.postMessage<Uint8Array>('finish');\n\n this._earliestTimestamp = null;\n this._totalSize = 0;\n\n return response;\n }\n}\n","import type { ReplayRecordingData } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { AddEventResult, EventBuffer, EventBufferType, RecordingEvent } from '../types';\nimport { logInfo } from '../util/log';\nimport { EventBufferArray } from './EventBufferArray';\nimport { EventBufferCompressionWorker } from './EventBufferCompressionWorker';\n\n/**\n * This proxy will try to use the compression worker, and fall back to use the simple buffer if an error occurs there.\n * This can happen e.g. if the worker cannot be loaded.\n * Exported only for testing.\n */\nexport class EventBufferProxy implements EventBuffer {\n private _fallback: EventBufferArray;\n private _compression: EventBufferCompressionWorker;\n private _used: EventBuffer;\n private _ensureWorkerIsLoadedPromise: Promise<void>;\n\n public constructor(worker: Worker) {\n this._fallback = new EventBufferArray();\n this._compression = new EventBufferCompressionWorker(worker);\n this._used = this._fallback;\n\n this._ensureWorkerIsLoadedPromise = this._ensureWorkerIsLoaded();\n }\n\n /** @inheritdoc */\n public get type(): EventBufferType {\n return this._used.type;\n }\n\n /** @inheritDoc */\n public get hasEvents(): boolean {\n return this._used.hasEvents;\n }\n\n /** @inheritdoc */\n public get hasCheckout(): boolean {\n return this._used.hasCheckout;\n }\n /** @inheritdoc */\n public set hasCheckout(value: boolean) {\n this._used.hasCheckout = value;\n }\n\n /** @inheritDoc */\n public destroy(): void {\n this._fallback.destroy();\n this._compression.destroy();\n }\n\n /** @inheritdoc */\n public clear(): void {\n return this._used.clear();\n }\n\n /** @inheritdoc */\n public getEarliestTimestamp(): number | null {\n return this._used.getEarliestTimestamp();\n }\n\n /**\n * Add an event to the event buffer.\n *\n * Returns true if event was successfully added.\n */\n public addEvent(event: RecordingEvent): Promise<AddEventResult> {\n return this._used.addEvent(event);\n }\n\n /** @inheritDoc */\n public async finish(): Promise<ReplayRecordingData> {\n // Ensure the worker is loaded, so the sent event is compressed\n await this.ensureWorkerIsLoaded();\n\n return this._used.finish();\n }\n\n /** Ensure the worker has loaded. */\n public ensureWorkerIsLoaded(): Promise<void> {\n return this._ensureWorkerIsLoadedPromise;\n }\n\n /** Actually check if the worker has been loaded. */\n private async _ensureWorkerIsLoaded(): Promise<void> {\n try {\n await this._compression.ensureReady();\n } catch (error) {\n // If the worker fails to load, we fall back to the simple buffer.\n // Nothing more to do from our side here\n logInfo('[Replay] Failed to load the compression worker, falling back to simple buffer');\n return;\n }\n\n // Now we need to switch over the array buffer to the compression worker\n await this._switchToCompressionWorker();\n }\n\n /** Switch the used buffer to the compression worker. */\n private async _switchToCompressionWorker(): Promise<void> {\n const { events, hasCheckout } = this._fallback;\n\n const addEventPromises: Promise<void>[] = [];\n for (const event of events) {\n addEventPromises.push(this._compression.addEvent(event));\n }\n\n this._compression.hasCheckout = hasCheckout;\n\n // We switch over to the new buffer immediately - any further events will be added\n // after the previously buffered ones\n this._used = this._compression;\n\n // Wait for original events to be re-added before resolving\n try {\n await Promise.all(addEventPromises);\n } catch (error) {\n DEBUG_BUILD && logger.warn('[Replay] Failed to add events when switching buffers.', error);\n }\n }\n}\n","import { getWorkerURL } from '@sentry-internal/replay-worker';\n\nimport type { EventBuffer } from '../types';\nimport { logInfo } from '../util/log';\nimport { EventBufferArray } from './EventBufferArray';\nimport { EventBufferProxy } from './EventBufferProxy';\n\ninterface CreateEventBufferParams {\n useCompression: boolean;\n workerUrl?: string;\n}\n\n// Treeshakable guard to remove the code of the included compression worker\ndeclare const __SENTRY_EXCLUDE_REPLAY_WORKER__: boolean;\n\n/**\n * Create an event buffer for replays.\n */\nexport function createEventBuffer({\n useCompression,\n workerUrl: customWorkerUrl,\n}: CreateEventBufferParams): EventBuffer {\n if (\n useCompression &&\n // eslint-disable-next-line no-restricted-globals\n window.Worker\n ) {\n const worker = _loadWorker(customWorkerUrl);\n\n if (worker) {\n return worker;\n }\n }\n\n logInfo('[Replay] Using simple buffer');\n return new EventBufferArray();\n}\n\nfunction _loadWorker(customWorkerUrl?: string): EventBufferProxy | void {\n try {\n const workerUrl = customWorkerUrl || _getWorkerUrl();\n\n if (!workerUrl) {\n return;\n }\n\n logInfo(`[Replay] Using compression worker${customWorkerUrl ? ` from ${customWorkerUrl}` : ''}`);\n const worker = new Worker(workerUrl);\n return new EventBufferProxy(worker);\n } catch (error) {\n logInfo('[Replay] Failed to create compression worker');\n // Fall back to use simple event buffer array\n }\n}\n\nfunction _getWorkerUrl(): string {\n if (typeof __SENTRY_EXCLUDE_REPLAY_WORKER__ === 'undefined' || !__SENTRY_EXCLUDE_REPLAY_WORKER__) {\n return getWorkerURL();\n }\n\n return '';\n}\n","import r from\"./worker\";function e(){const e=new Blob([r]);return URL.createObjectURL(e)}export{e as getWorkerURL};\n","export default `var t=Uint8Array,n=Uint16Array,r=Int32Array,e=new t([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),i=new t([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),a=new t([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=function(t,e){for(var i=new n(31),a=0;a<31;++a)i[a]=e+=1<<t[a-1];var s=new r(i[30]);for(a=1;a<30;++a)for(var o=i[a];o<i[a+1];++o)s[o]=o-i[a]<<5|a;return{b:i,r:s}},o=s(e,2),f=o.b,h=o.r;f[28]=258,h[258]=28;for(var l=s(i,0).r,u=new n(32768),c=0;c<32768;++c){var v=(43690&c)>>1|(21845&c)<<1;v=(61680&(v=(52428&v)>>2|(13107&v)<<2))>>4|(3855&v)<<4,u[c]=((65280&v)>>8|(255&v)<<8)>>1}var d=function(t,r,e){for(var i=t.length,a=0,s=new n(r);a<i;++a)t[a]&&++s[t[a]-1];var o,f=new n(r);for(a=1;a<r;++a)f[a]=f[a-1]+s[a-1]<<1;if(e){o=new n(1<<r);var h=15-r;for(a=0;a<i;++a)if(t[a])for(var l=a<<4|t[a],c=r-t[a],v=f[t[a]-1]++<<c,d=v|(1<<c)-1;v<=d;++v)o[u[v]>>h]=l}else for(o=new n(i),a=0;a<i;++a)t[a]&&(o[a]=u[f[t[a]-1]++]>>15-t[a]);return o},g=new t(288);for(c=0;c<144;++c)g[c]=8;for(c=144;c<256;++c)g[c]=9;for(c=256;c<280;++c)g[c]=7;for(c=280;c<288;++c)g[c]=8;var w=new t(32);for(c=0;c<32;++c)w[c]=5;var p=d(g,9,0),y=d(w,5,0),m=function(t){return(t+7)/8|0},b=function(n,r,e){return(null==r||r<0)&&(r=0),(null==e||e>n.length)&&(e=n.length),new t(n.subarray(r,e))},M=[\"unexpected EOF\",\"invalid block type\",\"invalid length/literal\",\"invalid distance\",\"stream finished\",\"no stream handler\",,\"no callback\",\"invalid UTF-8 data\",\"extra field too long\",\"date not in range 1980-2099\",\"filename too long\",\"stream finishing\",\"invalid zip data\"],E=function(t,n,r){var e=new Error(n||M[t]);if(e.code=t,Error.captureStackTrace&&Error.captureStackTrace(e,E),!r)throw e;return e},z=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8},A=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8,t[e+2]|=r>>16},_=function(r,e){for(var i=[],a=0;a<r.length;++a)r[a]&&i.push({s:a,f:r[a]});var s=i.length,o=i.slice();if(!s)return{t:F,l:0};if(1==s){var f=new t(i[0].s+1);return f[i[0].s]=1,{t:f,l:1}}i.sort((function(t,n){return t.f-n.f})),i.push({s:-1,f:25001});var h=i[0],l=i[1],u=0,c=1,v=2;for(i[0]={s:-1,f:h.f+l.f,l:h,r:l};c!=s-1;)h=i[i[u].f<i[v].f?u++:v++],l=i[u!=c&&i[u].f<i[v].f?u++:v++],i[c++]={s:-1,f:h.f+l.f,l:h,r:l};var d=o[0].s;for(a=1;a<s;++a)o[a].s>d&&(d=o[a].s);var g=new n(d+1),w=x(i[c-1],g,0);if(w>e){a=0;var p=0,y=w-e,m=1<<y;for(o.sort((function(t,n){return g[n.s]-g[t.s]||t.f-n.f}));a<s;++a){var b=o[a].s;if(!(g[b]>e))break;p+=m-(1<<w-g[b]),g[b]=e}for(p>>=y;p>0;){var M=o[a].s;g[M]<e?p-=1<<e-g[M]++-1:++a}for(;a>=0&&p;--a){var E=o[a].s;g[E]==e&&(--g[E],++p)}w=e}return{t:new t(g),l:w}},x=function(t,n,r){return-1==t.s?Math.max(x(t.l,n,r+1),x(t.r,n,r+1)):n[t.s]=r},D=function(t){for(var r=t.length;r&&!t[--r];);for(var e=new n(++r),i=0,a=t[0],s=1,o=function(t){e[i++]=t},f=1;f<=r;++f)if(t[f]==a&&f!=r)++s;else{if(!a&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(a),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(a);s=1,a=t[f]}return{c:e.subarray(0,i),n:r}},T=function(t,n){for(var r=0,e=0;e<n.length;++e)r+=t[e]*n[e];return r},k=function(t,n,r){var e=r.length,i=m(n+2);t[i]=255&e,t[i+1]=e>>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var a=0;a<e;++a)t[i+a+4]=r[a];return 8*(i+4+e)},C=function(t,r,s,o,f,h,l,u,c,v,m){z(r,m++,s),++f[256];for(var b=_(f,15),M=b.t,E=b.l,x=_(h,15),C=x.t,U=x.l,F=D(M),I=F.c,S=F.n,L=D(C),O=L.c,j=L.n,q=new n(19),B=0;B<I.length;++B)++q[31&I[B]];for(B=0;B<O.length;++B)++q[31&O[B]];for(var G=_(q,7),H=G.t,J=G.l,K=19;K>4&&!H[a[K-1]];--K);var N,P,Q,R,V=v+5<<3,W=T(f,g)+T(h,w)+l,X=T(f,M)+T(h,C)+l+14+3*K+T(q,H)+2*q[16]+3*q[17]+7*q[18];if(c>=0&&V<=W&&V<=X)return k(r,m,t.subarray(c,c+v));if(z(r,m,1+(X<W)),m+=2,X<W){N=d(M,E,0),P=M,Q=d(C,U,0),R=C;var Y=d(H,J,0);z(r,m,S-257),z(r,m+5,j-1),z(r,m+10,K-4),m+=14;for(B=0;B<K;++B)z(r,m+3*B,H[a[B]]);m+=3*K;for(var Z=[I,O],$=0;$<2;++$){var tt=Z[$];for(B=0;B<tt.length;++B){var nt=31&tt[B];z(r,m,Y[nt]),m+=H[nt],nt>15&&(z(r,m,tt[B]>>5&127),m+=tt[B]>>12)}}}else N=p,P=g,Q=y,R=w;for(B=0;B<u;++B){var rt=o[B];if(rt>255){A(r,m,N[(nt=rt>>18&31)+257]),m+=P[nt+257],nt>7&&(z(r,m,rt>>23&31),m+=e[nt]);var et=31&rt;A(r,m,Q[et]),m+=R[et],et>3&&(A(r,m,rt>>5&8191),m+=i[et])}else A(r,m,N[rt]),m+=P[rt]}return A(r,m,N[256]),m+P[256]},U=new r([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),F=new t(0),I=function(){for(var t=new Int32Array(256),n=0;n<256;++n){for(var r=n,e=9;--e;)r=(1&r&&-306674912)^r>>>1;t[n]=r}return t}(),S=function(){var t=1,n=0;return{p:function(r){for(var e=t,i=n,a=0|r.length,s=0;s!=a;){for(var o=Math.min(s+2655,a);s<o;++s)i+=e+=r[s];e=(65535&e)+15*(e>>16),i=(65535&i)+15*(i>>16)}t=e,n=i},d:function(){return(255&(t%=65521))<<24|(65280&t)<<8|(255&(n%=65521))<<8|n>>8}}},L=function(a,s,o,f,u){if(!u&&(u={l:1},s.dictionary)){var c=s.dictionary.subarray(-32768),v=new t(c.length+a.length);v.set(c),v.set(a,c.length),a=v,u.w=c.length}return function(a,s,o,f,u,c){var v=c.z||a.length,d=new t(f+v+5*(1+Math.ceil(v/7e3))+u),g=d.subarray(f,d.length-u),w=c.l,p=7&(c.r||0);if(s){p&&(g[0]=c.r>>3);for(var y=U[s-1],M=y>>13,E=8191&y,z=(1<<o)-1,A=c.p||new n(32768),_=c.h||new n(z+1),x=Math.ceil(o/3),D=2*x,T=function(t){return(a[t]^a[t+1]<<x^a[t+2]<<D)&z},F=new r(25e3),I=new n(288),S=new n(32),L=0,O=0,j=c.i||0,q=0,B=c.w||0,G=0;j+2<v;++j){var H=T(j),J=32767&j,K=_[H];if(A[J]=K,_[H]=J,B<=j){var N=v-j;if((L>7e3||q>24576)&&(N>423||!w)){p=C(a,g,0,F,I,S,O,q,G,j-G,p),q=L=O=0,G=j;for(var P=0;P<286;++P)I[P]=0;for(P=0;P<30;++P)S[P]=0}var Q=2,R=0,V=E,W=J-K&32767;if(N>2&&H==T(j-W))for(var X=Math.min(M,N)-1,Y=Math.min(32767,j),Z=Math.min(258,N);W<=Y&&--V&&J!=K;){if(a[j+Q]==a[j+Q-W]){for(var $=0;$<Z&&a[j+$]==a[j+$-W];++$);if($>Q){if(Q=$,R=W,$>X)break;var tt=Math.min(W,$-2),nt=0;for(P=0;P<tt;++P){var rt=j-W+P&32767,et=rt-A[rt]&32767;et>nt&&(nt=et,K=rt)}}}W+=(J=K)-(K=A[J])&32767}if(R){F[q++]=268435456|h[Q]<<18|l[R];var it=31&h[Q],at=31&l[R];O+=e[it]+i[at],++I[257+it],++S[at],B=j+Q,++L}else F[q++]=a[j],++I[a[j]]}}for(j=Math.max(j,B);j<v;++j)F[q++]=a[j],++I[a[j]];p=C(a,g,w,F,I,S,O,q,G,j-G,p),w||(c.r=7&p|g[p/8|0]<<3,p-=7,c.h=_,c.p=A,c.i=j,c.w=B)}else{for(j=c.w||0;j<v+w;j+=65535){var st=j+65535;st>=v&&(g[p/8|0]=w,st=v),p=k(g,p+1,a.subarray(j,st))}c.i=v}return b(d,0,f+m(p)+u)}(a,null==s.level?6:s.level,null==s.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(a.length)))):12+s.mem,o,f,u)},O=function(t,n,r){for(;r;++n)t[n]=r,r>>>=8},j=function(){function n(n,r){if(\"function\"==typeof n&&(r=n,n={}),this.ondata=r,this.o=n||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new t(98304),this.o.dictionary){var e=this.o.dictionary.subarray(-32768);this.b.set(e,32768-e.length),this.s.i=32768-e.length}}return n.prototype.p=function(t,n){this.ondata(L(t,this.o,0,0,this.s),n)},n.prototype.push=function(n,r){this.ondata||E(5),this.s.l&&E(4);var e=n.length+this.s.z;if(e>this.b.length){if(e>2*this.b.length-32768){var i=new t(-32768&e);i.set(this.b.subarray(0,this.s.z)),this.b=i}var a=this.b.length-this.s.z;a&&(this.b.set(n.subarray(0,a),this.s.z),this.s.z=this.b.length,this.p(this.b,!1)),this.b.set(this.b.subarray(-32768)),this.b.set(n.subarray(a),32768),this.s.z=n.length-a+32768,this.s.i=32766,this.s.w=32768}else this.b.set(n,this.s.z),this.s.z+=n.length;this.s.l=1&r,(this.s.z>this.s.w+8191||r)&&(this.p(this.b,r||!1),this.s.w=this.s.i,this.s.i-=2)},n}();function q(t,n){n||(n={});var r=function(){var t=-1;return{p:function(n){for(var r=t,e=0;e<n.length;++e)r=I[255&r^n[e]]^r>>>8;t=r},d:function(){return~t}}}(),e=t.length;r.p(t);var i,a=L(t,n,10+((i=n).filename?i.filename.length+1:0),8),s=a.length;return function(t,n){var r=n.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=n.level<2?4:9==n.level?2:0,t[9]=3,0!=n.mtime&&O(t,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),r){t[3]=8;for(var e=0;e<=r.length;++e)t[e+10]=r.charCodeAt(e)}}(a,n),O(a,s-8,r.d()),O(a,s-4,e),a}var B=function(){function t(t,n){this.c=S(),this.v=1,j.call(this,t,n)}return t.prototype.push=function(t,n){this.c.p(t),j.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){var r=L(t,this.o,this.v&&(this.o.dictionary?6:2),n&&4,this.s);this.v&&(function(t,n){var r=n.level,e=0==r?0:r<6?1:9==r?3:2;if(t[0]=120,t[1]=e<<6|(n.dictionary&&32),t[1]|=31-(t[0]<<8|t[1])%31,n.dictionary){var i=S();i.p(n.dictionary),O(t,2,i.d())}}(r,this.o),this.v=0),n&&O(r,r.length-4,this.c.d()),this.ondata(r,n)},t}(),G=\"undefined\"!=typeof TextEncoder&&new TextEncoder,H=\"undefined\"!=typeof TextDecoder&&new TextDecoder;try{H.decode(F,{stream:!0})}catch(t){}var J=function(){function t(t){this.ondata=t}return t.prototype.push=function(t,n){this.ondata||E(5),this.d&&E(4),this.ondata(K(t),this.d=n||!1)},t}();function K(n,r){if(r){for(var e=new t(n.length),i=0;i<n.length;++i)e[i]=n.charCodeAt(i);return e}if(G)return G.encode(n);var a=n.length,s=new t(n.length+(n.length>>1)),o=0,f=function(t){s[o++]=t};for(i=0;i<a;++i){if(o+5>s.length){var h=new t(o+8+(a-i<<1));h.set(s),s=h}var l=n.charCodeAt(i);l<128||r?f(l):l<2048?(f(192|l>>6),f(128|63&l)):l>55295&&l<57344?(f(240|(l=65536+(1047552&l)|1023&n.charCodeAt(++i))>>18),f(128|l>>12&63),f(128|l>>6&63),f(128|63&l)):(f(224|l>>12),f(128|l>>6&63),f(128|63&l))}return b(s,0,o)}const N=new class{constructor(){this._init()}clear(){this._init()}addEvent(t){if(!t)throw new Error(\"Adding invalid event\");const n=this._hasEvents?\",\":\"\";this.stream.push(n+t),this._hasEvents=!0}finish(){this.stream.push(\"]\",!0);const t=function(t){let n=0;for(let r=0,e=t.length;r<e;r++)n+=t[r].length;const r=new Uint8Array(n);for(let n=0,e=0,i=t.length;n<i;n++){const i=t[n];r.set(i,e),e+=i.length}return r}(this._deflatedData);return this._init(),t}_init(){this._hasEvents=!1,this._deflatedData=[],this.deflate=new B,this.deflate.ondata=(t,n)=>{this._deflatedData.push(t)},this.stream=new J(((t,n)=>{this.deflate.push(t,n)})),this.stream.push(\"[\")}},P={clear:()=>{N.clear()},addEvent:t=>N.addEvent(t),finish:()=>N.finish(),compress:t=>function(t){return q(K(t))}(t)};addEventListener(\"message\",(function(t){const n=t.data.method,r=t.data.id,e=t.data.arg;if(n in P&&\"function\"==typeof P[n])try{const t=P[n](e);postMessage({id:r,method:n,success:!0,response:t})}catch(t){postMessage({id:r,method:n,success:!1,response:t.message}),console.error(t)}})),postMessage({id:void 0,method:\"init\",success:!0,response:void 0});`;\n","import { WINDOW } from '../constants';\n\n/** If sessionStorage is available. */\nexport function hasSessionStorage(): boolean {\n try {\n // This can throw, e.g. when being accessed in a sandboxed iframe\n return 'sessionStorage' in WINDOW && !!WINDOW.sessionStorage;\n } catch {\n return false;\n }\n}\n","import { REPLAY_SESSION_KEY, WINDOW } from '../../src/constants';\nimport type { ReplayContainer } from '../../src/types';\nimport { hasSessionStorage } from '../util/hasSessionStorage';\n\n/**\n * Removes the session from Session Storage and unsets session in replay instance\n */\nexport function clearSession(replay: ReplayContainer): void {\n deleteSession();\n replay.session = undefined;\n}\n\n/**\n * Deletes a session from storage\n */\nfunction deleteSession(): void {\n if (!hasSessionStorage()) {\n return;\n }\n\n try {\n WINDOW.sessionStorage.removeItem(REPLAY_SESSION_KEY);\n } catch {\n // Ignore potential SecurityError exceptions\n }\n}\n","/**\n * Given a sample rate, returns true if replay should be sampled.\n *\n * 1.0 = 100% sampling\n * 0.0 = 0% sampling\n */\nexport function isSampled(sampleRate?: number): boolean {\n if (sampleRate === undefined) {\n return false;\n }\n\n // Math.random() returns a number in range of 0 to 1 (inclusive of 0, but not 1)\n return Math.random() < sampleRate;\n}\n","import { uuid4 } from '@sentry/utils';\n\nimport type { Sampled, Session } from '../types';\n\n/**\n * Get a session with defaults & applied sampling.\n */\nexport function makeSession(session: Partial<Session> & { sampled: Sampled }): Session {\n const now = Date.now();\n const id = session.id || uuid4();\n // Note that this means we cannot set a started/lastActivity of `0`, but this should not be relevant outside of tests.\n const started = session.started || now;\n const lastActivity = session.lastActivity || now;\n const segmentId = session.segmentId || 0;\n const sampled = session.sampled;\n const previousSessionId = session.previousSessionId;\n\n return {\n id,\n started,\n lastActivity,\n segmentId,\n sampled,\n previousSessionId,\n };\n}\n","import { REPLAY_SESSION_KEY, WINDOW } from '../constants';\nimport type { Session } from '../types';\nimport { hasSessionStorage } from '../util/hasSessionStorage';\n\n/**\n * Save a session to session storage.\n */\nexport function saveSession(session: Session): void {\n if (!hasSessionStorage()) {\n return;\n }\n\n try {\n WINDOW.sessionStorage.setItem(REPLAY_SESSION_KEY, JSON.stringify(session));\n } catch {\n // Ignore potential SecurityError exceptions\n }\n}\n","import type { Sampled, Session, SessionOptions } from '../types';\nimport { isSampled } from '../util/isSampled';\nimport { makeSession } from './Session';\nimport { saveSession } from './saveSession';\n\n/**\n * Get the sampled status for a session based on sample rates & current sampled status.\n */\nexport function getSessionSampleType(sessionSampleRate: number, allowBuffering: boolean): Sampled {\n return isSampled(sessionSampleRate) ? 'session' : allowBuffering ? 'buffer' : false;\n}\n\n/**\n * Create a new session, which in its current implementation is a Sentry event\n * that all replays will be saved to as attachments. Currently, we only expect\n * one of these Sentry events per \"replay session\".\n */\nexport function createSession(\n { sessionSampleRate, allowBuffering, stickySession = false }: SessionOptions,\n { previousSessionId }: { previousSessionId?: string } = {},\n): Session {\n const sampled = getSessionSampleType(sessionSampleRate, allowBuffering);\n const session = makeSession({\n sampled,\n previousSessionId,\n });\n\n if (stickySession) {\n saveSession(session);\n }\n\n return session;\n}\n","/**\n * Given an initial timestamp and an expiry duration, checks to see if current\n * time should be considered as expired.\n */\nexport function isExpired(\n initialTime: null | number,\n expiry: undefined | number,\n targetTime: number = +new Date(),\n): boolean {\n // Always expired if < 0\n if (initialTime === null || expiry === undefined || expiry < 0) {\n return true;\n }\n\n // Never expires if == 0\n if (expiry === 0) {\n return false;\n }\n\n return initialTime + expiry <= targetTime;\n}\n","import type { Session } from '../types';\nimport { isExpired } from './isExpired';\n\n/**\n * Checks to see if session is expired\n */\nexport function isSessionExpired(\n session: Session,\n {\n maxReplayDuration,\n sessionIdleExpire,\n targetTime = Date.now(),\n }: { maxReplayDuration: number; sessionIdleExpire: number; targetTime?: number },\n): boolean {\n return (\n // First, check that maximum session length has not been exceeded\n isExpired(session.started, maxReplayDuration, targetTime) ||\n // check that the idle timeout has not been exceeded (i.e. user has\n // performed an action within the last `sessionIdleExpire` ms)\n isExpired(session.lastActivity, sessionIdleExpire, targetTime)\n );\n}\n","import type { Session } from '../types';\nimport { isSessionExpired } from '../util/isSessionExpired';\n\n/** If the session should be refreshed or not. */\nexport function shouldRefreshSession(\n session: Session,\n { sessionIdleExpire, maxReplayDuration }: { sessionIdleExpire: number; maxReplayDuration: number },\n): boolean {\n // If not expired, all good, just keep the session\n if (!isSessionExpired(session, { sessionIdleExpire, maxReplayDuration })) {\n return false;\n }\n\n // If we are buffering & haven't ever flushed yet, always continue\n if (session.sampled === 'buffer' && session.segmentId === 0) {\n return false;\n }\n\n return true;\n}\n","import type { Session, SessionOptions } from '../types';\nimport { logInfoNextTick } from '../util/log';\nimport { createSession } from './createSession';\nimport { fetchSession } from './fetchSession';\nimport { shouldRefreshSession } from './shouldRefreshSession';\n\n/**\n * Get or create a session, when initializing the replay.\n * Returns a session that may be unsampled.\n */\nexport function loadOrCreateSession(\n {\n traceInternals,\n sessionIdleExpire,\n maxReplayDuration,\n previousSessionId,\n }: {\n sessionIdleExpire: number;\n maxReplayDuration: number;\n traceInternals?: boolean;\n previousSessionId?: string;\n },\n sessionOptions: SessionOptions,\n): Session {\n const existingSession = sessionOptions.stickySession && fetchSession(traceInternals);\n\n // No session exists yet, just create a new one\n if (!existingSession) {\n logInfoNextTick('[Replay] Creating new session', traceInternals);\n return createSession(sessionOptions, { previousSessionId });\n }\n\n if (!shouldRefreshSession(existingSession, { sessionIdleExpire, maxReplayDuration })) {\n return existingSession;\n }\n\n logInfoNextTick('[Replay] Session in sessionStorage is expired, creating new one...');\n return createSession(sessionOptions, { previousSessionId: existingSession.id });\n}\n","import { REPLAY_SESSION_KEY, WINDOW } from '../constants';\nimport type { Session } from '../types';\nimport { hasSessionStorage } from '../util/hasSessionStorage';\nimport { logInfoNextTick } from '../util/log';\nimport { makeSession } from './Session';\n\n/**\n * Fetches a session from storage\n */\nexport function fetchSession(traceInternals?: boolean): Session | null {\n if (!hasSessionStorage()) {\n return null;\n }\n\n try {\n // This can throw if cookies are disabled\n const sessionStringFromStorage = WINDOW.sessionStorage.getItem(REPLAY_SESSION_KEY);\n\n if (!sessionStringFromStorage) {\n return null;\n }\n\n const sessionObj = JSON.parse(sessionStringFromStorage) as Session;\n\n logInfoNextTick('[Replay] Loading existing session', traceInternals);\n\n return makeSession(sessionObj);\n } catch {\n return null;\n }\n}\n","import { EventType } from '@sentry-internal/rrweb';\nimport { getClient } from '@sentry/core';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { EventBufferSizeExceededError } from '../eventBuffer/error';\nimport type { AddEventResult, RecordingEvent, ReplayContainer, ReplayFrameEvent, ReplayPluginOptions } from '../types';\nimport { logInfo } from './log';\nimport { timestampToMs } from './timestamp';\n\nfunction isCustomEvent(event: RecordingEvent): event is ReplayFrameEvent {\n return event.type === EventType.Custom;\n}\n\n/**\n * Add an event to the event buffer.\n * In contrast to `addEvent`, this does not return a promise & does not wait for the adding of the event to succeed/fail.\n * Instead this returns `true` if we tried to add the event, else false.\n * It returns `false` e.g. if we are paused, disabled, or out of the max replay duration.\n *\n * `isCheckout` is true if this is either the very first event, or an event triggered by `checkoutEveryNms`.\n */\nexport function addEventSync(replay: ReplayContainer, event: RecordingEvent, isCheckout?: boolean): boolean {\n if (!shouldAddEvent(replay, event)) {\n return false;\n }\n\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n _addEvent(replay, event, isCheckout);\n\n return true;\n}\n\n/**\n * Add an event to the event buffer.\n * Resolves to `null` if no event was added, else to `void`.\n *\n * `isCheckout` is true if this is either the very first event, or an event triggered by `checkoutEveryNms`.\n */\nexport function addEvent(\n replay: ReplayContainer,\n event: RecordingEvent,\n isCheckout?: boolean,\n): Promise<AddEventResult | null> {\n if (!shouldAddEvent(replay, event)) {\n return Promise.resolve(null);\n }\n\n return _addEvent(replay, event, isCheckout);\n}\n\nasync function _addEvent(\n replay: ReplayContainer,\n event: RecordingEvent,\n isCheckout?: boolean,\n): Promise<AddEventResult | null> {\n if (!replay.eventBuffer) {\n return null;\n }\n\n try {\n if (isCheckout && replay.recordingMode === 'buffer') {\n replay.eventBuffer.clear();\n }\n\n if (isCheckout) {\n replay.eventBuffer.hasCheckout = true;\n }\n\n const replayOptions = replay.getOptions();\n\n const eventAfterPossibleCallback = maybeApplyCallback(event, replayOptions.beforeAddRecordingEvent);\n\n if (!eventAfterPossibleCallback) {\n return;\n }\n\n return await replay.eventBuffer.addEvent(eventAfterPossibleCallback);\n } catch (error) {\n const reason = error && error instanceof EventBufferSizeExceededError ? 'addEventSizeExceeded' : 'addEvent';\n\n DEBUG_BUILD && logger.error(error);\n await replay.stop({ reason });\n\n const client = getClient();\n\n if (client) {\n client.recordDroppedEvent('internal_sdk_error', 'replay');\n }\n }\n}\n\n/** Exported only for tests. */\nexport function shouldAddEvent(replay: ReplayContainer, event: RecordingEvent): boolean {\n if (!replay.eventBuffer || replay.isPaused() || !replay.isEnabled()) {\n return false;\n }\n\n const timestampInMs = timestampToMs(event.timestamp);\n\n // Throw out events that happen more than 5 minutes ago. This can happen if\n // page has been left open and idle for a long period of time and user\n // comes back to trigger a new session. The performance entries rely on\n // `performance.timeOrigin`, which is when the page first opened.\n if (timestampInMs + replay.timeouts.sessionIdlePause < Date.now()) {\n return false;\n }\n\n // Throw out events that are +60min from the initial timestamp\n if (timestampInMs > replay.getContext().initialTimestamp + replay.getOptions().maxReplayDuration) {\n logInfo(\n `[Replay] Skipping event with timestamp ${timestampInMs} because it is after maxReplayDuration`,\n replay.getOptions()._experiments.traceInternals,\n );\n return false;\n }\n\n return true;\n}\n\nfunction maybeApplyCallback(\n event: RecordingEvent,\n callback: ReplayPluginOptions['beforeAddRecordingEvent'],\n): RecordingEvent | null | undefined {\n try {\n if (typeof callback === 'function' && isCustomEvent(event)) {\n return callback(event);\n }\n } catch (error) {\n DEBUG_BUILD &&\n logger.error('[Replay] An error occured in the `beforeAddRecordingEvent` callback, skipping the event...', error);\n return null;\n }\n\n return event;\n}\n","import type { ErrorEvent, Event, FeedbackEvent, ReplayEvent, TransactionEvent } from '@sentry/types';\n\n/** If the event is an error event */\nexport function isErrorEvent(event: Event): event is ErrorEvent {\n return !event.type;\n}\n\n/** If the event is a transaction event */\nexport function isTransactionEvent(event: Event): event is TransactionEvent {\n return event.type === 'transaction';\n}\n\n/** If the event is an replay event */\nexport function isReplayEvent(event: Event): event is ReplayEvent {\n return event.type === 'replay_event';\n}\n\n/** If the event is a feedback event */\nexport function isFeedbackEvent(event: Event): event is FeedbackEvent {\n return event.type === 'feedback';\n}\n","import { getClient } from '@sentry/core';\nimport type { ErrorEvent, Event, TransactionEvent, Transport, TransportMakeRequestResponse } from '@sentry/types';\n\nimport type { ReplayContainer } from '../types';\nimport { isErrorEvent, isTransactionEvent } from '../util/eventUtils';\n\ntype AfterSendEventCallback = (event: Event, sendResponse: TransportMakeRequestResponse | void) => void;\n\n/**\n * Returns a listener to be added to `client.on('afterSendErrorEvent, listener)`.\n */\nexport function handleAfterSendEvent(replay: ReplayContainer): AfterSendEventCallback {\n // Custom transports may still be returning `Promise<void>`, which means we cannot expect the status code to be available there\n // TODO (v8): remove this check as it will no longer be necessary\n const enforceStatusCode = isBaseTransportSend();\n\n return (event: Event, sendResponse: TransportMakeRequestResponse | void) => {\n if (!replay.isEnabled() || (!isErrorEvent(event) && !isTransactionEvent(event))) {\n return;\n }\n\n const statusCode = sendResponse && sendResponse.statusCode;\n\n // We only want to do stuff on successful error sending, otherwise you get error replays without errors attached\n // If not using the base transport, we allow `undefined` response (as a custom transport may not implement this correctly yet)\n // If we do use the base transport, we skip if we encountered an non-OK status code\n if (enforceStatusCode && (!statusCode || statusCode < 200 || statusCode >= 300)) {\n return;\n }\n\n if (isTransactionEvent(event)) {\n handleTransactionEvent(replay, event);\n return;\n }\n\n handleErrorEvent(replay, event);\n };\n}\n\nfunction handleTransactionEvent(replay: ReplayContainer, event: TransactionEvent): void {\n const replayContext = replay.getContext();\n\n // Collect traceIds in _context regardless of `recordingMode`\n // In error mode, _context gets cleared on every checkout\n // We limit to max. 100 transactions linked\n if (event.contexts && event.contexts.trace && event.contexts.trace.trace_id && replayContext.traceIds.size < 100) {\n replayContext.traceIds.add(event.contexts.trace.trace_id as string);\n }\n}\n\nfunction handleErrorEvent(replay: ReplayContainer, event: ErrorEvent): void {\n const replayContext = replay.getContext();\n\n // Add error to list of errorIds of replay. This is ok to do even if not\n // sampled because context will get reset at next checkout.\n // XXX: There is also a race condition where it's possible to capture an\n // error to Sentry before Replay SDK has loaded, but response returns after\n // it was loaded, and this gets called.\n // We limit to max. 100 errors linked\n if (event.event_id && replayContext.errorIds.size < 100) {\n replayContext.errorIds.add(event.event_id);\n }\n\n // If error event is tagged with replay id it means it was sampled (when in buffer mode)\n // Need to be very careful that this does not cause an infinite loop\n if (replay.recordingMode !== 'buffer' || !event.tags || !event.tags.replayId) {\n return;\n }\n\n const { beforeErrorSampling } = replay.getOptions();\n if (typeof beforeErrorSampling === 'function' && !beforeErrorSampling(event)) {\n return;\n }\n\n setTimeout(() => {\n // Capture current event buffer as new replay\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.sendBufferedReplayOrFlush();\n });\n}\n\nfunction isBaseTransportSend(): boolean {\n const client = getClient();\n if (!client) {\n return false;\n }\n\n const transport = client.getTransport();\n if (!transport) {\n return false;\n }\n\n return (\n (transport.send as Transport['send'] & { __sentry__baseTransport__?: true }).__sentry__baseTransport__ || false\n );\n}\n","import type { ErrorEvent, Event } from '@sentry/types';\n\nimport type { ReplayContainer } from '../types';\nimport { createBreadcrumb } from '../util/createBreadcrumb';\nimport { isErrorEvent } from '../util/eventUtils';\nimport { addBreadcrumbEvent } from './util/addBreadcrumbEvent';\n\ntype BeforeSendEventCallback = (event: Event) => void;\n\n/**\n * Returns a listener to be added to `client.on('afterSendErrorEvent, listener)`.\n */\nexport function handleBeforeSendEvent(replay: ReplayContainer): BeforeSendEventCallback {\n return (event: Event) => {\n if (!replay.isEnabled() || !isErrorEvent(event)) {\n return;\n }\n\n handleHydrationError(replay, event);\n };\n}\n\nfunction handleHydrationError(replay: ReplayContainer, event: ErrorEvent): void {\n const exceptionValue = event.exception && event.exception.values && event.exception.values[0].value;\n if (typeof exceptionValue !== 'string') {\n return;\n }\n\n if (\n // Only matches errors in production builds of react-dom\n // Example https://reactjs.org/docs/error-decoder.html?invariant=423\n exceptionValue.match(/reactjs\\.org\\/docs\\/error-decoder\\.html\\?invariant=(418|419|422|423|425)/) ||\n // Development builds of react-dom\n // Error 1: Hydration failed because the initial UI does not match what was rendered on the server.\n // Error 2: Text content does not match server-rendered HTML. Warning: Text content did not match.\n exceptionValue.match(/(does not match server-rendered HTML|Hydration failed because)/i)\n ) {\n const breadcrumb = createBreadcrumb({\n category: 'replay.hydrate-error',\n });\n addBreadcrumbEvent(replay, breadcrumb);\n }\n}\n","import type { Event, EventHint } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { ReplayContainer } from '../types';\nimport { isErrorEvent, isFeedbackEvent, isReplayEvent, isTransactionEvent } from '../util/eventUtils';\nimport { isRrwebError } from '../util/isRrwebError';\nimport { handleAfterSendEvent } from './handleAfterSendEvent';\nimport { addFeedbackBreadcrumb } from './util/addFeedbackBreadcrumb';\nimport { shouldSampleForBufferEvent } from './util/shouldSampleForBufferEvent';\n\n/**\n * Returns a listener to be added to `addEventProcessor(listener)`.\n */\nexport function handleGlobalEventListener(\n replay: ReplayContainer,\n includeAfterSendEventHandling = false,\n): (event: Event, hint: EventHint) => Event | null {\n const afterSendHandler = includeAfterSendEventHandling ? handleAfterSendEvent(replay) : undefined;\n\n return Object.assign(\n (event: Event, hint: EventHint) => {\n // Do nothing if replay has been disabled\n if (!replay.isEnabled()) {\n return event;\n }\n\n if (isReplayEvent(event)) {\n // Replays have separate set of breadcrumbs, do not include breadcrumbs\n // from core SDK\n delete event.breadcrumbs;\n return event;\n }\n\n // We only want to handle errors, transactions, and feedbacks, nothing else\n if (!isErrorEvent(event) && !isTransactionEvent(event) && !isFeedbackEvent(event)) {\n return event;\n }\n\n // Ensure we do not add replay_id if the session is expired\n const isSessionActive = replay.checkAndHandleExpiredSession();\n if (!isSessionActive) {\n return event;\n }\n\n if (isFeedbackEvent(event)) {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.flush();\n event.contexts.feedback.replay_id = replay.getSessionId();\n // Add a replay breadcrumb for this piece of feedback\n addFeedbackBreadcrumb(replay, event);\n return event;\n }\n\n // Unless `captureExceptions` is enabled, we want to ignore errors coming from rrweb\n // As there can be a bunch of stuff going wrong in internals there, that we don't want to bubble up to users\n if (isRrwebError(event, hint) && !replay.getOptions()._experiments.captureExceptions) {\n DEBUG_BUILD && logger.log('[Replay] Ignoring error from rrweb internals', event);\n return null;\n }\n\n // When in buffer mode, we decide to sample here.\n // Later, in `handleAfterSendEvent`, if the replayId is set, we know that we sampled\n // And convert the buffer session to a full session\n const isErrorEventSampled = shouldSampleForBufferEvent(replay, event);\n\n // Tag errors if it has been sampled in buffer mode, or if it is session mode\n // Only tag transactions if in session mode\n const shouldTagReplayId = isErrorEventSampled || replay.recordingMode === 'session';\n\n if (shouldTagReplayId) {\n event.tags = { ...event.tags, replayId: replay.getSessionId() };\n }\n\n // In cases where a custom client is used that does not support the new hooks (yet),\n // we manually call this hook method here\n if (afterSendHandler) {\n // Pretend the error had a 200 response so we always capture it\n afterSendHandler(event, { statusCode: 200 });\n }\n\n return event;\n },\n { id: 'Replay' },\n );\n}\n","import { EventType } from '@sentry-internal/rrweb';\nimport type { FeedbackEvent } from '@sentry/types';\n\nimport type { ReplayBreadcrumbFrameEvent, ReplayContainer } from '../../types';\n\n/**\n * Add a feedback breadcrumb event to replay.\n */\nexport function addFeedbackBreadcrumb(replay: ReplayContainer, event: FeedbackEvent): void {\n replay.triggerUserActivity();\n replay.addUpdate(() => {\n if (!event.timestamp) {\n // Ignore events that don't have timestamps (this shouldn't happen, more of a typing issue)\n // Return true here so that we don't flush\n return true;\n }\n\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.throttledAddEvent({\n type: EventType.Custom,\n timestamp: event.timestamp * 1000,\n data: {\n tag: 'breadcrumb',\n payload: {\n timestamp: event.timestamp,\n type: 'default',\n category: 'sentry.feedback',\n data: {\n feedbackId: event.event_id,\n },\n },\n },\n } as ReplayBreadcrumbFrameEvent);\n\n return false;\n });\n}\n","import type { Event, EventHint } from '@sentry/types';\n\n/**\n * Returns true if we think the given event is an error originating inside of rrweb.\n */\nexport function isRrwebError(event: Event, hint: EventHint): boolean {\n if (event.type || !event.exception || !event.exception.values || !event.exception.values.length) {\n return false;\n }\n\n // @ts-expect-error this may be set by rrweb when it finds errors\n if (hint.originalException && hint.originalException.__rrweb__) {\n return true;\n }\n\n return false;\n}\n","import type { Event } from '@sentry/types';\n\nimport { UNABLE_TO_SEND_REPLAY } from '../../constants';\nimport type { ReplayContainer } from '../../types';\nimport { isSampled } from '../../util/isSampled';\n\n/**\n * Determine if event should be sampled (only applies in buffer mode).\n * When an event is captured by `hanldleGlobalEvent`, when in buffer mode\n * we determine if we want to sample the error or not.\n */\nexport function shouldSampleForBufferEvent(replay: ReplayContainer, event: Event): boolean {\n if (replay.recordingMode !== 'buffer') {\n return false;\n }\n\n // ignore this error because otherwise we could loop indefinitely with\n // trying to capture replay and failing\n if (event.message === UNABLE_TO_SEND_REPLAY) {\n return false;\n }\n\n // Require the event to be an error event & to have an exception\n if (!event.exception || event.type) {\n return false;\n }\n\n return isSampled(replay.getOptions().errorSampleRate);\n}\n","import { EventType } from '@sentry-internal/rrweb';\n\nimport type { AddEventResult, AllEntryData, ReplayContainer, ReplayPerformanceEntry } from '../types';\n\n/**\n * Create a \"span\" for each performance entry.\n */\nexport function createPerformanceSpans(\n replay: ReplayContainer,\n entries: ReplayPerformanceEntry<AllEntryData>[],\n): Promise<AddEventResult | null>[] {\n return entries.map(({ type, start, end, name, data }) => {\n const response = replay.throttledAddEvent({\n type: EventType.Custom,\n timestamp: start,\n data: {\n tag: 'performanceSpan',\n payload: {\n op: type,\n description: name,\n startTimestamp: start,\n endTimestamp: end,\n data,\n },\n },\n });\n\n // If response is a string, it means its either THROTTLED or SKIPPED\n return typeof response === 'string' ? Promise.resolve(null) : response;\n });\n}\n","import type { HandlerDataHistory } from '@sentry/types';\n\nimport type { HistoryData, ReplayContainer, ReplayPerformanceEntry } from '../types';\nimport { createPerformanceSpans } from '../util/createPerformanceSpans';\n\nfunction handleHistory(handlerData: HandlerDataHistory): ReplayPerformanceEntry<HistoryData> {\n const { from, to } = handlerData;\n\n const now = Date.now() / 1000;\n\n return {\n type: 'navigation.push',\n start: now,\n end: now,\n name: to,\n data: {\n previous: from,\n },\n };\n}\n\n/**\n * Returns a listener to be added to `addHistoryInstrumentationHandler(listener)`.\n */\nexport function handleHistorySpanListener(replay: ReplayContainer): (handlerData: HandlerDataHistory) => void {\n return (handlerData: HandlerDataHistory) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleHistory(handlerData);\n\n if (result === null) {\n return;\n }\n\n // Need to collect visited URLs\n replay.getContext().urls.push(result.name);\n replay.triggerUserActivity();\n\n replay.addUpdate(() => {\n createPerformanceSpans(replay, [result]);\n // Returning false to flush\n return false;\n });\n };\n}\n","import type { NetworkRequestData, ReplayContainer, ReplayPerformanceEntry } from '../../types';\nimport { createPerformanceSpans } from '../../util/createPerformanceSpans';\nimport { shouldFilterRequest } from '../../util/shouldFilterRequest';\n\n/** Add a performance entry breadcrumb */\nexport function addNetworkBreadcrumb(\n replay: ReplayContainer,\n result: ReplayPerformanceEntry<NetworkRequestData> | null,\n): void {\n if (!replay.isEnabled()) {\n return;\n }\n\n if (result === null) {\n return;\n }\n\n if (shouldFilterRequest(replay, result.name)) {\n return;\n }\n\n replay.addUpdate(() => {\n createPerformanceSpans(replay, [result]);\n // Returning true will cause `addUpdate` to not flush\n // We do not want network requests to cause a flush. This will prevent\n // recurring/polling requests from keeping the replay session alive.\n return true;\n });\n}\n","import { getClient, isSentryRequestUrl } from '@sentry/core';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { ReplayContainer } from '../types';\n\n/**\n * Check whether a given request URL should be filtered out. This is so we\n * don't log Sentry ingest requests.\n */\nexport function shouldFilterRequest(replay: ReplayContainer, url: string): boolean {\n // If we enabled the `traceInternals` experiment, we want to trace everything\n if (DEBUG_BUILD && replay.getOptions()._experiments.traceInternals) {\n return false;\n }\n\n return isSentryRequestUrl(url, getClient());\n}\n","import type { HandlerDataXhr } from '@sentry/types';\nimport { SENTRY_XHR_DATA_KEY } from '@sentry/utils';\n\nimport type { NetworkRequestData, ReplayContainer, ReplayPerformanceEntry } from '../types';\nimport { addNetworkBreadcrumb } from './util/addNetworkBreadcrumb';\n\n/** only exported for tests */\nexport function handleXhr(handlerData: HandlerDataXhr): ReplayPerformanceEntry<NetworkRequestData> | null {\n const { startTimestamp, endTimestamp, xhr } = handlerData;\n\n const sentryXhrData = xhr[SENTRY_XHR_DATA_KEY];\n\n if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n return null;\n }\n\n // This is only used as a fallback, so we know the body sizes are never set here\n const { method, url, status_code: statusCode } = sentryXhrData;\n\n if (url === undefined) {\n return null;\n }\n\n return {\n type: 'resource.xhr',\n name: url,\n start: startTimestamp / 1000,\n end: endTimestamp / 1000,\n data: {\n method,\n statusCode,\n },\n };\n}\n\n/**\n * Returns a listener to be added to `addXhrInstrumentationHandler(listener)`.\n */\nexport function handleXhrSpanListener(replay: ReplayContainer): (handlerData: HandlerDataXhr) => void {\n return (handlerData: HandlerDataXhr) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleXhr(handlerData);\n\n addNetworkBreadcrumb(replay, result);\n };\n}\n","import type { TextEncoderInternal } from '@sentry/types';\nimport { dropUndefinedKeys, logger, stringMatchesSomePattern } from '@sentry/utils';\n\nimport { NETWORK_BODY_MAX_SIZE, WINDOW } from '../../constants';\nimport { DEBUG_BUILD } from '../../debug-build';\nimport type {\n NetworkBody,\n NetworkMetaWarning,\n NetworkRequestData,\n ReplayNetworkRequestData,\n ReplayNetworkRequestOrResponse,\n ReplayPerformanceEntry,\n} from '../../types';\n\n/** Get the size of a body. */\nexport function getBodySize(\n body: RequestInit['body'],\n textEncoder: TextEncoder | TextEncoderInternal,\n): number | undefined {\n if (!body) {\n return undefined;\n }\n\n try {\n if (typeof body === 'string') {\n return textEncoder.encode(body).length;\n }\n\n if (body instanceof URLSearchParams) {\n return textEncoder.encode(body.toString()).length;\n }\n\n if (body instanceof FormData) {\n const formDataStr = _serializeFormData(body);\n return textEncoder.encode(formDataStr).length;\n }\n\n if (body instanceof Blob) {\n return body.size;\n }\n\n if (body instanceof ArrayBuffer) {\n return body.byteLength;\n }\n\n // Currently unhandled types: ArrayBufferView, ReadableStream\n } catch {\n // just return undefined\n }\n\n return undefined;\n}\n\n/** Convert a Content-Length header to number/undefined. */\nexport function parseContentLengthHeader(header: string | null | undefined): number | undefined {\n if (!header) {\n return undefined;\n }\n\n const size = parseInt(header, 10);\n return isNaN(size) ? undefined : size;\n}\n\n/** Get the string representation of a body. */\nexport function getBodyString(body: unknown): [string | undefined, NetworkMetaWarning?] {\n try {\n if (typeof body === 'string') {\n return [body];\n }\n\n if (body instanceof URLSearchParams) {\n return [body.toString()];\n }\n\n if (body instanceof FormData) {\n return [_serializeFormData(body)];\n }\n\n if (!body) {\n return [undefined];\n }\n } catch {\n DEBUG_BUILD && logger.warn('[Replay] Failed to serialize body', body);\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n\n DEBUG_BUILD && logger.info('[Replay] Skipping network body because of body type', body);\n\n return [undefined, 'UNPARSEABLE_BODY_TYPE'];\n}\n\n/** Merge a warning into an existing network request/response. */\nexport function mergeWarning(\n info: ReplayNetworkRequestOrResponse | undefined,\n warning: NetworkMetaWarning,\n): ReplayNetworkRequestOrResponse {\n if (!info) {\n return {\n headers: {},\n size: undefined,\n _meta: {\n warnings: [warning],\n },\n };\n }\n\n const newMeta = { ...info._meta };\n const existingWarnings = newMeta.warnings || [];\n newMeta.warnings = [...existingWarnings, warning];\n\n info._meta = newMeta;\n return info;\n}\n\n/** Convert ReplayNetworkRequestData to a PerformanceEntry. */\nexport function makeNetworkReplayBreadcrumb(\n type: string,\n data: ReplayNetworkRequestData | null,\n): ReplayPerformanceEntry<NetworkRequestData> | null {\n if (!data) {\n return null;\n }\n\n const { startTimestamp, endTimestamp, url, method, statusCode, request, response } = data;\n\n const result: ReplayPerformanceEntry<NetworkRequestData> = {\n type,\n start: startTimestamp / 1000,\n end: endTimestamp / 1000,\n name: url,\n data: dropUndefinedKeys({\n method,\n statusCode,\n request,\n response,\n }),\n };\n\n return result;\n}\n\n/** Build the request or response part of a replay network breadcrumb that was skipped. */\nexport function buildSkippedNetworkRequestOrResponse(bodySize: number | undefined): ReplayNetworkRequestOrResponse {\n return {\n headers: {},\n size: bodySize,\n _meta: {\n warnings: ['URL_SKIPPED'],\n },\n };\n}\n\n/** Build the request or response part of a replay network breadcrumb. */\nexport function buildNetworkRequestOrResponse(\n headers: Record<string, string>,\n bodySize: number | undefined,\n body: string | undefined,\n): ReplayNetworkRequestOrResponse | undefined {\n if (!bodySize && Object.keys(headers).length === 0) {\n return undefined;\n }\n\n if (!bodySize) {\n return {\n headers,\n };\n }\n\n if (!body) {\n return {\n headers,\n size: bodySize,\n };\n }\n\n const info: ReplayNetworkRequestOrResponse = {\n headers,\n size: bodySize,\n };\n\n const { body: normalizedBody, warnings } = normalizeNetworkBody(body);\n info.body = normalizedBody;\n if (warnings && warnings.length > 0) {\n info._meta = {\n warnings,\n };\n }\n\n return info;\n}\n\n/** Filter a set of headers */\nexport function getAllowedHeaders(headers: Record<string, string>, allowedHeaders: string[]): Record<string, string> {\n return Object.keys(headers).reduce((filteredHeaders: Record<string, string>, key: string) => {\n const normalizedKey = key.toLowerCase();\n // Avoid putting empty strings into the headers\n if (allowedHeaders.includes(normalizedKey) && headers[key]) {\n filteredHeaders[normalizedKey] = headers[key];\n }\n return filteredHeaders;\n }, {});\n}\n\nfunction _serializeFormData(formData: FormData): string {\n // This is a bit simplified, but gives us a decent estimate\n // This converts e.g. { name: 'Anne Smith', age: 13 } to 'name=Anne+Smith&age=13'\n // @ts-expect-error passing FormData to URLSearchParams actually works\n return new URLSearchParams(formData).toString();\n}\n\nfunction normalizeNetworkBody(body: string | undefined): {\n body: NetworkBody | undefined;\n warnings?: NetworkMetaWarning[];\n} {\n if (!body || typeof body !== 'string') {\n return {\n body,\n };\n }\n\n const exceedsSizeLimit = body.length > NETWORK_BODY_MAX_SIZE;\n const isProbablyJson = _strIsProbablyJson(body);\n\n if (exceedsSizeLimit) {\n const truncatedBody = body.slice(0, NETWORK_BODY_MAX_SIZE);\n\n if (isProbablyJson) {\n return {\n body: truncatedBody,\n warnings: ['MAYBE_JSON_TRUNCATED'],\n };\n }\n\n return {\n body: `${truncatedBody}…`,\n warnings: ['TEXT_TRUNCATED'],\n };\n }\n\n if (isProbablyJson) {\n try {\n const jsonBody = JSON.parse(body);\n return {\n body: jsonBody,\n };\n } catch {\n // fall back to just send the body as string\n }\n }\n\n return {\n body,\n };\n}\n\nfunction _strIsProbablyJson(str: string): boolean {\n const first = str[0];\n const last = str[str.length - 1];\n\n // Simple check: If this does not start & end with {} or [], it's not JSON\n return (first === '[' && last === ']') || (first === '{' && last === '}');\n}\n\n/** Match an URL against a list of strings/Regex. */\nexport function urlMatches(url: string, urls: (string | RegExp)[]): boolean {\n const fullUrl = getFullUrl(url);\n\n return stringMatchesSomePattern(fullUrl, urls);\n}\n\n/** exported for tests */\nexport function getFullUrl(url: string, baseURI = WINDOW.document.baseURI): string {\n // Short circuit for common cases:\n if (url.startsWith('http://') || url.startsWith('https://') || url.startsWith(WINDOW.location.origin)) {\n return url;\n }\n const fixedUrl = new URL(url, baseURI);\n\n // If these do not match, we are not dealing with a relative URL, so just return it\n if (fixedUrl.origin !== new URL(baseURI).origin) {\n return url;\n }\n\n const fullUrl = fixedUrl.href;\n\n // Remove trailing slashes, if they don't match the original URL\n if (!url.endsWith('/') && fullUrl.endsWith('/')) {\n return fullUrl.slice(0, -1);\n }\n\n return fullUrl;\n}\n","import type { Breadcrumb, FetchBreadcrumbData, TextEncoderInternal } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../../debug-build';\nimport type {\n FetchHint,\n NetworkMetaWarning,\n ReplayContainer,\n ReplayNetworkOptions,\n ReplayNetworkRequestData,\n ReplayNetworkRequestOrResponse,\n} from '../../types';\nimport { addNetworkBreadcrumb } from './addNetworkBreadcrumb';\nimport {\n buildNetworkRequestOrResponse,\n buildSkippedNetworkRequestOrResponse,\n getAllowedHeaders,\n getBodySize,\n getBodyString,\n makeNetworkReplayBreadcrumb,\n mergeWarning,\n parseContentLengthHeader,\n urlMatches,\n} from './networkUtils';\n\n/**\n * Capture a fetch breadcrumb to a replay.\n * This adds additional data (where approriate).\n */\nexport async function captureFetchBreadcrumbToReplay(\n breadcrumb: Breadcrumb & { data: FetchBreadcrumbData },\n hint: Partial<FetchHint>,\n options: ReplayNetworkOptions & {\n textEncoder: TextEncoderInternal;\n replay: ReplayContainer;\n },\n): Promise<void> {\n try {\n const data = await _prepareFetchData(breadcrumb, hint, options);\n\n // Create a replay performance entry from this breadcrumb\n const result = makeNetworkReplayBreadcrumb('resource.fetch', data);\n addNetworkBreadcrumb(options.replay, result);\n } catch (error) {\n DEBUG_BUILD && logger.error('[Replay] Failed to capture fetch breadcrumb', error);\n }\n}\n\n/**\n * Enrich a breadcrumb with additional data.\n * This has to be sync & mutate the given breadcrumb,\n * as the breadcrumb is afterwards consumed by other handlers.\n */\nexport function enrichFetchBreadcrumb(\n breadcrumb: Breadcrumb & { data: FetchBreadcrumbData },\n hint: Partial<FetchHint>,\n options: { textEncoder: TextEncoderInternal },\n): void {\n const { input, response } = hint;\n\n const body = input ? _getFetchRequestArgBody(input) : undefined;\n const reqSize = getBodySize(body, options.textEncoder);\n\n const resSize = response ? parseContentLengthHeader(response.headers.get('content-length')) : undefined;\n\n if (reqSize !== undefined) {\n breadcrumb.data.request_body_size = reqSize;\n }\n if (resSize !== undefined) {\n breadcrumb.data.response_body_size = resSize;\n }\n}\n\nasync function _prepareFetchData(\n breadcrumb: Breadcrumb & { data: FetchBreadcrumbData },\n hint: Partial<FetchHint>,\n options: ReplayNetworkOptions & {\n textEncoder: TextEncoderInternal;\n },\n): Promise<ReplayNetworkRequestData> {\n const now = Date.now();\n const { startTimestamp = now, endTimestamp = now } = hint;\n\n const {\n url,\n method,\n status_code: statusCode = 0,\n request_body_size: requestBodySize,\n response_body_size: responseBodySize,\n } = breadcrumb.data;\n\n const captureDetails =\n urlMatches(url, options.networkDetailAllowUrls) && !urlMatches(url, options.networkDetailDenyUrls);\n\n const request = captureDetails\n ? _getRequestInfo(options, hint.input, requestBodySize)\n : buildSkippedNetworkRequestOrResponse(requestBodySize);\n const response = await _getResponseInfo(captureDetails, options, hint.response, responseBodySize);\n\n return {\n startTimestamp,\n endTimestamp,\n url,\n method,\n statusCode,\n request,\n response,\n };\n}\n\nfunction _getRequestInfo(\n { networkCaptureBodies, networkRequestHeaders }: ReplayNetworkOptions,\n input: FetchHint['input'] | undefined,\n requestBodySize?: number,\n): ReplayNetworkRequestOrResponse | undefined {\n const headers = input ? getRequestHeaders(input, networkRequestHeaders) : {};\n\n if (!networkCaptureBodies) {\n return buildNetworkRequestOrResponse(headers, requestBodySize, undefined);\n }\n\n // We only want to transmit string or string-like bodies\n const requestBody = _getFetchRequestArgBody(input);\n const [bodyStr, warning] = getBodyString(requestBody);\n const data = buildNetworkRequestOrResponse(headers, requestBodySize, bodyStr);\n\n if (warning) {\n return mergeWarning(data, warning);\n }\n\n return data;\n}\n\n/** Exported only for tests. */\nexport async function _getResponseInfo(\n captureDetails: boolean,\n {\n networkCaptureBodies,\n textEncoder,\n networkResponseHeaders,\n }: Pick<ReplayNetworkOptions, 'networkCaptureBodies' | 'networkResponseHeaders'> & {\n textEncoder: TextEncoderInternal;\n },\n response: Response | undefined,\n responseBodySize?: number,\n): Promise<ReplayNetworkRequestOrResponse | undefined> {\n if (!captureDetails && responseBodySize !== undefined) {\n return buildSkippedNetworkRequestOrResponse(responseBodySize);\n }\n\n const headers = response ? getAllHeaders(response.headers, networkResponseHeaders) : {};\n\n if (!response || (!networkCaptureBodies && responseBodySize !== undefined)) {\n return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);\n }\n\n const [bodyText, warning] = await _parseFetchResponseBody(response);\n const result = getResponseData(bodyText, {\n networkCaptureBodies,\n textEncoder,\n responseBodySize,\n captureDetails,\n headers,\n });\n\n if (warning) {\n return mergeWarning(result, warning);\n }\n\n return result;\n}\n\nfunction getResponseData(\n bodyText: string | undefined,\n {\n networkCaptureBodies,\n textEncoder,\n responseBodySize,\n captureDetails,\n headers,\n }: {\n captureDetails: boolean;\n networkCaptureBodies: boolean;\n responseBodySize: number | undefined;\n headers: Record<string, string>;\n textEncoder: TextEncoderInternal;\n },\n): ReplayNetworkRequestOrResponse | undefined {\n try {\n const size =\n bodyText && bodyText.length && responseBodySize === undefined\n ? getBodySize(bodyText, textEncoder)\n : responseBodySize;\n\n if (!captureDetails) {\n return buildSkippedNetworkRequestOrResponse(size);\n }\n\n if (networkCaptureBodies) {\n return buildNetworkRequestOrResponse(headers, size, bodyText);\n }\n\n return buildNetworkRequestOrResponse(headers, size, undefined);\n } catch (error) {\n DEBUG_BUILD && logger.warn('[Replay] Failed to serialize response body', error);\n // fallback\n return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);\n }\n}\n\nasync function _parseFetchResponseBody(response: Response): Promise<[string | undefined, NetworkMetaWarning?]> {\n const res = _tryCloneResponse(response);\n\n if (!res) {\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n\n try {\n const text = await _tryGetResponseText(res);\n return [text];\n } catch (error) {\n DEBUG_BUILD && logger.warn('[Replay] Failed to get text body from response', error);\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n}\n\nfunction _getFetchRequestArgBody(fetchArgs: unknown[] = []): RequestInit['body'] | undefined {\n // We only support getting the body from the fetch options\n if (fetchArgs.length !== 2 || typeof fetchArgs[1] !== 'object') {\n return undefined;\n }\n\n return (fetchArgs[1] as RequestInit).body;\n}\n\nfunction getAllHeaders(headers: Headers, allowedHeaders: string[]): Record<string, string> {\n const allHeaders: Record<string, string> = {};\n\n allowedHeaders.forEach(header => {\n if (headers.get(header)) {\n allHeaders[header] = headers.get(header) as string;\n }\n });\n\n return allHeaders;\n}\n\nfunction getRequestHeaders(fetchArgs: unknown[], allowedHeaders: string[]): Record<string, string> {\n if (fetchArgs.length === 1 && typeof fetchArgs[0] !== 'string') {\n return getHeadersFromOptions(fetchArgs[0] as Request | RequestInit, allowedHeaders);\n }\n\n if (fetchArgs.length === 2) {\n return getHeadersFromOptions(fetchArgs[1] as Request | RequestInit, allowedHeaders);\n }\n\n return {};\n}\n\nfunction getHeadersFromOptions(\n input: Request | RequestInit | undefined,\n allowedHeaders: string[],\n): Record<string, string> {\n if (!input) {\n return {};\n }\n\n const headers = input.headers;\n\n if (!headers) {\n return {};\n }\n\n if (headers instanceof Headers) {\n return getAllHeaders(headers, allowedHeaders);\n }\n\n // We do not support this, as it is not really documented (anymore?)\n if (Array.isArray(headers)) {\n return {};\n }\n\n return getAllowedHeaders(headers, allowedHeaders);\n}\n\nfunction _tryCloneResponse(response: Response): Response | void {\n try {\n // We have to clone this, as the body can only be read once\n return response.clone();\n } catch (error) {\n // this can throw if the response was already consumed before\n DEBUG_BUILD && logger.warn('[Replay] Failed to clone response body', error);\n }\n}\n\n/**\n * Get the response body of a fetch request, or timeout after 500ms.\n * Fetch can return a streaming body, that may not resolve (or not for a long time).\n * If that happens, we rather abort after a short time than keep waiting for this.\n */\nfunction _tryGetResponseText(response: Response): Promise<string | undefined> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error('Timeout while trying to read response body')), 500);\n\n _getResponseText(response)\n .then(\n txt => resolve(txt),\n reason => reject(reason),\n )\n .finally(() => clearTimeout(timeout));\n });\n\n return _getResponseText(response);\n}\n\nasync function _getResponseText(response: Response): Promise<string> {\n // Force this to be a promise, just to be safe\n // eslint-disable-next-line no-return-await\n return await response.text();\n}\n","import type { Breadcrumb, TextEncoderInternal, XhrBreadcrumbData } from '@sentry/types';\nimport { SENTRY_XHR_DATA_KEY, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../../debug-build';\nimport type {\n NetworkMetaWarning,\n ReplayContainer,\n ReplayNetworkOptions,\n ReplayNetworkRequestData,\n XhrHint,\n} from '../../types';\nimport { addNetworkBreadcrumb } from './addNetworkBreadcrumb';\nimport {\n buildNetworkRequestOrResponse,\n buildSkippedNetworkRequestOrResponse,\n getAllowedHeaders,\n getBodySize,\n getBodyString,\n makeNetworkReplayBreadcrumb,\n mergeWarning,\n parseContentLengthHeader,\n urlMatches,\n} from './networkUtils';\n\n/**\n * Capture an XHR breadcrumb to a replay.\n * This adds additional data (where approriate).\n */\nexport async function captureXhrBreadcrumbToReplay(\n breadcrumb: Breadcrumb & { data: XhrBreadcrumbData },\n hint: Partial<XhrHint>,\n options: ReplayNetworkOptions & { replay: ReplayContainer },\n): Promise<void> {\n try {\n const data = _prepareXhrData(breadcrumb, hint, options);\n\n // Create a replay performance entry from this breadcrumb\n const result = makeNetworkReplayBreadcrumb('resource.xhr', data);\n addNetworkBreadcrumb(options.replay, result);\n } catch (error) {\n DEBUG_BUILD && logger.error('[Replay] Failed to capture xhr breadcrumb', error);\n }\n}\n\n/**\n * Enrich a breadcrumb with additional data.\n * This has to be sync & mutate the given breadcrumb,\n * as the breadcrumb is afterwards consumed by other handlers.\n */\nexport function enrichXhrBreadcrumb(\n breadcrumb: Breadcrumb & { data: XhrBreadcrumbData },\n hint: Partial<XhrHint>,\n options: { textEncoder: TextEncoderInternal },\n): void {\n const { xhr, input } = hint;\n\n if (!xhr) {\n return;\n }\n\n const reqSize = getBodySize(input, options.textEncoder);\n const resSize = xhr.getResponseHeader('content-length')\n ? parseContentLengthHeader(xhr.getResponseHeader('content-length'))\n : _getBodySize(xhr.response, xhr.responseType, options.textEncoder);\n\n if (reqSize !== undefined) {\n breadcrumb.data.request_body_size = reqSize;\n }\n if (resSize !== undefined) {\n breadcrumb.data.response_body_size = resSize;\n }\n}\n\nfunction _prepareXhrData(\n breadcrumb: Breadcrumb & { data: XhrBreadcrumbData },\n hint: Partial<XhrHint>,\n options: ReplayNetworkOptions,\n): ReplayNetworkRequestData | null {\n const now = Date.now();\n const { startTimestamp = now, endTimestamp = now, input, xhr } = hint;\n\n const {\n url,\n method,\n status_code: statusCode = 0,\n request_body_size: requestBodySize,\n response_body_size: responseBodySize,\n } = breadcrumb.data;\n\n if (!url) {\n return null;\n }\n\n if (!xhr || !urlMatches(url, options.networkDetailAllowUrls) || urlMatches(url, options.networkDetailDenyUrls)) {\n const request = buildSkippedNetworkRequestOrResponse(requestBodySize);\n const response = buildSkippedNetworkRequestOrResponse(responseBodySize);\n return {\n startTimestamp,\n endTimestamp,\n url,\n method,\n statusCode,\n request,\n response,\n };\n }\n\n const xhrInfo = xhr[SENTRY_XHR_DATA_KEY];\n const networkRequestHeaders = xhrInfo\n ? getAllowedHeaders(xhrInfo.request_headers, options.networkRequestHeaders)\n : {};\n const networkResponseHeaders = getAllowedHeaders(getResponseHeaders(xhr), options.networkResponseHeaders);\n\n const [requestBody, requestWarning] = options.networkCaptureBodies ? getBodyString(input) : [undefined];\n const [responseBody, responseWarning] = options.networkCaptureBodies ? _getXhrResponseBody(xhr) : [undefined];\n\n const request = buildNetworkRequestOrResponse(networkRequestHeaders, requestBodySize, requestBody);\n const response = buildNetworkRequestOrResponse(networkResponseHeaders, responseBodySize, responseBody);\n\n return {\n startTimestamp,\n endTimestamp,\n url,\n method,\n statusCode,\n request: requestWarning ? mergeWarning(request, requestWarning) : request,\n response: responseWarning ? mergeWarning(response, responseWarning) : response,\n };\n}\n\nfunction getResponseHeaders(xhr: XMLHttpRequest): Record<string, string> {\n const headers = xhr.getAllResponseHeaders();\n\n if (!headers) {\n return {};\n }\n\n return headers.split('\\r\\n').reduce((acc: Record<string, string>, line: string) => {\n const [key, value] = line.split(': ');\n acc[key.toLowerCase()] = value;\n return acc;\n }, {});\n}\n\nfunction _getXhrResponseBody(xhr: XMLHttpRequest): [string | undefined, NetworkMetaWarning?] {\n // We collect errors that happen, but only log them if we can't get any response body\n const errors: unknown[] = [];\n\n try {\n return [xhr.responseText];\n } catch (e) {\n errors.push(e);\n }\n\n // Try to manually parse the response body, if responseText fails\n try {\n return _parseXhrResponse(xhr.response, xhr.responseType);\n } catch (e) {\n errors.push(e);\n }\n\n DEBUG_BUILD && logger.warn('[Replay] Failed to get xhr response body', ...errors);\n\n return [undefined];\n}\n\n/**\n * Get the string representation of the XHR response.\n * Based on MDN, these are the possible types of the response:\n * string\n * ArrayBuffer\n * Blob\n * Document\n * POJO\n *\n * Exported only for tests.\n */\nexport function _parseXhrResponse(\n body: XMLHttpRequest['response'],\n responseType: XMLHttpRequest['responseType'],\n): [string | undefined, NetworkMetaWarning?] {\n try {\n if (typeof body === 'string') {\n return [body];\n }\n\n if (body instanceof Document) {\n return [body.body.outerHTML];\n }\n\n if (responseType === 'json' && body && typeof body === 'object') {\n return [JSON.stringify(body)];\n }\n\n if (!body) {\n return [undefined];\n }\n } catch {\n DEBUG_BUILD && logger.warn('[Replay] Failed to serialize body', body);\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n\n DEBUG_BUILD && logger.info('[Replay] Skipping network body because of body type', body);\n\n return [undefined, 'UNPARSEABLE_BODY_TYPE'];\n}\n\nfunction _getBodySize(\n body: XMLHttpRequest['response'],\n responseType: XMLHttpRequest['responseType'],\n textEncoder: TextEncoder | TextEncoderInternal,\n): number | undefined {\n try {\n const bodyStr = responseType === 'json' && body && typeof body === 'object' ? JSON.stringify(body) : body;\n return getBodySize(bodyStr, textEncoder);\n } catch {\n return undefined;\n }\n}\n","import { getClient } from '@sentry/core';\nimport type {\n Breadcrumb,\n BreadcrumbHint,\n FetchBreadcrumbData,\n TextEncoderInternal,\n XhrBreadcrumbData,\n} from '@sentry/types';\nimport { addFetchInstrumentationHandler, addXhrInstrumentationHandler, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { FetchHint, ReplayContainer, ReplayNetworkOptions, XhrHint } from '../types';\nimport { handleFetchSpanListener } from './handleFetch';\nimport { handleXhrSpanListener } from './handleXhr';\nimport { captureFetchBreadcrumbToReplay, enrichFetchBreadcrumb } from './util/fetchUtils';\nimport { captureXhrBreadcrumbToReplay, enrichXhrBreadcrumb } from './util/xhrUtils';\n\ninterface ExtendedNetworkBreadcrumbsOptions extends ReplayNetworkOptions {\n replay: ReplayContainer;\n textEncoder: TextEncoderInternal;\n}\n\n/**\n * This method does two things:\n * - It enriches the regular XHR/fetch breadcrumbs with request/response size data\n * - It captures the XHR/fetch breadcrumbs to the replay\n * (enriching it with further data that is _not_ added to the regular breadcrumbs)\n */\nexport function handleNetworkBreadcrumbs(replay: ReplayContainer): void {\n const client = getClient();\n\n try {\n const textEncoder = new TextEncoder();\n\n const {\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders,\n networkResponseHeaders,\n } = replay.getOptions();\n\n const options: ExtendedNetworkBreadcrumbsOptions = {\n replay,\n textEncoder,\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders,\n networkResponseHeaders,\n };\n\n if (client && client.on) {\n client.on('beforeAddBreadcrumb', (breadcrumb, hint) => beforeAddNetworkBreadcrumb(options, breadcrumb, hint));\n } else {\n // Fallback behavior\n addFetchInstrumentationHandler(handleFetchSpanListener(replay));\n addXhrInstrumentationHandler(handleXhrSpanListener(replay));\n }\n } catch {\n // Do nothing\n }\n}\n\n/** just exported for tests */\nexport function beforeAddNetworkBreadcrumb(\n options: ExtendedNetworkBreadcrumbsOptions,\n breadcrumb: Breadcrumb,\n hint?: BreadcrumbHint,\n): void {\n if (!breadcrumb.data) {\n return;\n }\n\n try {\n if (_isXhrBreadcrumb(breadcrumb) && _isXhrHint(hint)) {\n // This has to be sync, as we need to ensure the breadcrumb is enriched in the same tick\n // Because the hook runs synchronously, and the breadcrumb is afterwards passed on\n // So any async mutations to it will not be reflected in the final breadcrumb\n enrichXhrBreadcrumb(breadcrumb, hint, options);\n\n // This call should not reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n captureXhrBreadcrumbToReplay(breadcrumb, hint, options);\n }\n\n if (_isFetchBreadcrumb(breadcrumb) && _isFetchHint(hint)) {\n // This has to be sync, as we need to ensure the breadcrumb is enriched in the same tick\n // Because the hook runs synchronously, and the breadcrumb is afterwards passed on\n // So any async mutations to it will not be reflected in the final breadcrumb\n enrichFetchBreadcrumb(breadcrumb, hint, options);\n\n // This call should not reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n captureFetchBreadcrumbToReplay(breadcrumb, hint, options);\n }\n } catch (e) {\n DEBUG_BUILD && logger.warn('Error when enriching network breadcrumb');\n }\n}\n\nfunction _isXhrBreadcrumb(breadcrumb: Breadcrumb): breadcrumb is Breadcrumb & { data: XhrBreadcrumbData } {\n return breadcrumb.category === 'xhr';\n}\n\nfunction _isFetchBreadcrumb(breadcrumb: Breadcrumb): breadcrumb is Breadcrumb & { data: FetchBreadcrumbData } {\n return breadcrumb.category === 'fetch';\n}\n\nfunction _isXhrHint(hint?: BreadcrumbHint): hint is XhrHint {\n return hint && hint.xhr;\n}\n\nfunction _isFetchHint(hint?: BreadcrumbHint): hint is FetchHint {\n return hint && hint.response;\n}\n","import type { HandlerDataFetch } from '@sentry/types';\n\nimport type { NetworkRequestData, ReplayContainer, ReplayPerformanceEntry } from '../types';\nimport { addNetworkBreadcrumb } from './util/addNetworkBreadcrumb';\n\n/** only exported for tests */\nexport function handleFetch(handlerData: HandlerDataFetch): null | ReplayPerformanceEntry<NetworkRequestData> {\n const { startTimestamp, endTimestamp, fetchData, response } = handlerData;\n\n if (!endTimestamp) {\n return null;\n }\n\n // This is only used as a fallback, so we know the body sizes are never set here\n const { method, url } = fetchData;\n\n return {\n type: 'resource.fetch',\n start: startTimestamp / 1000,\n end: endTimestamp / 1000,\n name: url,\n data: {\n method,\n statusCode: response ? (response as Response).status : undefined,\n },\n };\n}\n\n/**\n * Returns a listener to be added to `addFetchInstrumentationHandler(listener)`.\n */\nexport function handleFetchSpanListener(replay: ReplayContainer): (handlerData: HandlerDataFetch) => void {\n return (handlerData: HandlerDataFetch) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleFetch(handlerData);\n\n addNetworkBreadcrumb(replay, result);\n };\n}\n","import type { Breadcrumb, Scope } from '@sentry/types';\nimport { normalize } from '@sentry/utils';\n\nimport { CONSOLE_ARG_MAX_SIZE } from '../constants';\nimport type { ReplayContainer } from '../types';\nimport type { ReplayFrame } from '../types/replayFrame';\nimport { createBreadcrumb } from '../util/createBreadcrumb';\nimport { addBreadcrumbEvent } from './util/addBreadcrumbEvent';\n\nlet _LAST_BREADCRUMB: null | Breadcrumb = null;\n\ntype BreadcrumbWithCategory = Required<Pick<Breadcrumb, 'category'>>;\n\nfunction isBreadcrumbWithCategory(breadcrumb: Breadcrumb): breadcrumb is BreadcrumbWithCategory {\n return !!breadcrumb.category;\n}\n\nexport const handleScopeListener: (replay: ReplayContainer) => (scope: Scope) => void =\n (replay: ReplayContainer) =>\n (scope: Scope): void => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleScope(scope);\n\n if (!result) {\n return;\n }\n\n addBreadcrumbEvent(replay, result);\n };\n\n/**\n * An event handler to handle scope changes.\n */\nexport function handleScope(scope: Scope): Breadcrumb | null {\n // TODO (v8): Remove this guard. This was put in place because we introduced\n // Scope.getLastBreadcrumb mid-v7 which caused incompatibilities with older SDKs.\n // For now, we'll just return null if the method doesn't exist but we should eventually\n // get rid of this guard.\n const newBreadcrumb = scope.getLastBreadcrumb && scope.getLastBreadcrumb();\n\n // Listener can be called when breadcrumbs have not changed, so we store the\n // reference to the last crumb and only return a crumb if it has changed\n if (_LAST_BREADCRUMB === newBreadcrumb || !newBreadcrumb) {\n return null;\n }\n\n _LAST_BREADCRUMB = newBreadcrumb;\n\n if (\n !isBreadcrumbWithCategory(newBreadcrumb) ||\n ['fetch', 'xhr', 'sentry.event', 'sentry.transaction'].includes(newBreadcrumb.category) ||\n newBreadcrumb.category.startsWith('ui.')\n ) {\n return null;\n }\n\n if (newBreadcrumb.category === 'console') {\n return normalizeConsoleBreadcrumb(newBreadcrumb);\n }\n\n return createBreadcrumb(newBreadcrumb);\n}\n\n/** exported for tests only */\nexport function normalizeConsoleBreadcrumb(\n breadcrumb: Omit<Breadcrumb, 'category'> & BreadcrumbWithCategory,\n): ReplayFrame {\n const args = breadcrumb.data && breadcrumb.data.arguments;\n\n if (!Array.isArray(args) || args.length === 0) {\n return createBreadcrumb(breadcrumb);\n }\n\n let isTruncated = false;\n\n // Avoid giant args captures\n const normalizedArgs = args.map(arg => {\n if (!arg) {\n return arg;\n }\n if (typeof arg === 'string') {\n if (arg.length > CONSOLE_ARG_MAX_SIZE) {\n isTruncated = true;\n return `${arg.slice(0, CONSOLE_ARG_MAX_SIZE)}…`;\n }\n\n return arg;\n }\n if (typeof arg === 'object') {\n try {\n const normalizedArg = normalize(arg, 7);\n const stringified = JSON.stringify(normalizedArg);\n if (stringified.length > CONSOLE_ARG_MAX_SIZE) {\n isTruncated = true;\n // We use the pretty printed JSON string here as a base\n return `${JSON.stringify(normalizedArg, null, 2).slice(0, CONSOLE_ARG_MAX_SIZE)}…`;\n }\n return normalizedArg;\n } catch {\n // fall back to default\n }\n }\n\n return arg;\n });\n\n return createBreadcrumb({\n ...breadcrumb,\n data: {\n ...breadcrumb.data,\n arguments: normalizedArgs,\n ...(isTruncated ? { _meta: { warnings: ['CONSOLE_ARG_TRUNCATED'] } } : {}),\n },\n });\n}\n","import type { BaseClient } from '@sentry/core';\nimport { getCurrentScope } from '@sentry/core';\nimport { addEventProcessor, getClient } from '@sentry/core';\nimport type { Client, DynamicSamplingContext } from '@sentry/types';\nimport { addClickKeypressInstrumentationHandler, addHistoryInstrumentationHandler } from '@sentry/utils';\n\nimport { handleAfterSendEvent } from '../coreHandlers/handleAfterSendEvent';\nimport { handleBeforeSendEvent } from '../coreHandlers/handleBeforeSendEvent';\nimport { handleDomListener } from '../coreHandlers/handleDom';\nimport { handleGlobalEventListener } from '../coreHandlers/handleGlobalEvent';\nimport { handleHistorySpanListener } from '../coreHandlers/handleHistory';\nimport { handleNetworkBreadcrumbs } from '../coreHandlers/handleNetworkBreadcrumbs';\nimport { handleScopeListener } from '../coreHandlers/handleScope';\nimport type { ReplayContainer } from '../types';\n\n/**\n * Add global listeners that cannot be removed.\n */\nexport function addGlobalListeners(replay: ReplayContainer): void {\n // Listeners from core SDK //\n const scope = getCurrentScope();\n const client = getClient();\n\n scope.addScopeListener(handleScopeListener(replay));\n addClickKeypressInstrumentationHandler(handleDomListener(replay));\n addHistoryInstrumentationHandler(handleHistorySpanListener(replay));\n handleNetworkBreadcrumbs(replay);\n\n // Tag all (non replay) events that get sent to Sentry with the current\n // replay ID so that we can reference them later in the UI\n const eventProcessor = handleGlobalEventListener(replay, !hasHooks(client));\n if (client && client.addEventProcessor) {\n client.addEventProcessor(eventProcessor);\n } else {\n addEventProcessor(eventProcessor);\n }\n\n // If a custom client has no hooks yet, we continue to use the \"old\" implementation\n if (hasHooks(client)) {\n client.on('beforeSendEvent', handleBeforeSendEvent(replay));\n client.on('afterSendEvent', handleAfterSendEvent(replay));\n client.on('createDsc', (dsc: DynamicSamplingContext) => {\n const replayId = replay.getSessionId();\n // We do not want to set the DSC when in buffer mode, as that means the replay has not been sent (yet)\n if (replayId && replay.isEnabled() && replay.recordingMode === 'session') {\n // Ensure to check that the session is still active - it could have expired in the meanwhile\n const isSessionActive = replay.checkAndHandleExpiredSession();\n if (isSessionActive) {\n dsc.replay_id = replayId;\n }\n }\n });\n\n client.on('startTransaction', transaction => {\n replay.lastTransaction = transaction;\n });\n\n // We may be missing the initial startTransaction due to timing issues,\n // so we capture it on finish again.\n client.on('finishTransaction', transaction => {\n replay.lastTransaction = transaction;\n });\n\n // We want to flush replay\n client.on('beforeSendFeedback', (feedbackEvent, options) => {\n const replayId = replay.getSessionId();\n if (options && options.includeReplay && replay.isEnabled() && replayId) {\n // This should never reject\n if (feedbackEvent.contexts && feedbackEvent.contexts.feedback) {\n feedbackEvent.contexts.feedback.replay_id = replayId;\n }\n }\n });\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction hasHooks(client: Client | undefined): client is BaseClient<any> {\n return !!(client && client.on);\n}\n","import { WINDOW } from '../constants';\nimport type { AddEventResult, MemoryData, ReplayContainer, ReplayPerformanceEntry } from '../types';\nimport { createPerformanceSpans } from './createPerformanceSpans';\n\ntype ReplayMemoryEntry = ReplayPerformanceEntry<MemoryData> & { data: { memory: MemoryInfo } };\n\ninterface MemoryInfo {\n jsHeapSizeLimit: number;\n totalJSHeapSize: number;\n usedJSHeapSize: number;\n}\n\n/**\n * Create a \"span\" for the total amount of memory being used by JS objects\n * (including v8 internal objects).\n */\nexport async function addMemoryEntry(replay: ReplayContainer): Promise<Array<AddEventResult | null>> {\n // window.performance.memory is a non-standard API and doesn't work on all browsers, so we try-catch this\n try {\n return Promise.all(\n createPerformanceSpans(replay, [\n // @ts-expect-error memory doesn't exist on type Performance as the API is non-standard (we check that it exists above)\n createMemoryEntry(WINDOW.performance.memory),\n ]),\n );\n } catch (error) {\n // Do nothing\n return [];\n }\n}\n\nfunction createMemoryEntry(memoryEntry: MemoryInfo): ReplayMemoryEntry {\n const { jsHeapSizeLimit, totalJSHeapSize, usedJSHeapSize } = memoryEntry;\n // we don't want to use `getAbsoluteTime` because it adds the event time to the\n // time origin, so we get the current timestamp instead\n const time = Date.now() / 1000;\n return {\n type: 'memory',\n name: 'memory',\n start: time,\n end: time,\n data: {\n memory: {\n jsHeapSizeLimit,\n totalJSHeapSize,\n usedJSHeapSize,\n },\n },\n };\n}\n","import { EventType } from '@sentry-internal/rrweb';\nimport { logger } from '@sentry/utils';\n\nimport { updateClickDetectorForRecordingEvent } from '../coreHandlers/handleClick';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { saveSession } from '../session/saveSession';\nimport type { RecordingEvent, ReplayContainer, ReplayOptionFrameEvent } from '../types';\nimport { addEventSync } from './addEvent';\nimport { logInfo } from './log';\n\ntype RecordingEmitCallback = (event: RecordingEvent, isCheckout?: boolean) => void;\n\n/**\n * Handler for recording events.\n *\n * Adds to event buffer, and has varying flushing behaviors if the event was a checkout.\n */\nexport function getHandleRecordingEmit(replay: ReplayContainer): RecordingEmitCallback {\n let hadFirstEvent = false;\n\n return (event: RecordingEvent, _isCheckout?: boolean) => {\n // If this is false, it means session is expired, create and a new session and wait for checkout\n if (!replay.checkAndHandleExpiredSession()) {\n DEBUG_BUILD && logger.warn('[Replay] Received replay event after session expired.');\n\n return;\n }\n\n // `_isCheckout` is only set when the checkout is due to `checkoutEveryNms`\n // We also want to treat the first event as a checkout, so we handle this specifically here\n const isCheckout = _isCheckout || !hadFirstEvent;\n hadFirstEvent = true;\n\n if (replay.clickDetector) {\n updateClickDetectorForRecordingEvent(replay.clickDetector, event);\n }\n\n // The handler returns `true` if we do not want to trigger debounced flush, `false` if we want to debounce flush.\n replay.addUpdate(() => {\n // The session is always started immediately on pageload/init, but for\n // error-only replays, it should reflect the most recent checkout\n // when an error occurs. Clear any state that happens before this current\n // checkout. This needs to happen before `addEvent()` which updates state\n // dependent on this reset.\n if (replay.recordingMode === 'buffer' && isCheckout) {\n replay.setInitialState();\n }\n\n // If the event is not added (e.g. due to being paused, disabled, or out of the max replay duration),\n // Skip all further steps\n if (!addEventSync(replay, event, isCheckout)) {\n // Return true to skip scheduling a debounced flush\n return true;\n }\n\n // Different behavior for full snapshots (type=2), ignore other event types\n // See https://github.com/rrweb-io/rrweb/blob/d8f9290ca496712aa1e7d472549480c4e7876594/packages/rrweb/src/types.ts#L16\n if (!isCheckout) {\n return false;\n }\n\n // Additionally, create a meta event that will capture certain SDK settings.\n // In order to handle buffer mode, this needs to either be done when we\n // receive checkout events or at flush time.\n //\n // `isCheckout` is always true, but want to be explicit that it should\n // only be added for checkouts\n addSettingsEvent(replay, isCheckout);\n\n // If there is a previousSessionId after a full snapshot occurs, then\n // the replay session was started due to session expiration. The new session\n // is started before triggering a new checkout and contains the id\n // of the previous session. Do not immediately flush in this case\n // to avoid capturing only the checkout and instead the replay will\n // be captured if they perform any follow-up actions.\n if (replay.session && replay.session.previousSessionId) {\n return true;\n }\n\n // When in buffer mode, make sure we adjust the session started date to the current earliest event of the buffer\n // this should usually be the timestamp of the checkout event, but to be safe...\n if (replay.recordingMode === 'buffer' && replay.session && replay.eventBuffer) {\n const earliestEvent = replay.eventBuffer.getEarliestTimestamp();\n if (earliestEvent) {\n logInfo(\n `[Replay] Updating session start time to earliest event in buffer to ${new Date(earliestEvent)}`,\n replay.getOptions()._experiments.traceInternals,\n );\n\n replay.session.started = earliestEvent;\n\n if (replay.getOptions().stickySession) {\n saveSession(replay.session);\n }\n }\n }\n\n if (replay.recordingMode === 'session') {\n // If the full snapshot is due to an initial load, we will not have\n // a previous session ID. In this case, we want to buffer events\n // for a set amount of time before flushing. This can help avoid\n // capturing replays of users that immediately close the window.\n\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n void replay.flush();\n }\n\n return true;\n });\n };\n}\n\n/**\n * Exported for tests\n */\nexport function createOptionsEvent(replay: ReplayContainer): ReplayOptionFrameEvent {\n const options = replay.getOptions();\n return {\n type: EventType.Custom,\n timestamp: Date.now(),\n data: {\n tag: 'options',\n payload: {\n shouldRecordCanvas: replay.isRecordingCanvas(),\n sessionSampleRate: options.sessionSampleRate,\n errorSampleRate: options.errorSampleRate,\n useCompressionOption: options.useCompression,\n blockAllMedia: options.blockAllMedia,\n maskAllText: options.maskAllText,\n maskAllInputs: options.maskAllInputs,\n useCompression: replay.eventBuffer ? replay.eventBuffer.type === 'worker' : false,\n networkDetailHasUrls: options.networkDetailAllowUrls.length > 0,\n networkCaptureBodies: options.networkCaptureBodies,\n networkRequestHasHeaders: options.networkRequestHeaders.length > 0,\n networkResponseHasHeaders: options.networkResponseHeaders.length > 0,\n },\n },\n };\n}\n\n/**\n * Add a \"meta\" event that contains a simplified view on current configuration\n * options. This should only be included on the first segment of a recording.\n */\nfunction addSettingsEvent(replay: ReplayContainer, isCheckout?: boolean): void {\n // Only need to add this event when sending the first segment\n if (!isCheckout || !replay.session || replay.session.segmentId !== 0) {\n return;\n }\n\n addEventSync(replay, createOptionsEvent(replay), false);\n}\n","import { getClient, getCurrentScope } from '@sentry/core';\nimport type { ReplayEvent, TransportMakeRequestResponse } from '@sentry/types';\nimport type { RateLimits } from '@sentry/utils';\nimport { isRateLimited, updateRateLimits } from '@sentry/utils';\n\nimport { REPLAY_EVENT_NAME, UNABLE_TO_SEND_REPLAY } from '../constants';\nimport type { SendReplayData } from '../types';\nimport { createReplayEnvelope } from './createReplayEnvelope';\nimport { logInfo } from './log';\nimport { prepareRecordingData } from './prepareRecordingData';\nimport { prepareReplayEvent } from './prepareReplayEvent';\n\n/**\n * Send replay attachment using `fetch()`\n */\nexport async function sendReplayRequest({\n recordingData,\n replayId,\n segmentId: segment_id,\n eventContext,\n timestamp,\n session,\n}: SendReplayData): Promise<void | TransportMakeRequestResponse> {\n const preparedRecordingData = prepareRecordingData({\n recordingData,\n headers: {\n segment_id,\n },\n });\n\n const { urls, errorIds, traceIds, initialTimestamp } = eventContext;\n\n const client = getClient();\n const scope = getCurrentScope();\n const transport = client && client.getTransport();\n const dsn = client && client.getDsn();\n\n if (!client || !transport || !dsn || !session.sampled) {\n return;\n }\n\n const baseEvent: ReplayEvent = {\n type: REPLAY_EVENT_NAME,\n replay_start_timestamp: initialTimestamp / 1000,\n timestamp: timestamp / 1000,\n error_ids: errorIds,\n trace_ids: traceIds,\n urls,\n replay_id: replayId,\n segment_id,\n replay_type: session.sampled,\n };\n\n const replayEvent = await prepareReplayEvent({ scope, client, replayId, event: baseEvent });\n\n if (!replayEvent) {\n // Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions\n client.recordDroppedEvent('event_processor', 'replay', baseEvent);\n logInfo('An event processor returned `null`, will not send event.');\n return;\n }\n\n /*\n For reference, the fully built event looks something like this:\n {\n \"type\": \"replay_event\",\n \"timestamp\": 1670837008.634,\n \"error_ids\": [\n \"errorId\"\n ],\n \"trace_ids\": [\n \"traceId\"\n ],\n \"urls\": [\n \"https://example.com\"\n ],\n \"replay_id\": \"eventId\",\n \"segment_id\": 3,\n \"replay_type\": \"error\",\n \"platform\": \"javascript\",\n \"event_id\": \"eventId\",\n \"environment\": \"production\",\n \"sdk\": {\n \"integrations\": [\n \"BrowserTracing\",\n \"Replay\"\n ],\n \"name\": \"sentry.javascript.browser\",\n \"version\": \"7.25.0\"\n },\n \"sdkProcessingMetadata\": {},\n \"contexts\": {\n },\n }\n */\n\n // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n delete replayEvent.sdkProcessingMetadata;\n\n const envelope = createReplayEnvelope(replayEvent, preparedRecordingData, dsn, client.getOptions().tunnel);\n\n let response: void | TransportMakeRequestResponse;\n\n try {\n response = await transport.send(envelope);\n } catch (err) {\n const error = new Error(UNABLE_TO_SEND_REPLAY);\n\n try {\n // In case browsers don't allow this property to be writable\n // @ts-expect-error This needs lib es2022 and newer\n error.cause = err;\n } catch {\n // nothing to do\n }\n throw error;\n }\n\n // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore\n if (!response) {\n return response;\n }\n\n // If the status code is invalid, we want to immediately stop & not retry\n if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {\n throw new TransportStatusCodeError(response.statusCode);\n }\n\n const rateLimits = updateRateLimits({}, response);\n if (isRateLimited(rateLimits, 'replay')) {\n throw new RateLimitError(rateLimits);\n }\n\n return response;\n}\n\n/**\n * This error indicates that the transport returned an invalid status code.\n */\nexport class TransportStatusCodeError extends Error {\n public constructor(statusCode: number) {\n super(`Transport returned status code ${statusCode}`);\n }\n}\n\n/**\n * This error indicates that we hit a rate limit API error.\n */\nexport class RateLimitError extends Error {\n public rateLimits: RateLimits;\n\n public constructor(rateLimits: RateLimits) {\n super('Rate limit hit');\n this.rateLimits = rateLimits;\n }\n}\n","import type { ReplayRecordingData } from '@sentry/types';\n\n/**\n * Prepare the recording data ready to be sent.\n */\nexport function prepareRecordingData({\n recordingData,\n headers,\n}: {\n recordingData: ReplayRecordingData;\n headers: Record<string, unknown>;\n}): ReplayRecordingData {\n let payloadWithSequence;\n\n // XXX: newline is needed to separate sequence id from events\n const replayHeaders = `${JSON.stringify(headers)}\n`;\n\n if (typeof recordingData === 'string') {\n payloadWithSequence = `${replayHeaders}${recordingData}`;\n } else {\n const enc = new TextEncoder();\n // XXX: newline is needed to separate sequence id from events\n const sequence = enc.encode(replayHeaders);\n // Merge the two Uint8Arrays\n payloadWithSequence = new Uint8Array(sequence.length + recordingData.length);\n payloadWithSequence.set(sequence);\n payloadWithSequence.set(recordingData, sequence.length);\n }\n\n return payloadWithSequence;\n}\n","import type { IntegrationIndex, Scope } from '@sentry/core';\nimport { getIsolationScope } from '@sentry/core';\nimport { prepareEvent } from '@sentry/core';\nimport type { Client, EventHint, ReplayEvent } from '@sentry/types';\n\n/**\n * Prepare a replay event & enrich it with the SDK metadata.\n */\nexport async function prepareReplayEvent({\n client,\n scope,\n replayId: event_id,\n event,\n}: {\n client: Client & { _integrations?: IntegrationIndex };\n scope: Scope;\n replayId: string;\n event: ReplayEvent;\n}): Promise<ReplayEvent | null> {\n const integrations =\n typeof client._integrations === 'object' && client._integrations !== null && !Array.isArray(client._integrations)\n ? Object.keys(client._integrations)\n : undefined;\n\n const eventHint: EventHint = { event_id, integrations };\n\n if (client.emit) {\n client.emit('preprocessEvent', event, eventHint);\n }\n\n const preparedEvent = (await prepareEvent(\n client.getOptions(),\n event,\n eventHint,\n scope,\n client,\n getIsolationScope(),\n )) as ReplayEvent | null;\n\n // If e.g. a global event processor returned null\n if (!preparedEvent) {\n return null;\n }\n\n // This normally happens in browser client \"_prepareEvent\"\n // but since we do not use this private method from the client, but rather the plain import\n // we need to do this manually.\n preparedEvent.platform = preparedEvent.platform || 'javascript';\n\n // extract the SDK name because `client._prepareEvent` doesn't add it to the event\n const metadata = client.getSdkMetadata && client.getSdkMetadata();\n const { name, version } = (metadata && metadata.sdk) || {};\n\n preparedEvent.sdk = {\n ...preparedEvent.sdk,\n name: name || 'sentry.javascript.unknown',\n version: version || '0.0.0',\n };\n\n return preparedEvent;\n}\n","import type { DsnComponents, ReplayEnvelope, ReplayEvent, ReplayRecordingData } from '@sentry/types';\nimport { createEnvelope, createEventEnvelopeHeaders, getSdkMetadataForEnvelopeHeader } from '@sentry/utils';\n\n/**\n * Create a replay envelope ready to be sent.\n * This includes both the replay event, as well as the recording data.\n */\nexport function createReplayEnvelope(\n replayEvent: ReplayEvent,\n recordingData: ReplayRecordingData,\n dsn: DsnComponents,\n tunnel?: string,\n): ReplayEnvelope {\n return createEnvelope<ReplayEnvelope>(\n createEventEnvelopeHeaders(replayEvent, getSdkMetadataForEnvelopeHeader(replayEvent), tunnel, dsn),\n [\n [{ type: 'replay_event' }, replayEvent],\n [\n {\n type: 'replay_recording',\n // If string then we need to encode to UTF8, otherwise will have\n // wrong size. TextEncoder has similar browser support to\n // MutationObserver, although it does not accept IE11.\n length:\n typeof recordingData === 'string' ? new TextEncoder().encode(recordingData).length : recordingData.length,\n },\n recordingData,\n ],\n ],\n );\n}\n","import { captureException, setContext } from '@sentry/core';\n\nimport { RETRY_BASE_INTERVAL, RETRY_MAX_COUNT, UNABLE_TO_SEND_REPLAY } from '../constants';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { SendReplayData } from '../types';\nimport { RateLimitError, TransportStatusCodeError, sendReplayRequest } from './sendReplayRequest';\n\n/**\n * Finalize and send the current replay event to Sentry\n */\nexport async function sendReplay(\n replayData: SendReplayData,\n retryConfig = {\n count: 0,\n interval: RETRY_BASE_INTERVAL,\n },\n): Promise<unknown> {\n const { recordingData, options } = replayData;\n\n // short circuit if there's no events to upload (this shouldn't happen as _runFlush makes this check)\n if (!recordingData.length) {\n return;\n }\n\n try {\n await sendReplayRequest(replayData);\n return true;\n } catch (err) {\n if (err instanceof TransportStatusCodeError || err instanceof RateLimitError) {\n throw err;\n }\n\n // Capture error for every failed replay\n setContext('Replays', {\n _retryCount: retryConfig.count,\n });\n\n if (DEBUG_BUILD && options._experiments && options._experiments.captureExceptions) {\n captureException(err);\n }\n\n // If an error happened here, it's likely that uploading the attachment\n // failed, we'll can retry with the same events payload\n if (retryConfig.count >= RETRY_MAX_COUNT) {\n const error = new Error(`${UNABLE_TO_SEND_REPLAY} - max retries exceeded`);\n\n try {\n // In case browsers don't allow this property to be writable\n // @ts-expect-error This needs lib es2022 and newer\n error.cause = err;\n } catch {\n // nothing to do\n }\n\n throw error;\n }\n\n // will retry in intervals of 5, 10, 30\n retryConfig.interval *= ++retryConfig.count;\n\n return new Promise((resolve, reject) => {\n setTimeout(async () => {\n try {\n await sendReplay(replayData, retryConfig);\n resolve(true);\n } catch (err) {\n reject(err);\n }\n }, retryConfig.interval);\n });\n }\n}\n","export const THROTTLED = '__THROTTLED';\nexport const SKIPPED = '__SKIPPED';\n\n/**\n * Create a throttled function off a given function.\n * When calling the throttled function, it will call the original function only\n * if it hasn't been called more than `maxCount` times in the last `durationSeconds`.\n *\n * Returns `THROTTLED` if throttled for the first time, after that `SKIPPED`,\n * or else the return value of the original function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function throttle<T extends (...rest: any[]) => any>(\n fn: T,\n maxCount: number,\n durationSeconds: number,\n): (...rest: Parameters<T>) => ReturnType<T> | typeof THROTTLED | typeof SKIPPED {\n const counter = new Map<number, number>();\n\n const _cleanup = (now: number): void => {\n const threshold = now - durationSeconds;\n counter.forEach((_value, key) => {\n if (key < threshold) {\n counter.delete(key);\n }\n });\n };\n\n const _getTotalCount = (): number => {\n return [...counter.values()].reduce((a, b) => a + b, 0);\n };\n\n let isThrottled = false;\n\n return (...rest: Parameters<T>): ReturnType<T> | typeof THROTTLED | typeof SKIPPED => {\n // Date in second-precision, which we use as basis for the throttling\n const now = Math.floor(Date.now() / 1000);\n\n // First, make sure to delete any old entries\n _cleanup(now);\n\n // If already over limit, do nothing\n if (_getTotalCount() >= maxCount) {\n const wasThrottled = isThrottled;\n isThrottled = true;\n return wasThrottled ? SKIPPED : THROTTLED;\n }\n\n isThrottled = false;\n const count = counter.get(now) || 0;\n counter.set(now, count + 1);\n\n return fn(...rest);\n };\n}\n","/* eslint-disable max-lines */ // TODO: We might want to split this file up\nimport { EventType, record } from '@sentry-internal/rrweb';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n captureException,\n getClient,\n getCurrentScope,\n spanToJSON,\n} from '@sentry/core';\nimport type { ReplayRecordingMode, Transaction } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport {\n BUFFER_CHECKOUT_TIME,\n SESSION_IDLE_EXPIRE_DURATION,\n SESSION_IDLE_PAUSE_DURATION,\n SLOW_CLICK_SCROLL_TIMEOUT,\n SLOW_CLICK_THRESHOLD,\n WINDOW,\n} from './constants';\nimport { ClickDetector } from './coreHandlers/handleClick';\nimport { handleKeyboardEvent } from './coreHandlers/handleKeyboardEvent';\nimport { setupPerformanceObserver } from './coreHandlers/performanceObserver';\nimport { DEBUG_BUILD } from './debug-build';\nimport { createEventBuffer } from './eventBuffer';\nimport { clearSession } from './session/clearSession';\nimport { loadOrCreateSession } from './session/loadOrCreateSession';\nimport { saveSession } from './session/saveSession';\nimport { shouldRefreshSession } from './session/shouldRefreshSession';\n\nimport type {\n AddEventResult,\n AddUpdateCallback,\n AllPerformanceEntry,\n AllPerformanceEntryData,\n EventBuffer,\n InternalEventContext,\n PopEventContext,\n RecordingEvent,\n RecordingOptions,\n ReplayBreadcrumbFrame,\n ReplayCanvasIntegrationOptions,\n ReplayContainer as ReplayContainerInterface,\n ReplayPerformanceEntry,\n ReplayPluginOptions,\n SendBufferedReplayOptions,\n Session,\n SlowClickConfig,\n Timeouts,\n} from './types';\nimport { ReplayEventTypeCustom } from './types';\nimport { addEvent, addEventSync } from './util/addEvent';\nimport { addGlobalListeners } from './util/addGlobalListeners';\nimport { addMemoryEntry } from './util/addMemoryEntry';\nimport { createBreadcrumb } from './util/createBreadcrumb';\nimport { createPerformanceEntries } from './util/createPerformanceEntries';\nimport { createPerformanceSpans } from './util/createPerformanceSpans';\nimport { debounce } from './util/debounce';\nimport { getHandleRecordingEmit } from './util/handleRecordingEmit';\nimport { isExpired } from './util/isExpired';\nimport { isSessionExpired } from './util/isSessionExpired';\nimport { logInfo, logInfoNextTick } from './util/log';\nimport { sendReplay } from './util/sendReplay';\nimport type { SKIPPED } from './util/throttle';\nimport { THROTTLED, throttle } from './util/throttle';\n\n/**\n * The main replay container class, which holds all the state and methods for recording and sending replays.\n */\nexport class ReplayContainer implements ReplayContainerInterface {\n public eventBuffer: EventBuffer | null;\n\n public performanceEntries: AllPerformanceEntry[];\n\n public replayPerformanceEntries: ReplayPerformanceEntry<AllPerformanceEntryData>[];\n\n public session: Session | undefined;\n\n public clickDetector: ClickDetector | undefined;\n\n /**\n * Recording can happen in one of three modes:\n * - session: Record the whole session, sending it continuously\n * - buffer: Always keep the last 60s of recording, requires:\n * - having replaysOnErrorSampleRate > 0 to capture replay when an error occurs\n * - or calling `flush()` to send the replay\n */\n public recordingMode: ReplayRecordingMode;\n\n /**\n * The current or last active transcation.\n * This is only available when performance is enabled.\n */\n public lastTransaction?: Transaction;\n\n /**\n * These are here so we can overwrite them in tests etc.\n * @hidden\n */\n public readonly timeouts: Timeouts;\n\n private _throttledAddEvent: (\n event: RecordingEvent,\n isCheckout?: boolean,\n ) => typeof THROTTLED | typeof SKIPPED | Promise<AddEventResult | null>;\n\n /**\n * Options to pass to `rrweb.record()`\n */\n private readonly _recordingOptions: RecordingOptions;\n\n private readonly _options: ReplayPluginOptions;\n\n private _performanceCleanupCallback?: () => void;\n\n private _debouncedFlush: ReturnType<typeof debounce>;\n private _flushLock: Promise<unknown> | undefined;\n\n /**\n * Timestamp of the last user activity. This lives across sessions.\n */\n private _lastActivity: number;\n\n /**\n * Is the integration currently active?\n */\n private _isEnabled: boolean;\n\n /**\n * Paused is a state where:\n * - DOM Recording is not listening at all\n * - Nothing will be added to event buffer (e.g. core SDK events)\n */\n private _isPaused: boolean;\n\n /**\n * Have we attached listeners to the core SDK?\n * Note we have to track this as there is no way to remove instrumentation handlers.\n */\n private _hasInitializedCoreListeners: boolean;\n\n /**\n * Function to stop recording\n */\n private _stopRecording: ReturnType<typeof record> | undefined;\n\n private _context: InternalEventContext;\n\n /**\n * Internal use for canvas recording options\n */\n private _canvas: ReplayCanvasIntegrationOptions | undefined;\n\n public constructor({\n options,\n recordingOptions,\n }: {\n options: ReplayPluginOptions;\n recordingOptions: RecordingOptions;\n }) {\n this.eventBuffer = null;\n this.performanceEntries = [];\n this.replayPerformanceEntries = [];\n this.recordingMode = 'session';\n this.timeouts = {\n sessionIdlePause: SESSION_IDLE_PAUSE_DURATION,\n sessionIdleExpire: SESSION_IDLE_EXPIRE_DURATION,\n } as const;\n this._lastActivity = Date.now();\n this._isEnabled = false;\n this._isPaused = false;\n this._hasInitializedCoreListeners = false;\n this._context = {\n errorIds: new Set(),\n traceIds: new Set(),\n urls: [],\n initialTimestamp: Date.now(),\n initialUrl: '',\n };\n\n this._recordingOptions = recordingOptions;\n this._options = options;\n\n this._debouncedFlush = debounce(() => this._flush(), this._options.flushMinDelay, {\n maxWait: this._options.flushMaxDelay,\n });\n\n this._throttledAddEvent = throttle(\n (event: RecordingEvent, isCheckout?: boolean) => addEvent(this, event, isCheckout),\n // Max 300 events...\n 300,\n // ... per 5s\n 5,\n );\n\n const { slowClickTimeout, slowClickIgnoreSelectors } = this.getOptions();\n\n const slowClickConfig: SlowClickConfig | undefined = slowClickTimeout\n ? {\n threshold: Math.min(SLOW_CLICK_THRESHOLD, slowClickTimeout),\n timeout: slowClickTimeout,\n scrollTimeout: SLOW_CLICK_SCROLL_TIMEOUT,\n ignoreSelector: slowClickIgnoreSelectors ? slowClickIgnoreSelectors.join(',') : '',\n }\n : undefined;\n\n if (slowClickConfig) {\n this.clickDetector = new ClickDetector(this, slowClickConfig);\n }\n }\n\n /** Get the event context. */\n public getContext(): InternalEventContext {\n return this._context;\n }\n\n /** If recording is currently enabled. */\n public isEnabled(): boolean {\n return this._isEnabled;\n }\n\n /** If recording is currently paused. */\n public isPaused(): boolean {\n return this._isPaused;\n }\n\n /**\n * Determine if canvas recording is enabled\n */\n public isRecordingCanvas(): boolean {\n return Boolean(this._canvas);\n }\n\n /** Get the replay integration options. */\n public getOptions(): ReplayPluginOptions {\n return this._options;\n }\n\n /**\n * Initializes the plugin based on sampling configuration. Should not be\n * called outside of constructor.\n */\n public initializeSampling(previousSessionId?: string): void {\n const { errorSampleRate, sessionSampleRate } = this._options;\n\n // If neither sample rate is > 0, then do nothing - user will need to call one of\n // `start()` or `startBuffering` themselves.\n if (errorSampleRate <= 0 && sessionSampleRate <= 0) {\n return;\n }\n\n // Otherwise if there is _any_ sample rate set, try to load an existing\n // session, or create a new one.\n this._initializeSessionForSampling(previousSessionId);\n\n if (!this.session) {\n // This should not happen, something wrong has occurred\n this._handleException(new Error('Unable to initialize and create session'));\n return;\n }\n\n if (this.session.sampled === false) {\n // This should only occur if `errorSampleRate` is 0 and was unsampled for\n // session-based replay. In this case there is nothing to do.\n return;\n }\n\n // If segmentId > 0, it means we've previously already captured this session\n // In this case, we still want to continue in `session` recording mode\n this.recordingMode = this.session.sampled === 'buffer' && this.session.segmentId === 0 ? 'buffer' : 'session';\n\n logInfoNextTick(\n `[Replay] Starting replay in ${this.recordingMode} mode`,\n this._options._experiments.traceInternals,\n );\n\n this._initializeRecording();\n }\n\n /**\n * Start a replay regardless of sampling rate. Calling this will always\n * create a new session. Will throw an error if replay is already in progress.\n *\n * Creates or loads a session, attaches listeners to varying events (DOM,\n * _performanceObserver, Recording, Sentry SDK, etc)\n */\n public start(): void {\n if (this._isEnabled && this.recordingMode === 'session') {\n throw new Error('Replay recording is already in progress');\n }\n\n if (this._isEnabled && this.recordingMode === 'buffer') {\n throw new Error('Replay buffering is in progress, call `flush()` to save the replay');\n }\n\n logInfoNextTick('[Replay] Starting replay in session mode', this._options._experiments.traceInternals);\n\n // Required as user activity is initially set in\n // constructor, so if `start()` is called after\n // session idle expiration, a replay will not be\n // created due to an idle timeout.\n this._updateUserActivity();\n\n const session = loadOrCreateSession(\n {\n maxReplayDuration: this._options.maxReplayDuration,\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n traceInternals: this._options._experiments.traceInternals,\n },\n {\n stickySession: this._options.stickySession,\n // This is intentional: create a new session-based replay when calling `start()`\n sessionSampleRate: 1,\n allowBuffering: false,\n },\n );\n\n this.session = session;\n\n this._initializeRecording();\n }\n\n /**\n * Start replay buffering. Buffers until `flush()` is called or, if\n * `replaysOnErrorSampleRate` > 0, an error occurs.\n */\n public startBuffering(): void {\n if (this._isEnabled) {\n throw new Error('Replay recording is already in progress');\n }\n\n logInfoNextTick('[Replay] Starting replay in buffer mode', this._options._experiments.traceInternals);\n\n const session = loadOrCreateSession(\n {\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n maxReplayDuration: this._options.maxReplayDuration,\n traceInternals: this._options._experiments.traceInternals,\n },\n {\n stickySession: this._options.stickySession,\n sessionSampleRate: 0,\n allowBuffering: true,\n },\n );\n\n this.session = session;\n\n this.recordingMode = 'buffer';\n this._initializeRecording();\n }\n\n /**\n * Start recording.\n *\n * Note that this will cause a new DOM checkout\n */\n public startRecording(): void {\n try {\n const canvasOptions = this._canvas;\n\n this._stopRecording = record({\n ...this._recordingOptions,\n // When running in error sampling mode, we need to overwrite `checkoutEveryNms`\n // Without this, it would record forever, until an error happens, which we don't want\n // instead, we'll always keep the last 60 seconds of replay before an error happened\n ...(this.recordingMode === 'buffer' && { checkoutEveryNms: BUFFER_CHECKOUT_TIME }),\n emit: getHandleRecordingEmit(this),\n onMutation: this._onMutationHandler,\n ...(canvasOptions\n ? {\n recordCanvas: canvasOptions.recordCanvas,\n getCanvasManager: canvasOptions.getCanvasManager,\n sampling: canvasOptions.sampling,\n dataURLOptions: canvasOptions.dataURLOptions,\n }\n : {}),\n });\n } catch (err) {\n this._handleException(err);\n }\n }\n\n /**\n * Stops the recording, if it was running.\n *\n * Returns true if it was previously stopped, or is now stopped,\n * otherwise false.\n */\n public stopRecording(): boolean {\n try {\n if (this._stopRecording) {\n this._stopRecording();\n this._stopRecording = undefined;\n }\n\n return true;\n } catch (err) {\n this._handleException(err);\n return false;\n }\n }\n\n /**\n * Currently, this needs to be manually called (e.g. for tests). Sentry SDK\n * does not support a teardown\n */\n public async stop({ forceFlush = false, reason }: { forceFlush?: boolean; reason?: string } = {}): Promise<void> {\n if (!this._isEnabled) {\n return;\n }\n\n // We can't move `_isEnabled` after awaiting a flush, otherwise we can\n // enter into an infinite loop when `stop()` is called while flushing.\n this._isEnabled = false;\n\n try {\n logInfo(\n `[Replay] Stopping Replay${reason ? ` triggered by ${reason}` : ''}`,\n this._options._experiments.traceInternals,\n );\n\n this._removeListeners();\n this.stopRecording();\n\n this._debouncedFlush.cancel();\n // See comment above re: `_isEnabled`, we \"force\" a flush, ignoring the\n // `_isEnabled` state of the plugin since it was disabled above.\n if (forceFlush) {\n await this._flush({ force: true });\n }\n\n // After flush, destroy event buffer\n this.eventBuffer && this.eventBuffer.destroy();\n this.eventBuffer = null;\n\n // Clear session from session storage, note this means if a new session\n // is started after, it will not have `previousSessionId`\n clearSession(this);\n } catch (err) {\n this._handleException(err);\n }\n }\n\n /**\n * Pause some replay functionality. See comments for `_isPaused`.\n * This differs from stop as this only stops DOM recording, it is\n * not as thorough of a shutdown as `stop()`.\n */\n public pause(): void {\n if (this._isPaused) {\n return;\n }\n\n this._isPaused = true;\n this.stopRecording();\n\n logInfo('[Replay] Pausing replay', this._options._experiments.traceInternals);\n }\n\n /**\n * Resumes recording, see notes for `pause().\n *\n * Note that calling `startRecording()` here will cause a\n * new DOM checkout.`\n */\n public resume(): void {\n if (!this._isPaused || !this._checkSession()) {\n return;\n }\n\n this._isPaused = false;\n this.startRecording();\n\n logInfo('[Replay] Resuming replay', this._options._experiments.traceInternals);\n }\n\n /**\n * If not in \"session\" recording mode, flush event buffer which will create a new replay.\n * Unless `continueRecording` is false, the replay will continue to record and\n * behave as a \"session\"-based replay.\n *\n * Otherwise, queue up a flush.\n */\n public async sendBufferedReplayOrFlush({ continueRecording = true }: SendBufferedReplayOptions = {}): Promise<void> {\n if (this.recordingMode === 'session') {\n return this.flushImmediate();\n }\n\n const activityTime = Date.now();\n\n logInfo('[Replay] Converting buffer to session', this._options._experiments.traceInternals);\n\n // Allow flush to complete before resuming as a session recording, otherwise\n // the checkout from `startRecording` may be included in the payload.\n // Prefer to keep the error replay as a separate (and smaller) segment\n // than the session replay.\n await this.flushImmediate();\n\n const hasStoppedRecording = this.stopRecording();\n\n if (!continueRecording || !hasStoppedRecording) {\n return;\n }\n\n // To avoid race conditions where this is called multiple times, we check here again that we are still buffering\n if ((this.recordingMode as ReplayRecordingMode) === 'session') {\n return;\n }\n\n // Re-start recording in session-mode\n this.recordingMode = 'session';\n\n // Once this session ends, we do not want to refresh it\n if (this.session) {\n this._updateUserActivity(activityTime);\n this._updateSessionActivity(activityTime);\n this._maybeSaveSession();\n }\n\n this.startRecording();\n }\n\n /**\n * We want to batch uploads of replay events. Save events only if\n * `<flushMinDelay>` milliseconds have elapsed since the last event\n * *OR* if `<flushMaxDelay>` milliseconds have elapsed.\n *\n * Accepts a callback to perform side-effects and returns true to stop batch\n * processing and hand back control to caller.\n */\n public addUpdate(cb: AddUpdateCallback): void {\n // We need to always run `cb` (e.g. in the case of `this.recordingMode == 'buffer'`)\n const cbResult = cb();\n\n // If this option is turned on then we will only want to call `flush`\n // explicitly\n if (this.recordingMode === 'buffer') {\n return;\n }\n\n // If callback is true, we do not want to continue with flushing -- the\n // caller will need to handle it.\n if (cbResult === true) {\n return;\n }\n\n // addUpdate is called quite frequently - use _debouncedFlush so that it\n // respects the flush delays and does not flush immediately\n this._debouncedFlush();\n }\n\n /**\n * Updates the user activity timestamp and resumes recording. This should be\n * called in an event handler for a user action that we consider as the user\n * being \"active\" (e.g. a mouse click).\n */\n public triggerUserActivity(): void {\n this._updateUserActivity();\n\n // This case means that recording was once stopped due to inactivity.\n // Ensure that recording is resumed.\n if (!this._stopRecording) {\n // Create a new session, otherwise when the user action is flushed, it\n // will get rejected due to an expired session.\n if (!this._checkSession()) {\n return;\n }\n\n // Note: This will cause a new DOM checkout\n this.resume();\n return;\n }\n\n // Otherwise... recording was never suspended, continue as normalish\n this.checkAndHandleExpiredSession();\n\n this._updateSessionActivity();\n }\n\n /**\n * Updates the user activity timestamp *without* resuming\n * recording. Some user events (e.g. keydown) can be create\n * low-value replays that only contain the keypress as a\n * breadcrumb. Instead this would require other events to\n * create a new replay after a session has expired.\n */\n public updateUserActivity(): void {\n this._updateUserActivity();\n this._updateSessionActivity();\n }\n\n /**\n * Only flush if `this.recordingMode === 'session'`\n */\n public conditionalFlush(): Promise<void> {\n if (this.recordingMode === 'buffer') {\n return Promise.resolve();\n }\n\n return this.flushImmediate();\n }\n\n /**\n * Flush using debounce flush\n */\n public flush(): Promise<void> {\n return this._debouncedFlush() as Promise<void>;\n }\n\n /**\n * Always flush via `_debouncedFlush` so that we do not have flushes triggered\n * from calling both `flush` and `_debouncedFlush`. Otherwise, there could be\n * cases of mulitple flushes happening closely together.\n */\n public flushImmediate(): Promise<void> {\n this._debouncedFlush();\n // `.flush` is provided by the debounced function, analogously to lodash.debounce\n return this._debouncedFlush.flush() as Promise<void>;\n }\n\n /**\n * Cancels queued up flushes.\n */\n public cancelFlush(): void {\n this._debouncedFlush.cancel();\n }\n\n /** Get the current sesion (=replay) ID */\n public getSessionId(): string | undefined {\n return this.session && this.session.id;\n }\n\n /**\n * Checks if recording should be stopped due to user inactivity. Otherwise\n * check if session is expired and create a new session if so. Triggers a new\n * full snapshot on new session.\n *\n * Returns true if session is not expired, false otherwise.\n * @hidden\n */\n public checkAndHandleExpiredSession(): boolean | void {\n // Prevent starting a new session if the last user activity is older than\n // SESSION_IDLE_PAUSE_DURATION. Otherwise non-user activity can trigger a new\n // session+recording. This creates noisy replays that do not have much\n // content in them.\n if (\n this._lastActivity &&\n isExpired(this._lastActivity, this.timeouts.sessionIdlePause) &&\n this.session &&\n this.session.sampled === 'session'\n ) {\n // Pause recording only for session-based replays. Otherwise, resuming\n // will create a new replay and will conflict with users who only choose\n // to record error-based replays only. (e.g. the resumed replay will not\n // contain a reference to an error)\n this.pause();\n return;\n }\n\n // --- There is recent user activity --- //\n // This will create a new session if expired, based on expiry length\n if (!this._checkSession()) {\n // Check session handles the refreshing itself\n return false;\n }\n\n return true;\n }\n\n /**\n * Capture some initial state that can change throughout the lifespan of the\n * replay. This is required because otherwise they would be captured at the\n * first flush.\n */\n public setInitialState(): void {\n const urlPath = `${WINDOW.location.pathname}${WINDOW.location.hash}${WINDOW.location.search}`;\n const url = `${WINDOW.location.origin}${urlPath}`;\n\n this.performanceEntries = [];\n this.replayPerformanceEntries = [];\n\n // Reset _context as well\n this._clearContext();\n\n this._context.initialUrl = url;\n this._context.initialTimestamp = Date.now();\n this._context.urls.push(url);\n }\n\n /**\n * Add a breadcrumb event, that may be throttled.\n * If it was throttled, we add a custom breadcrumb to indicate that.\n */\n public throttledAddEvent(\n event: RecordingEvent,\n isCheckout?: boolean,\n ): typeof THROTTLED | typeof SKIPPED | Promise<AddEventResult | null> {\n const res = this._throttledAddEvent(event, isCheckout);\n\n // If this is THROTTLED, it means we have throttled the event for the first time\n // In this case, we want to add a breadcrumb indicating that something was skipped\n if (res === THROTTLED) {\n const breadcrumb = createBreadcrumb({\n category: 'replay.throttled',\n });\n\n this.addUpdate(() => {\n // Return `false` if the event _was_ added, as that means we schedule a flush\n return !addEventSync(this, {\n type: ReplayEventTypeCustom,\n timestamp: breadcrumb.timestamp || 0,\n data: {\n tag: 'breadcrumb',\n payload: breadcrumb,\n metric: true,\n },\n });\n });\n }\n\n return res;\n }\n\n /**\n * This will get the parametrized route name of the current page.\n * This is only available if performance is enabled, and if an instrumented router is used.\n */\n public getCurrentRoute(): string | undefined {\n // eslint-disable-next-line deprecation/deprecation\n const lastTransaction = this.lastTransaction || getCurrentScope().getTransaction();\n\n const attributes = (lastTransaction && spanToJSON(lastTransaction).data) || {};\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n if (!lastTransaction || !source || !['route', 'custom'].includes(source)) {\n return undefined;\n }\n\n return spanToJSON(lastTransaction).description;\n }\n\n /**\n * Initialize and start all listeners to varying events (DOM,\n * Performance Observer, Recording, Sentry SDK, etc)\n */\n private _initializeRecording(): void {\n this.setInitialState();\n\n // this method is generally called on page load or manually - in both cases\n // we should treat it as an activity\n this._updateSessionActivity();\n\n this.eventBuffer = createEventBuffer({\n useCompression: this._options.useCompression,\n workerUrl: this._options.workerUrl,\n });\n\n this._removeListeners();\n this._addListeners();\n\n // Need to set as enabled before we start recording, as `record()` can trigger a flush with a new checkout\n this._isEnabled = true;\n this._isPaused = false;\n\n this.startRecording();\n }\n\n /** A wrapper to conditionally capture exceptions. */\n private _handleException(error: unknown): void {\n DEBUG_BUILD && logger.error('[Replay]', error);\n\n if (DEBUG_BUILD && this._options._experiments && this._options._experiments.captureExceptions) {\n captureException(error);\n }\n }\n\n /**\n * Loads (or refreshes) the current session.\n */\n private _initializeSessionForSampling(previousSessionId?: string): void {\n // Whenever there is _any_ error sample rate, we always allow buffering\n // Because we decide on sampling when an error occurs, we need to buffer at all times if sampling for errors\n const allowBuffering = this._options.errorSampleRate > 0;\n\n const session = loadOrCreateSession(\n {\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n maxReplayDuration: this._options.maxReplayDuration,\n traceInternals: this._options._experiments.traceInternals,\n previousSessionId,\n },\n {\n stickySession: this._options.stickySession,\n sessionSampleRate: this._options.sessionSampleRate,\n allowBuffering,\n },\n );\n\n this.session = session;\n }\n\n /**\n * Checks and potentially refreshes the current session.\n * Returns false if session is not recorded.\n */\n private _checkSession(): boolean {\n // If there is no session yet, we do not want to refresh anything\n // This should generally not happen, but to be safe....\n if (!this.session) {\n return false;\n }\n\n const currentSession = this.session;\n\n if (\n shouldRefreshSession(currentSession, {\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n maxReplayDuration: this._options.maxReplayDuration,\n })\n ) {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._refreshSession(currentSession);\n return false;\n }\n\n return true;\n }\n\n /**\n * Refresh a session with a new one.\n * This stops the current session (without forcing a flush, as that would never work since we are expired),\n * and then does a new sampling based on the refreshed session.\n */\n private async _refreshSession(session: Session): Promise<void> {\n if (!this._isEnabled) {\n return;\n }\n await this.stop({ reason: 'refresh session' });\n this.initializeSampling(session.id);\n }\n\n /**\n * Adds listeners to record events for the replay\n */\n private _addListeners(): void {\n try {\n WINDOW.document.addEventListener('visibilitychange', this._handleVisibilityChange);\n WINDOW.addEventListener('blur', this._handleWindowBlur);\n WINDOW.addEventListener('focus', this._handleWindowFocus);\n WINDOW.addEventListener('keydown', this._handleKeyboardEvent);\n\n if (this.clickDetector) {\n this.clickDetector.addListeners();\n }\n\n // There is no way to remove these listeners, so ensure they are only added once\n if (!this._hasInitializedCoreListeners) {\n addGlobalListeners(this);\n\n this._hasInitializedCoreListeners = true;\n }\n } catch (err) {\n this._handleException(err);\n }\n\n this._performanceCleanupCallback = setupPerformanceObserver(this);\n }\n\n /**\n * Cleans up listeners that were created in `_addListeners`\n */\n private _removeListeners(): void {\n try {\n WINDOW.document.removeEventListener('visibilitychange', this._handleVisibilityChange);\n\n WINDOW.removeEventListener('blur', this._handleWindowBlur);\n WINDOW.removeEventListener('focus', this._handleWindowFocus);\n WINDOW.removeEventListener('keydown', this._handleKeyboardEvent);\n\n if (this.clickDetector) {\n this.clickDetector.removeListeners();\n }\n\n if (this._performanceCleanupCallback) {\n this._performanceCleanupCallback();\n }\n } catch (err) {\n this._handleException(err);\n }\n }\n\n /**\n * Handle when visibility of the page content changes. Opening a new tab will\n * cause the state to change to hidden because of content of current page will\n * be hidden. Likewise, moving a different window to cover the contents of the\n * page will also trigger a change to a hidden state.\n */\n private _handleVisibilityChange: () => void = () => {\n if (WINDOW.document.visibilityState === 'visible') {\n this._doChangeToForegroundTasks();\n } else {\n this._doChangeToBackgroundTasks();\n }\n };\n\n /**\n * Handle when page is blurred\n */\n private _handleWindowBlur: () => void = () => {\n const breadcrumb = createBreadcrumb({\n category: 'ui.blur',\n });\n\n // Do not count blur as a user action -- it's part of the process of them\n // leaving the page\n this._doChangeToBackgroundTasks(breadcrumb);\n };\n\n /**\n * Handle when page is focused\n */\n private _handleWindowFocus: () => void = () => {\n const breadcrumb = createBreadcrumb({\n category: 'ui.focus',\n });\n\n // Do not count focus as a user action -- instead wait until they focus and\n // interactive with page\n this._doChangeToForegroundTasks(breadcrumb);\n };\n\n /** Ensure page remains active when a key is pressed. */\n private _handleKeyboardEvent: (event: KeyboardEvent) => void = (event: KeyboardEvent) => {\n handleKeyboardEvent(this, event);\n };\n\n /**\n * Tasks to run when we consider a page to be hidden (via blurring and/or visibility)\n */\n private _doChangeToBackgroundTasks(breadcrumb?: ReplayBreadcrumbFrame): void {\n if (!this.session) {\n return;\n }\n\n const expired = isSessionExpired(this.session, {\n maxReplayDuration: this._options.maxReplayDuration,\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n });\n\n if (expired) {\n return;\n }\n\n if (breadcrumb) {\n this._createCustomBreadcrumb(breadcrumb);\n }\n\n // Send replay when the page/tab becomes hidden. There is no reason to send\n // replay if it becomes visible, since no actions we care about were done\n // while it was hidden\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n void this.conditionalFlush();\n }\n\n /**\n * Tasks to run when we consider a page to be visible (via focus and/or visibility)\n */\n private _doChangeToForegroundTasks(breadcrumb?: ReplayBreadcrumbFrame): void {\n if (!this.session) {\n return;\n }\n\n const isSessionActive = this.checkAndHandleExpiredSession();\n\n if (!isSessionActive) {\n // If the user has come back to the page within SESSION_IDLE_PAUSE_DURATION\n // ms, we will re-use the existing session, otherwise create a new\n // session\n logInfo('[Replay] Document has become active, but session has expired');\n return;\n }\n\n if (breadcrumb) {\n this._createCustomBreadcrumb(breadcrumb);\n }\n }\n\n /**\n * Update user activity (across session lifespans)\n */\n private _updateUserActivity(_lastActivity: number = Date.now()): void {\n this._lastActivity = _lastActivity;\n }\n\n /**\n * Updates the session's last activity timestamp\n */\n private _updateSessionActivity(_lastActivity: number = Date.now()): void {\n if (this.session) {\n this.session.lastActivity = _lastActivity;\n this._maybeSaveSession();\n }\n }\n\n /**\n * Helper to create (and buffer) a replay breadcrumb from a core SDK breadcrumb\n */\n private _createCustomBreadcrumb(breadcrumb: ReplayBreadcrumbFrame): void {\n this.addUpdate(() => {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.throttledAddEvent({\n type: EventType.Custom,\n timestamp: breadcrumb.timestamp || 0,\n data: {\n tag: 'breadcrumb',\n payload: breadcrumb,\n },\n });\n });\n }\n\n /**\n * Observed performance events are added to `this.performanceEntries`. These\n * are included in the replay event before it is finished and sent to Sentry.\n */\n private _addPerformanceEntries(): Promise<Array<AddEventResult | null>> {\n const performanceEntries = createPerformanceEntries(this.performanceEntries).concat(this.replayPerformanceEntries);\n\n this.performanceEntries = [];\n this.replayPerformanceEntries = [];\n\n return Promise.all(createPerformanceSpans(this, performanceEntries));\n }\n\n /**\n * Clear _context\n */\n private _clearContext(): void {\n // XXX: `initialTimestamp` and `initialUrl` do not get cleared\n this._context.errorIds.clear();\n this._context.traceIds.clear();\n this._context.urls = [];\n }\n\n /** Update the initial timestamp based on the buffer content. */\n private _updateInitialTimestampFromEventBuffer(): void {\n const { session, eventBuffer } = this;\n if (!session || !eventBuffer) {\n return;\n }\n\n // we only ever update this on the initial segment\n if (session.segmentId) {\n return;\n }\n\n const earliestEvent = eventBuffer.getEarliestTimestamp();\n if (earliestEvent && earliestEvent < this._context.initialTimestamp) {\n this._context.initialTimestamp = earliestEvent;\n }\n }\n\n /**\n * Return and clear _context\n */\n private _popEventContext(): PopEventContext {\n const _context = {\n initialTimestamp: this._context.initialTimestamp,\n initialUrl: this._context.initialUrl,\n errorIds: Array.from(this._context.errorIds),\n traceIds: Array.from(this._context.traceIds),\n urls: this._context.urls,\n };\n\n this._clearContext();\n\n return _context;\n }\n\n /**\n * Flushes replay event buffer to Sentry.\n *\n * Performance events are only added right before flushing - this is\n * due to the buffered performance observer events.\n *\n * Should never be called directly, only by `flush`\n */\n private async _runFlush(): Promise<void> {\n const replayId = this.getSessionId();\n\n if (!this.session || !this.eventBuffer || !replayId) {\n DEBUG_BUILD && logger.error('[Replay] No session or eventBuffer found to flush.');\n return;\n }\n\n await this._addPerformanceEntries();\n\n // Check eventBuffer again, as it could have been stopped in the meanwhile\n if (!this.eventBuffer || !this.eventBuffer.hasEvents) {\n return;\n }\n\n // Only attach memory event if eventBuffer is not empty\n await addMemoryEntry(this);\n\n // Check eventBuffer again, as it could have been stopped in the meanwhile\n if (!this.eventBuffer) {\n return;\n }\n\n // if this changed in the meanwhile, e.g. because the session was refreshed or similar, we abort here\n if (replayId !== this.getSessionId()) {\n return;\n }\n\n try {\n // This uses the data from the eventBuffer, so we need to call this before `finish()\n this._updateInitialTimestampFromEventBuffer();\n\n const timestamp = Date.now();\n\n // Check total duration again, to avoid sending outdated stuff\n // We leave 30s wiggle room to accomodate late flushing etc.\n // This _could_ happen when the browser is suspended during flushing, in which case we just want to stop\n if (timestamp - this._context.initialTimestamp > this._options.maxReplayDuration + 30_000) {\n throw new Error('Session is too long, not sending replay');\n }\n\n const eventContext = this._popEventContext();\n // Always increment segmentId regardless of outcome of sending replay\n const segmentId = this.session.segmentId++;\n this._maybeSaveSession();\n\n // Note this empties the event buffer regardless of outcome of sending replay\n const recordingData = await this.eventBuffer.finish();\n\n await sendReplay({\n replayId,\n recordingData,\n segmentId,\n eventContext,\n session: this.session,\n options: this.getOptions(),\n timestamp,\n });\n } catch (err) {\n this._handleException(err);\n\n // This means we retried 3 times and all of them failed,\n // or we ran into a problem we don't want to retry, like rate limiting.\n // In this case, we want to completely stop the replay - otherwise, we may get inconsistent segments\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.stop({ reason: 'sendReplay' });\n\n const client = getClient();\n\n if (client) {\n client.recordDroppedEvent('send_error', 'replay');\n }\n }\n }\n\n /**\n * Flush recording data to Sentry. Creates a lock so that only a single flush\n * can be active at a time. Do not call this directly.\n */\n private _flush = async ({\n force = false,\n }: {\n /**\n * If true, flush while ignoring the `_isEnabled` state of\n * Replay integration. (By default, flush is noop if integration\n * is stopped).\n */\n force?: boolean;\n } = {}): Promise<void> => {\n if (!this._isEnabled && !force) {\n // This can happen if e.g. the replay was stopped because of exceeding the retry limit\n return;\n }\n\n if (!this.checkAndHandleExpiredSession()) {\n DEBUG_BUILD && logger.error('[Replay] Attempting to finish replay event after session expired.');\n return;\n }\n\n if (!this.session) {\n // should never happen, as we would have bailed out before\n return;\n }\n\n const start = this.session.started;\n const now = Date.now();\n const duration = now - start;\n\n // A flush is about to happen, cancel any queued flushes\n this._debouncedFlush.cancel();\n\n // If session is too short, or too long (allow some wiggle room over maxReplayDuration), do not send it\n // This _should_ not happen, but it may happen if flush is triggered due to a page activity change or similar\n const tooShort = duration < this._options.minReplayDuration;\n const tooLong = duration > this._options.maxReplayDuration + 5_000;\n if (tooShort || tooLong) {\n logInfo(\n `[Replay] Session duration (${Math.floor(duration / 1000)}s) is too ${\n tooShort ? 'short' : 'long'\n }, not sending replay.`,\n this._options._experiments.traceInternals,\n );\n\n if (tooShort) {\n this._debouncedFlush();\n }\n return;\n }\n\n const eventBuffer = this.eventBuffer;\n if (eventBuffer && this.session.segmentId === 0 && !eventBuffer.hasCheckout) {\n logInfo('[Replay] Flushing initial segment without checkout.', this._options._experiments.traceInternals);\n // TODO FN: Evaluate if we want to stop here, or remove this again?\n }\n\n // this._flushLock acts as a lock so that future calls to `_flush()`\n // will be blocked until this promise resolves\n if (!this._flushLock) {\n this._flushLock = this._runFlush();\n await this._flushLock;\n this._flushLock = undefined;\n return;\n }\n\n // Wait for previous flush to finish, then call the debounced `_flush()`.\n // It's possible there are other flush requests queued and waiting for it\n // to resolve. We want to reduce all outstanding requests (as well as any\n // new flush requests that occur within a second of the locked flush\n // completing) into a single flush.\n\n try {\n await this._flushLock;\n } catch (err) {\n DEBUG_BUILD && logger.error(err);\n } finally {\n this._debouncedFlush();\n }\n };\n\n /** Save the session, if it is sticky */\n private _maybeSaveSession(): void {\n if (this.session && this._options.stickySession) {\n saveSession(this.session);\n }\n }\n\n /** Handler for rrweb.record.onMutation */\n private _onMutationHandler = (mutations: unknown[]): boolean => {\n const count = mutations.length;\n\n const mutationLimit = this._options.mutationLimit;\n const mutationBreadcrumbLimit = this._options.mutationBreadcrumbLimit;\n const overMutationLimit = mutationLimit && count > mutationLimit;\n\n // Create a breadcrumb if a lot of mutations happen at the same time\n // We can show this in the UI as an information with potential performance improvements\n if (count > mutationBreadcrumbLimit || overMutationLimit) {\n const breadcrumb = createBreadcrumb({\n category: 'replay.mutations',\n data: {\n count,\n limit: overMutationLimit,\n },\n });\n this._createCustomBreadcrumb(breadcrumb);\n }\n\n // Stop replay if over the mutation limit\n if (overMutationLimit) {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.stop({ reason: 'mutationLimit', forceFlush: this.recordingMode === 'session' });\n return false;\n }\n\n // `true` means we use the regular mutation handling by rrweb\n return true;\n };\n}\n","type DebouncedCallback = {\n (): void | unknown;\n flush: () => void | unknown;\n cancel: () => void;\n};\ntype CallbackFunction = () => unknown;\ntype DebounceOptions = { maxWait?: number };\n\n/**\n * Heavily simplified debounce function based on lodash.debounce.\n *\n * This function takes a callback function (@param fun) and delays its invocation\n * by @param wait milliseconds. Optionally, a maxWait can be specified in @param options,\n * which ensures that the callback is invoked at least once after the specified max. wait time.\n *\n * @param func the function whose invocation is to be debounced\n * @param wait the minimum time until the function is invoked after it was called once\n * @param options the options object, which can contain the `maxWait` property\n *\n * @returns the debounced version of the function, which needs to be called at least once to start the\n * debouncing process. Subsequent calls will reset the debouncing timer and, in case @paramfunc\n * was already invoked in the meantime, return @param func's return value.\n * The debounced function has two additional properties:\n * - `flush`: Invokes the debounced function immediately and returns its return value\n * - `cancel`: Cancels the debouncing process and resets the debouncing timer\n */\nexport function debounce(func: CallbackFunction, wait: number, options?: DebounceOptions): DebouncedCallback {\n let callbackReturnValue: unknown;\n\n let timerId: ReturnType<typeof setTimeout> | undefined;\n let maxTimerId: ReturnType<typeof setTimeout> | undefined;\n\n const maxWait = options && options.maxWait ? Math.max(options.maxWait, wait) : 0;\n\n function invokeFunc(): unknown {\n cancelTimers();\n callbackReturnValue = func();\n return callbackReturnValue;\n }\n\n function cancelTimers(): void {\n timerId !== undefined && clearTimeout(timerId);\n maxTimerId !== undefined && clearTimeout(maxTimerId);\n timerId = maxTimerId = undefined;\n }\n\n function flush(): unknown {\n if (timerId !== undefined || maxTimerId !== undefined) {\n return invokeFunc();\n }\n return callbackReturnValue;\n }\n\n function debounced(): unknown {\n if (timerId) {\n clearTimeout(timerId);\n }\n timerId = setTimeout(invokeFunc, wait);\n\n if (maxWait && maxTimerId === undefined) {\n maxTimerId = setTimeout(invokeFunc, maxWait);\n }\n\n return callbackReturnValue;\n }\n\n debounced.cancel = cancelTimers;\n debounced.flush = flush;\n return debounced;\n}\n","/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Use this attribute to represent the sample rate used for a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/**\n * The id of the profile that this span occured in.\n */\nexport const SEMANTIC_ATTRIBUTE_PROFILE_ID = 'profile_id';\n","import { consoleSandbox } from '@sentry/utils';\n\nimport type { DeprecatedPrivacyOptions, ReplayIntegrationPrivacyOptions } from '../types';\n\ntype GetPrivacyOptions = Required<Omit<ReplayIntegrationPrivacyOptions, 'maskFn'>> &\n Omit<DeprecatedPrivacyOptions, 'maskInputOptions'>;\ninterface GetPrivacyReturn {\n maskTextSelector: string;\n unmaskTextSelector: string;\n blockSelector: string;\n unblockSelector: string;\n ignoreSelector: string;\n\n blockClass?: RegExp;\n maskTextClass?: RegExp;\n}\n\nfunction getOption(\n selectors: string[],\n defaultSelectors: string[],\n deprecatedClassOption?: string | RegExp,\n deprecatedSelectorOption?: string,\n): string {\n const deprecatedSelectors = typeof deprecatedSelectorOption === 'string' ? deprecatedSelectorOption.split(',') : [];\n\n const allSelectors = [\n ...selectors,\n // @deprecated\n ...deprecatedSelectors,\n\n // sentry defaults\n ...defaultSelectors,\n ];\n\n // @deprecated\n if (typeof deprecatedClassOption !== 'undefined') {\n // NOTE: No support for RegExp\n if (typeof deprecatedClassOption === 'string') {\n allSelectors.push(`.${deprecatedClassOption}`);\n }\n\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[Replay] You are using a deprecated configuration item for privacy. Read the documentation on how to use the new privacy configuration.',\n );\n });\n }\n\n return allSelectors.join(',');\n}\n\n/**\n * Returns privacy related configuration for use in rrweb\n */\nexport function getPrivacyOptions({\n mask,\n unmask,\n block,\n unblock,\n ignore,\n\n // eslint-disable-next-line deprecation/deprecation\n blockClass,\n // eslint-disable-next-line deprecation/deprecation\n blockSelector,\n // eslint-disable-next-line deprecation/deprecation\n maskTextClass,\n // eslint-disable-next-line deprecation/deprecation\n maskTextSelector,\n // eslint-disable-next-line deprecation/deprecation\n ignoreClass,\n}: GetPrivacyOptions): GetPrivacyReturn {\n const defaultBlockedElements = ['base[href=\"/\"]'];\n\n const maskSelector = getOption(mask, ['.sentry-mask', '[data-sentry-mask]'], maskTextClass, maskTextSelector);\n const unmaskSelector = getOption(unmask, ['.sentry-unmask', '[data-sentry-unmask]']);\n\n const options: GetPrivacyReturn = {\n // We are making the decision to make text and input selectors the same\n maskTextSelector: maskSelector,\n unmaskTextSelector: unmaskSelector,\n\n blockSelector: getOption(\n block,\n ['.sentry-block', '[data-sentry-block]', ...defaultBlockedElements],\n blockClass,\n blockSelector,\n ),\n unblockSelector: getOption(unblock, ['.sentry-unblock', '[data-sentry-unblock]']),\n ignoreSelector: getOption(ignore, ['.sentry-ignore', '[data-sentry-ignore]', 'input[type=\"file\"]'], ignoreClass),\n };\n\n if (blockClass instanceof RegExp) {\n options.blockClass = blockClass;\n }\n\n if (maskTextClass instanceof RegExp) {\n options.maskTextClass = maskTextClass;\n }\n\n return options;\n}\n","import { getClient } from '@sentry/core';\nimport type { BrowserClientReplayOptions, Integration, IntegrationFn } from '@sentry/types';\nimport { consoleSandbox, dropUndefinedKeys, isBrowser } from '@sentry/utils';\n\nimport {\n DEFAULT_FLUSH_MAX_DELAY,\n DEFAULT_FLUSH_MIN_DELAY,\n MAX_REPLAY_DURATION,\n MIN_REPLAY_DURATION,\n MIN_REPLAY_DURATION_LIMIT,\n} from './constants';\nimport { ReplayContainer } from './replay';\nimport type {\n RecordingOptions,\n ReplayCanvasIntegrationOptions,\n ReplayConfiguration,\n ReplayPluginOptions,\n SendBufferedReplayOptions,\n} from './types';\nimport { getPrivacyOptions } from './util/getPrivacyOptions';\nimport { maskAttribute } from './util/maskAttribute';\n\nconst MEDIA_SELECTORS =\n 'img,image,svg,video,object,picture,embed,map,audio,link[rel=\"icon\"],link[rel=\"apple-touch-icon\"]';\n\nconst DEFAULT_NETWORK_HEADERS = ['content-length', 'content-type', 'accept'];\n\nlet _initialized = false;\n\ntype InitialReplayPluginOptions = Omit<ReplayPluginOptions, 'sessionSampleRate' | 'errorSampleRate'> &\n Partial<Pick<ReplayPluginOptions, 'sessionSampleRate' | 'errorSampleRate'>>;\n\nexport const replayIntegration = ((options?: ReplayConfiguration) => {\n // eslint-disable-next-line deprecation/deprecation\n return new Replay(options);\n}) satisfies IntegrationFn;\n\n/**\n * The main replay integration class, to be passed to `init({ integrations: [] })`.\n * @deprecated Use `replayIntegration()` instead.\n */\nexport class Replay implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Replay';\n\n /**\n * @inheritDoc\n */\n public name: string;\n\n /**\n * Options to pass to `rrweb.record()`\n */\n private readonly _recordingOptions: RecordingOptions;\n\n /**\n * Initial options passed to the replay integration, merged with default values.\n * Note: `sessionSampleRate` and `errorSampleRate` are not required here, as they\n * can only be finally set when setupOnce() is called.\n *\n * @private\n */\n private readonly _initialOptions: InitialReplayPluginOptions;\n\n private _replay?: ReplayContainer;\n\n public constructor({\n flushMinDelay = DEFAULT_FLUSH_MIN_DELAY,\n flushMaxDelay = DEFAULT_FLUSH_MAX_DELAY,\n minReplayDuration = MIN_REPLAY_DURATION,\n maxReplayDuration = MAX_REPLAY_DURATION,\n stickySession = true,\n useCompression = true,\n workerUrl,\n _experiments = {},\n sessionSampleRate,\n errorSampleRate,\n maskAllText = true,\n maskAllInputs = true,\n blockAllMedia = true,\n\n mutationBreadcrumbLimit = 750,\n mutationLimit = 10_000,\n\n slowClickTimeout = 7_000,\n slowClickIgnoreSelectors = [],\n\n networkDetailAllowUrls = [],\n networkDetailDenyUrls = [],\n networkCaptureBodies = true,\n networkRequestHeaders = [],\n networkResponseHeaders = [],\n\n mask = [],\n maskAttributes = ['title', 'placeholder'],\n unmask = [],\n block = [],\n unblock = [],\n ignore = [],\n maskFn,\n\n beforeAddRecordingEvent,\n beforeErrorSampling,\n\n // eslint-disable-next-line deprecation/deprecation\n blockClass,\n // eslint-disable-next-line deprecation/deprecation\n blockSelector,\n // eslint-disable-next-line deprecation/deprecation\n maskInputOptions,\n // eslint-disable-next-line deprecation/deprecation\n maskTextClass,\n // eslint-disable-next-line deprecation/deprecation\n maskTextSelector,\n // eslint-disable-next-line deprecation/deprecation\n ignoreClass,\n }: ReplayConfiguration = {}) {\n // eslint-disable-next-line deprecation/deprecation\n this.name = Replay.id;\n\n const privacyOptions = getPrivacyOptions({\n mask,\n unmask,\n block,\n unblock,\n ignore,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n ignoreClass,\n });\n\n this._recordingOptions = {\n maskAllInputs,\n maskAllText,\n maskInputOptions: { ...(maskInputOptions || {}), password: true },\n maskTextFn: maskFn,\n maskInputFn: maskFn,\n maskAttributeFn: (key: string, value: string, el: HTMLElement): string =>\n maskAttribute({\n maskAttributes,\n maskAllText,\n privacyOptions,\n key,\n value,\n el,\n }),\n\n ...privacyOptions,\n\n // Our defaults\n slimDOMOptions: 'all',\n inlineStylesheet: true,\n // Disable inline images as it will increase segment/replay size\n inlineImages: false,\n // collect fonts, but be aware that `sentry.io` needs to be an allowed\n // origin for playback\n collectFonts: true,\n errorHandler: (err: Error & { __rrweb__?: boolean }) => {\n try {\n err.__rrweb__ = true;\n } catch (error) {\n // ignore errors here\n // this can happen if the error is frozen or does not allow mutation for other reasons\n }\n },\n };\n\n this._initialOptions = {\n flushMinDelay,\n flushMaxDelay,\n minReplayDuration: Math.min(minReplayDuration, MIN_REPLAY_DURATION_LIMIT),\n maxReplayDuration: Math.min(maxReplayDuration, MAX_REPLAY_DURATION),\n stickySession,\n sessionSampleRate,\n errorSampleRate,\n useCompression,\n workerUrl,\n blockAllMedia,\n maskAllInputs,\n maskAllText,\n mutationBreadcrumbLimit,\n mutationLimit,\n slowClickTimeout,\n slowClickIgnoreSelectors,\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders: _getMergedNetworkHeaders(networkRequestHeaders),\n networkResponseHeaders: _getMergedNetworkHeaders(networkResponseHeaders),\n beforeAddRecordingEvent,\n beforeErrorSampling,\n\n _experiments,\n };\n\n if (typeof sessionSampleRate === 'number') {\n // eslint-disable-next-line\n console.warn(\n `[Replay] You are passing \\`sessionSampleRate\\` to the Replay integration.\nThis option is deprecated and will be removed soon.\nInstead, configure \\`replaysSessionSampleRate\\` directly in the SDK init options, e.g.:\nSentry.init({ replaysSessionSampleRate: ${sessionSampleRate} })`,\n );\n\n this._initialOptions.sessionSampleRate = sessionSampleRate;\n }\n\n if (typeof errorSampleRate === 'number') {\n // eslint-disable-next-line\n console.warn(\n `[Replay] You are passing \\`errorSampleRate\\` to the Replay integration.\nThis option is deprecated and will be removed soon.\nInstead, configure \\`replaysOnErrorSampleRate\\` directly in the SDK init options, e.g.:\nSentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,\n );\n\n this._initialOptions.errorSampleRate = errorSampleRate;\n }\n\n if (this._initialOptions.blockAllMedia) {\n // `blockAllMedia` is a more user friendly option to configure blocking\n // embedded media elements\n this._recordingOptions.blockSelector = !this._recordingOptions.blockSelector\n ? MEDIA_SELECTORS\n : `${this._recordingOptions.blockSelector},${MEDIA_SELECTORS}`;\n }\n\n if (this._isInitialized && isBrowser()) {\n throw new Error('Multiple Sentry Session Replay instances are not supported');\n }\n\n this._isInitialized = true;\n }\n\n /** If replay has already been initialized */\n protected get _isInitialized(): boolean {\n return _initialized;\n }\n\n /** Update _isInitialized */\n protected set _isInitialized(value: boolean) {\n _initialized = value;\n }\n\n /**\n * Setup and initialize replay container\n */\n public setupOnce(): void {\n if (!isBrowser()) {\n return;\n }\n\n this._setup();\n\n // Once upon a time, we tried to create a transaction in `setupOnce` and it would\n // potentially create a transaction before some native SDK integrations have run\n // and applied their own global event processor. An example is:\n // https://github.com/getsentry/sentry-javascript/blob/b47ceafbdac7f8b99093ce6023726ad4687edc48/packages/browser/src/integrations/useragent.ts\n //\n // So we call `this._initialize()` in next event loop as a workaround to wait for other\n // global event processors to finish. This is no longer needed, but keeping it\n // here to avoid any future issues.\n setTimeout(() => this._initialize());\n }\n\n /**\n * Start a replay regardless of sampling rate. Calling this will always\n * create a new session. Will throw an error if replay is already in progress.\n *\n * Creates or loads a session, attaches listeners to varying events (DOM,\n * PerformanceObserver, Recording, Sentry SDK, etc)\n */\n public start(): void {\n if (!this._replay) {\n return;\n }\n\n this._replay.start();\n }\n\n /**\n * Start replay buffering. Buffers until `flush()` is called or, if\n * `replaysOnErrorSampleRate` > 0, until an error occurs.\n */\n public startBuffering(): void {\n if (!this._replay) {\n return;\n }\n\n this._replay.startBuffering();\n }\n\n /**\n * Currently, this needs to be manually called (e.g. for tests). Sentry SDK\n * does not support a teardown\n */\n public stop(): Promise<void> {\n if (!this._replay) {\n return Promise.resolve();\n }\n\n return this._replay.stop({ forceFlush: this._replay.recordingMode === 'session' });\n }\n\n /**\n * If not in \"session\" recording mode, flush event buffer which will create a new replay.\n * Unless `continueRecording` is false, the replay will continue to record and\n * behave as a \"session\"-based replay.\n *\n * Otherwise, queue up a flush.\n */\n public flush(options?: SendBufferedReplayOptions): Promise<void> {\n if (!this._replay || !this._replay.isEnabled()) {\n return Promise.resolve();\n }\n\n return this._replay.sendBufferedReplayOrFlush(options);\n }\n\n /**\n * Get the current session ID.\n */\n public getReplayId(): string | undefined {\n if (!this._replay || !this._replay.isEnabled()) {\n return;\n }\n\n return this._replay.getSessionId();\n }\n\n /**\n * Initializes replay.\n */\n protected _initialize(): void {\n if (!this._replay) {\n return;\n }\n\n // We have to run this in _initialize, because this runs in setTimeout\n // So when this runs all integrations have been added\n // Before this, we cannot access integrations on the client,\n // so we need to mutate the options here\n this._maybeLoadFromReplayCanvasIntegration();\n\n this._replay.initializeSampling();\n }\n\n /** Setup the integration. */\n private _setup(): void {\n // Client is not available in constructor, so we need to wait until setupOnce\n const finalOptions = loadReplayOptionsFromClient(this._initialOptions);\n\n this._replay = new ReplayContainer({\n options: finalOptions,\n recordingOptions: this._recordingOptions,\n });\n }\n\n /** Get canvas options from ReplayCanvas integration, if it is also added. */\n private _maybeLoadFromReplayCanvasIntegration(): void {\n // To save bundle size, we skip checking for stuff here\n // and instead just try-catch everything - as generally this should all be defined\n /* eslint-disable @typescript-eslint/no-non-null-assertion */\n try {\n const client = getClient()!;\n const canvasIntegration = client.getIntegrationByName!('ReplayCanvas') as Integration & {\n getOptions(): ReplayCanvasIntegrationOptions;\n };\n if (!canvasIntegration) {\n return;\n }\n\n this._replay!['_canvas'] = canvasIntegration.getOptions();\n } catch {\n // ignore errors here\n }\n /* eslint-enable @typescript-eslint/no-non-null-assertion */\n }\n}\n\n/** Parse Replay-related options from SDK options */\nfunction loadReplayOptionsFromClient(initialOptions: InitialReplayPluginOptions): ReplayPluginOptions {\n const client = getClient();\n const opt = client && (client.getOptions() as BrowserClientReplayOptions);\n\n const finalOptions = { sessionSampleRate: 0, errorSampleRate: 0, ...dropUndefinedKeys(initialOptions) };\n\n if (!opt) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn('SDK client is not available.');\n });\n return finalOptions;\n }\n\n if (\n initialOptions.sessionSampleRate == null && // TODO remove once deprecated rates are removed\n initialOptions.errorSampleRate == null && // TODO remove once deprecated rates are removed\n opt.replaysSessionSampleRate == null &&\n opt.replaysOnErrorSampleRate == null\n ) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n 'Replay is disabled because neither `replaysSessionSampleRate` nor `replaysOnErrorSampleRate` are set.',\n );\n });\n }\n\n if (typeof opt.replaysSessionSampleRate === 'number') {\n finalOptions.sessionSampleRate = opt.replaysSessionSampleRate;\n }\n\n if (typeof opt.replaysOnErrorSampleRate === 'number') {\n finalOptions.errorSampleRate = opt.replaysOnErrorSampleRate;\n }\n\n return finalOptions;\n}\n\nfunction _getMergedNetworkHeaders(headers: string[]): string[] {\n return [...DEFAULT_NETWORK_HEADERS, ...headers.map(header => header.toLowerCase())];\n}\n","import type { getPrivacyOptions } from './getPrivacyOptions';\n\ninterface MaskAttributeParams {\n maskAttributes: string[];\n maskAllText: boolean;\n privacyOptions: ReturnType<typeof getPrivacyOptions>;\n key: string;\n value: string;\n el: HTMLElement;\n}\n\n/**\n * Masks an attribute if necessary, otherwise return attribute value as-is.\n */\nexport function maskAttribute({\n el,\n key,\n maskAttributes,\n maskAllText,\n privacyOptions,\n value,\n}: MaskAttributeParams): string {\n // We only mask attributes if `maskAllText` is true\n if (!maskAllText) {\n return value;\n }\n\n // unmaskTextSelector takes precendence\n if (privacyOptions.unmaskTextSelector && el.matches(privacyOptions.unmaskTextSelector)) {\n return value;\n }\n\n if (\n maskAttributes.includes(key) ||\n // Need to mask `value` attribute for `<input>` if it's a button-like\n // type\n (key === 'value' && el.tagName === 'INPUT' && ['submit', 'button'].includes(el.getAttribute('type') || ''))\n ) {\n return value.replace(/[\\S]/g, '*');\n }\n\n return value;\n}\n","import type { Client, Event, EventHint, Integration, IntegrationClass, IntegrationFn, StackFrame } from '@sentry/types';\nimport { getEventDescription, logger, stringMatchesSomePattern } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [\n /^Script error\\.?$/,\n /^Javascript error: Script error\\.? on line 0$/,\n /^ResizeObserver loop completed with undelivered notifications.$/,\n /^Cannot redefine property: googletag$/,\n];\n\nconst DEFAULT_IGNORE_TRANSACTIONS = [\n /^.*\\/healthcheck$/,\n /^.*\\/healthy$/,\n /^.*\\/live$/,\n /^.*\\/ready$/,\n /^.*\\/heartbeat$/,\n /^.*\\/health$/,\n /^.*\\/healthz$/,\n];\n\n/** Options for the InboundFilters integration */\nexport interface InboundFiltersOptions {\n allowUrls: Array<string | RegExp>;\n denyUrls: Array<string | RegExp>;\n ignoreErrors: Array<string | RegExp>;\n ignoreTransactions: Array<string | RegExp>;\n ignoreInternal: boolean;\n disableErrorDefaults: boolean;\n disableTransactionDefaults: boolean;\n}\n\nconst INTEGRATION_NAME = 'InboundFilters';\nconst _inboundFiltersIntegration = ((options: Partial<InboundFiltersOptions> = {}) => {\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n processEvent(event, _hint, client) {\n const clientOptions = client.getOptions();\n const mergedOptions = _mergeOptions(options, clientOptions);\n return _shouldDropEvent(event, mergedOptions) ? null : event;\n },\n };\n}) satisfies IntegrationFn;\n\nexport const inboundFiltersIntegration = defineIntegration(_inboundFiltersIntegration);\n\n/**\n * Inbound filters configurable by the user.\n * @deprecated Use `inboundFiltersIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const InboundFilters = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n inboundFiltersIntegration,\n) as IntegrationClass<Integration & { preprocessEvent: (event: Event, hint: EventHint, client: Client) => void }> & {\n new (\n options?: Partial<{\n allowUrls: Array<string | RegExp>;\n denyUrls: Array<string | RegExp>;\n ignoreErrors: Array<string | RegExp>;\n ignoreTransactions: Array<string | RegExp>;\n ignoreInternal: boolean;\n disableErrorDefaults: boolean;\n disableTransactionDefaults: boolean;\n }>,\n ): Integration;\n};\n\nfunction _mergeOptions(\n internalOptions: Partial<InboundFiltersOptions> = {},\n clientOptions: Partial<InboundFiltersOptions> = {},\n): Partial<InboundFiltersOptions> {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n ],\n ignoreTransactions: [\n ...(internalOptions.ignoreTransactions || []),\n ...(clientOptions.ignoreTransactions || []),\n ...(internalOptions.disableTransactionDefaults ? [] : DEFAULT_IGNORE_TRANSACTIONS),\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\nfunction _shouldDropEvent(event: Event, options: Partial<InboundFiltersOptions>): boolean {\n if (options.ignoreInternal && _isSentryError(event)) {\n DEBUG_BUILD &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array<string | RegExp>): boolean {\n // If event.type, this is not an error\n if (event.type || !ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event: Event, ignoreTransactions?: Array<string | RegExp>): boolean {\n if (event.type !== 'transaction' || !ignoreTransactions || !ignoreTransactions.length) {\n return false;\n }\n\n const name = event.transaction;\n return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array<string | RegExp>): boolean {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array<string | RegExp>): boolean {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getPossibleEventMessages(event: Event): string[] {\n const possibleMessages: string[] = [];\n\n if (event.message) {\n possibleMessages.push(event.message);\n }\n\n let lastException;\n try {\n // @ts-expect-error Try catching to save bundle size\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n lastException = event.exception.values[event.exception.values.length - 1];\n } catch (e) {\n // try catching to save bundle size checking existence of variables\n }\n\n if (lastException) {\n if (lastException.value) {\n possibleMessages.push(lastException.value);\n if (lastException.type) {\n possibleMessages.push(`${lastException.type}: ${lastException.value}`);\n }\n }\n }\n\n if (DEBUG_BUILD && possibleMessages.length === 0) {\n logger.error(`Could not extract message for event ${getEventDescription(event)}`);\n }\n\n return possibleMessages;\n}\n\nfunction _isSentryError(event: Event): boolean {\n try {\n // @ts-expect-error can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '<anonymous>' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event: Event): string | null {\n try {\n let frames;\n try {\n // @ts-expect-error we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n DEBUG_BUILD && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n","import type { Client, Integration, IntegrationClass, IntegrationFn, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\nimport { getClient } from '../exports';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\n\nlet originalFunctionToString: () => void;\n\nconst INTEGRATION_NAME = 'FunctionToString';\n\nconst SETUP_CLIENTS = new WeakMap<Client, boolean>();\n\nconst _functionToStringIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // intrinsics (like Function.prototype) might be immutable in some environments\n // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n const originalFunction = getOriginalFunction(this);\n const context =\n SETUP_CLIENTS.has(getClient() as Client) && originalFunction !== undefined ? originalFunction : this;\n return originalFunctionToString.apply(context, args);\n };\n } catch {\n // ignore errors here, just don't patch this\n }\n },\n setup(client) {\n SETUP_CLIENTS.set(client, true);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * ```js\n * Sentry.init({\n * integrations: [\n * functionToStringIntegration(),\n * ],\n * });\n * ```\n */\nexport const functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * @deprecated Use `functionToStringIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const FunctionToString = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n functionToStringIntegration,\n) as IntegrationClass<Integration & { setupOnce: () => void }>;\n\n// eslint-disable-next-line deprecation/deprecation\nexport type FunctionToString = typeof FunctionToString;\n","import type { Client, ClientOptions } from '@sentry/types';\nimport { consoleSandbox, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { getCurrentScope } from './exports';\nimport { getCurrentHub } from './hub';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass<F extends Client, O extends ClientOptions> = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind<F extends Client, O extends ClientOptions>(\n clientClass: ClientClass<F, O>,\n options: O,\n): void {\n if (options.debug === true) {\n if (DEBUG_BUILD) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n });\n }\n }\n const scope = getCurrentScope();\n scope.update(options.initialScope);\n\n const client = new clientClass(options);\n setCurrentClient(client);\n initializeClient(client);\n}\n\n/**\n * Make the given client the current client.\n */\nexport function setCurrentClient(client: Client): void {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const top = hub.getStackTop();\n top.client = client;\n top.scope.setClient(client);\n}\n\n/**\n * Initialize the client for the current scope.\n * Make sure to call this after `setCurrentClient()`.\n */\nfunction initializeClient(client: Client): void {\n if (client.init) {\n client.init();\n // TODO v8: Remove this fallback\n // eslint-disable-next-line deprecation/deprecation\n } else if (client.setupIntegrations) {\n // eslint-disable-next-line deprecation/deprecation\n client.setupIntegrations();\n }\n}\n","import type { Options } from '@sentry/types';\nimport { SDK_VERSION } from '../version';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n *\n * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit.\n * We don't extract it for bundle size reasons.\n * @see https://github.com/getsentry/sentry-javascript/pull/7404\n * @see https://github.com/getsentry/sentry-javascript/pull/4196\n *\n * If you make changes to this function consider updating the others as well.\n *\n * @param options SDK options object that gets mutated\n * @param names list of package names\n */\nexport function applySdkMetadata(options: Options, name: string, names = [name], source = 'npm'): void {\n const metadata = options._metadata || {};\n\n if (!metadata.sdk) {\n metadata.sdk = {\n name: `sentry.javascript.${name}`,\n packages: names.map(name => ({\n name: `${source}:@sentry/${name}`,\n version: SDK_VERSION,\n })),\n version: SDK_VERSION,\n };\n }\n\n options._metadata = metadata;\n}\n","import { getClient } from '@sentry/core';\nimport type {\n Event,\n EventHint,\n Exception,\n ParameterizedString,\n Severity,\n SeverityLevel,\n StackFrame,\n StackParser,\n} from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n extractExceptionKeysForMessage,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isParameterizedString,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception: Exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(\n stackParser: StackParser,\n exception: Record<string, unknown>,\n syntheticException?: Error,\n isUnhandledRejection?: boolean,\n): Event {\n const client = getClient();\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception, normalizeDepth),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception as { values: Exception[] }).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(stackParser: StackParser, ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(\n stackParser: StackParser,\n ex: Error & { framesToPop?: number; stacktrace?: string },\n): StackFrame[] {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: Error & { message: { error?: Error } }): string {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: ParameterizedString,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n stackParser: StackParser,\n exception: unknown,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n isUnhandledRejection?: boolean,\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(stackParser, errorEvent.error as Error);\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(stackParser, exception as Error);\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n // eslint-disable-next-line deprecation/deprecation\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception as Record<string, unknown>;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception as string, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(\n stackParser: StackParser,\n message: ParameterizedString,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {};\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: message, stacktrace: { frames } }],\n };\n }\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n exception: Record<string, unknown>,\n { isUnhandledRejection }: { isUnhandledRejection?: boolean },\n): string {\n const keys = extractExceptionKeysForMessage(exception);\n const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n }\n\n if (isEvent(exception)) {\n const className = getObjectClassName(exception);\n return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n }\n\n return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj: unknown): string | undefined | void {\n try {\n const prototype: Prototype | null = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch (e) {\n // ignore errors here\n }\n}\n","import type { browserTracingIntegration } from '@sentry-internal/tracing';\nimport { BrowserTracing } from '@sentry-internal/tracing';\nimport { captureException, withScope } from '@sentry/core';\nimport type { DsnLike, Integration, Mechanism, WrappedFunction } from '@sentry/types';\nimport {\n GLOBAL_OBJ,\n addExceptionMechanism,\n addExceptionTypeValue,\n addNonEnumerableProperty,\n getOriginalFunction,\n markFunctionWrapped,\n} from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError++;\n setTimeout(() => {\n ignoreOnError--;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n if (typeof wrapper === 'function') {\n return wrapper;\n } else {\n // If we find that the `__sentry_wrapped__` function is not a function at the time of accessing it, it means\n // that something messed with it. In that case we want to return the originally passed function.\n return fn;\n }\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped: WrappedFunction = function (this: unknown): void {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n *\n * @deprecated This type will be removed in the next major version of the Sentry SDK. `showReportDialog` will still be around, however the `eventId` option will now be required.\n */\nexport interface ReportDialogOptions {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(this: void): void;\n /** Callback after reportDialog closed */\n onClose?(this: void): void;\n}\n\n/**\n * This is a slim shim of `browserTracingIntegration` for the CDN bundles.\n * Since the actual functional integration uses a different code from `BrowserTracing`,\n * we want to avoid shipping both of them in the CDN bundles, as that would blow up the size.\n * Instead, we provide a functional integration with the same API, but the old implementation.\n * This means that it's not possible to register custom routing instrumentation, but that's OK for now.\n * We also don't expose the utilities for this anyhow in the CDN bundles.\n * For users that need custom routing in CDN bundles, they have to continue using `new BrowserTracing()` until v8.\n */\nexport function bundleBrowserTracingIntegration(\n options: Parameters<typeof browserTracingIntegration>[0] = {},\n): Integration {\n // Migrate some options from the old integration to the new one\n // eslint-disable-next-line deprecation/deprecation\n const opts: ConstructorParameters<typeof BrowserTracing>[0] = options;\n\n if (typeof options.markBackgroundSpan === 'boolean') {\n opts.markBackgroundTransactions = options.markBackgroundSpan;\n }\n\n if (typeof options.instrumentPageLoad === 'boolean') {\n opts.startTransactionOnPageLoad = options.instrumentPageLoad;\n }\n\n if (typeof options.instrumentNavigation === 'boolean') {\n opts.startTransactionOnLocationChange = options.instrumentNavigation;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return new BrowserTracing(opts);\n}\n","import type { Scope } from '@sentry/core';\nimport { applySdkMetadata } from '@sentry/core';\nimport { BaseClient } from '@sentry/core';\nimport type {\n BrowserClientProfilingOptions,\n BrowserClientReplayOptions,\n ClientOptions,\n Event,\n EventHint,\n Options,\n ParameterizedString,\n Severity,\n SeverityLevel,\n UserFeedback,\n} from '@sentry/types';\nimport { createClientReportEnvelope, dsnToString, getSDKSource, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { WINDOW } from './helpers';\nimport type { BrowserTransportOptions } from './transports/types';\nimport { createUserFeedbackEnvelope } from './userfeedback';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\nexport type BrowserOptions = Options<BrowserTransportOptions> &\n BrowserClientReplayOptions &\n BrowserClientProfilingOptions;\n\n/**\n * Configuration options for the Sentry Browser SDK Client class\n * @see BrowserClient for more information.\n */\nexport type BrowserClientOptions = ClientOptions<BrowserTransportOptions> &\n BrowserClientReplayOptions &\n BrowserClientProfilingOptions;\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient<BrowserClientOptions> {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserClientOptions) {\n const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n applySdkMetadata(options, 'browser', ['browser'], sdkSource);\n\n super(options);\n\n if (options.sendClientReports && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n if (WINDOW.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint?: EventHint): PromiseLike<Event> {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(\n message: ParameterizedString,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n ): PromiseLike<Event> {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * Sends user feedback to Sentry.\n */\n public captureUserFeedback(feedback: UserFeedback): void {\n if (!this._isEnabled()) {\n DEBUG_BUILD && logger.warn('SDK not enabled, will not capture user feedback.');\n return;\n }\n\n const envelope = createUserFeedbackEnvelope(feedback, {\n metadata: this.getSdkMetadata(),\n dsn: this.getDsn(),\n tunnel: this.getOptions().tunnel,\n });\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(envelope);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike<Event | null> {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n private _flushOutcomes(): void {\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n DEBUG_BUILD && logger.log('No outcomes to send');\n return;\n }\n\n // This is really the only place where we want to check for a DSN and only send outcomes then\n if (!this._dsn) {\n DEBUG_BUILD && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n DEBUG_BUILD && logger.log('Sending outcomes:', outcomes);\n\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(envelope);\n }\n}\n","import type { DsnComponents, EventEnvelope, SdkMetadata, UserFeedback, UserFeedbackItem } from '@sentry/types';\nimport { createEnvelope, dsnToString } from '@sentry/utils';\n\n/**\n * Creates an envelope from a user feedback.\n */\nexport function createUserFeedbackEnvelope(\n feedback: UserFeedback,\n {\n metadata,\n tunnel,\n dsn,\n }: {\n metadata: SdkMetadata | undefined;\n tunnel: string | undefined;\n dsn: DsnComponents | undefined;\n },\n): EventEnvelope {\n const headers: EventEnvelope[0] = {\n event_id: feedback.event_id,\n sent_at: new Date().toISOString(),\n ...(metadata &&\n metadata.sdk && {\n sdk: {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n },\n }),\n ...(!!tunnel && !!dsn && { dsn: dsnToString(dsn) }),\n };\n const item = createUserFeedbackEnvelopeItem(feedback);\n\n return createEnvelope(headers, [item]);\n}\n\nfunction createUserFeedbackEnvelopeItem(feedback: UserFeedback): UserFeedbackItem {\n const feedbackHeaders: UserFeedbackItem[0] = {\n type: 'user_report',\n };\n return [feedbackHeaders, feedback];\n}\n","import type { ClientReport, ClientReportEnvelope, ClientReportItem } from '@sentry/types';\n\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nexport function createClientReportEnvelope(\n discarded_events: ClientReport['discarded_events'],\n dsn?: string,\n timestamp?: number,\n): ClientReportEnvelope {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope<ClientReportEnvelope>(dsn ? { dsn } : {}, [clientReportItem]);\n}\n","type PartialURL = {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n search?: string;\n hash?: string;\n};\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not <a/> href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): PartialURL {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n search: query,\n hash: fragment,\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n */\nexport function getNumberOfUrlSegments(url: string): number {\n // split at '/' or at '\\/' to split regex urls correctly\n return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span description\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nexport function getSanitizedUrlString(url: PartialURL): string {\n const { protocol, host, path } = url;\n\n const filteredHost =\n (host &&\n host\n // Always filter out authority\n .replace(/^.*@/, '[filtered]:[filtered]@')\n // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n // TODO: Use new URL global if it exists\n .replace(/(:80)$/, '')\n .replace(/(:443)$/, '')) ||\n '';\n\n return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n","/* eslint-disable max-lines */\nimport { addBreadcrumb, convertIntegrationFnToClass, defineIntegration, getClient } from '@sentry/core';\nimport type {\n Client,\n Event as SentryEvent,\n HandlerDataConsole,\n HandlerDataDom,\n HandlerDataFetch,\n HandlerDataHistory,\n HandlerDataXhr,\n Integration,\n IntegrationClass,\n IntegrationFn,\n} from '@sentry/types';\nimport type {\n Breadcrumb,\n FetchBreadcrumbData,\n FetchBreadcrumbHint,\n XhrBreadcrumbData,\n XhrBreadcrumbHint,\n} from '@sentry/types/build/types/breadcrumb';\nimport {\n SENTRY_XHR_DATA_KEY,\n addClickKeypressInstrumentationHandler,\n addConsoleInstrumentationHandler,\n addFetchInstrumentationHandler,\n addHistoryInstrumentationHandler,\n addXhrInstrumentationHandler,\n getComponentName,\n getEventDescription,\n htmlTreeAsString,\n logger,\n parseUrl,\n safeJoin,\n severityLevelFromString,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\ninterface BreadcrumbsOptions {\n console: boolean;\n dom:\n | boolean\n | {\n serializeAttribute?: string | string[];\n maxStringLength?: number;\n };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n}\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nconst INTEGRATION_NAME = 'Breadcrumbs';\n\nconst _breadcrumbsIntegration = ((options: Partial<BreadcrumbsOptions> = {}) => {\n const _options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n setup(client) {\n if (_options.console) {\n addConsoleInstrumentationHandler(_getConsoleBreadcrumbHandler(client));\n }\n if (_options.dom) {\n addClickKeypressInstrumentationHandler(_getDomBreadcrumbHandler(client, _options.dom));\n }\n if (_options.xhr) {\n addXhrInstrumentationHandler(_getXhrBreadcrumbHandler(client));\n }\n if (_options.fetch) {\n addFetchInstrumentationHandler(_getFetchBreadcrumbHandler(client));\n }\n if (_options.history) {\n addHistoryInstrumentationHandler(_getHistoryBreadcrumbHandler(client));\n }\n if (_options.sentry && client.on) {\n client.on('beforeSendEvent', _getSentryBreadcrumbHandler(client));\n }\n },\n };\n}) satisfies IntegrationFn;\n\nexport const breadcrumbsIntegration = defineIntegration(_breadcrumbsIntegration);\n\n/**\n * Default Breadcrumbs instrumentations\n *\n * @deprecated Use `breadcrumbsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const Breadcrumbs = convertIntegrationFnToClass(INTEGRATION_NAME, breadcrumbsIntegration) as IntegrationClass<\n Integration & { setup: (client: Client) => void }\n> & {\n new (\n options?: Partial<{\n console: boolean;\n dom:\n | boolean\n | {\n serializeAttribute?: string | string[];\n maxStringLength?: number;\n };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n }>,\n ): Integration;\n};\n\n/**\n * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n */\nfunction _getSentryBreadcrumbHandler(client: Client): (event: SentryEvent) => void {\n return function addSentryBreadcrumb(event: SentryEvent): void {\n if (getClient() !== client) {\n return;\n }\n\n addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n };\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _getDomBreadcrumbHandler(\n client: Client,\n dom: BreadcrumbsOptions['dom'],\n): (handlerData: HandlerDataDom) => void {\n return function _innerDomBreadcrumb(handlerData: HandlerDataDom): void {\n if (getClient() !== client) {\n return;\n }\n\n let target;\n let componentName;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n let maxStringLength =\n typeof dom === 'object' && typeof dom.maxStringLength === 'number' ? dom.maxStringLength : undefined;\n if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) {\n DEBUG_BUILD &&\n logger.warn(\n `\\`dom.maxStringLength\\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.`,\n );\n maxStringLength = MAX_ALLOWED_STRING_LENGTH;\n }\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n const event = handlerData.event as Event | Node;\n const element = _isEvent(event) ? event.target : event;\n\n target = htmlTreeAsString(element, { keyAttrs, maxStringLength });\n componentName = getComponentName(element);\n } catch (e) {\n target = '<unknown>';\n }\n\n if (target.length === 0) {\n return;\n }\n\n const breadcrumb: Breadcrumb = {\n category: `ui.${handlerData.name}`,\n message: target,\n };\n\n if (componentName) {\n breadcrumb.data = { 'ui.component_name': componentName };\n }\n\n addBreadcrumb(breadcrumb, {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n });\n };\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _getConsoleBreadcrumbHandler(client: Client): (handlerData: HandlerDataConsole) => void {\n return function _consoleBreadcrumb(handlerData: HandlerDataConsole): void {\n if (getClient() !== client) {\n return;\n }\n\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n };\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _getXhrBreadcrumbHandler(client: Client): (handlerData: HandlerDataXhr) => void {\n return function _xhrBreadcrumb(handlerData: HandlerDataXhr): void {\n if (getClient() !== client) {\n return;\n }\n\n const { startTimestamp, endTimestamp } = handlerData;\n\n const sentryXhrData = handlerData.xhr[SENTRY_XHR_DATA_KEY];\n\n // We only capture complete, non-sentry requests\n if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n return;\n }\n\n const { method, url, status_code, body } = sentryXhrData;\n\n const data: XhrBreadcrumbData = {\n method,\n url,\n status_code,\n };\n\n const hint: XhrBreadcrumbHint = {\n xhr: handlerData.xhr,\n input: body,\n startTimestamp,\n endTimestamp,\n };\n\n addBreadcrumb(\n {\n category: 'xhr',\n data,\n type: 'http',\n },\n hint,\n );\n };\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _getFetchBreadcrumbHandler(client: Client): (handlerData: HandlerDataFetch) => void {\n return function _fetchBreadcrumb(handlerData: HandlerDataFetch): void {\n if (getClient() !== client) {\n return;\n }\n\n const { startTimestamp, endTimestamp } = handlerData;\n\n // We only capture complete fetch requests\n if (!endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n const data: FetchBreadcrumbData = handlerData.fetchData;\n const hint: FetchBreadcrumbHint = {\n data: handlerData.error,\n input: handlerData.args,\n startTimestamp,\n endTimestamp,\n };\n\n addBreadcrumb(\n {\n category: 'fetch',\n data,\n level: 'error',\n type: 'http',\n },\n hint,\n );\n } else {\n const response = handlerData.response as Response | undefined;\n const data: FetchBreadcrumbData = {\n ...handlerData.fetchData,\n status_code: response && response.status,\n };\n const hint: FetchBreadcrumbHint = {\n input: handlerData.args,\n response,\n startTimestamp,\n endTimestamp,\n };\n addBreadcrumb(\n {\n category: 'fetch',\n data,\n type: 'http',\n },\n hint,\n );\n }\n };\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _getHistoryBreadcrumbHandler(client: Client): (handlerData: HandlerDataHistory) => void {\n return function _historyBreadcrumb(handlerData: HandlerDataHistory): void {\n if (getClient() !== client) {\n return;\n }\n\n let from: string | undefined = handlerData.from;\n let to: string | undefined = handlerData.to;\n const parsedLoc = parseUrl(WINDOW.location.href);\n let parsedFrom = from ? parseUrl(from) : undefined;\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom || !parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n };\n}\n\nfunction _isEvent(event: unknown): event is Event {\n return !!event && !!(event as Record<string, unknown>).target;\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Exception, Integration, IntegrationClass, IntegrationFn, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n let previousEvent: Event | undefined;\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n processEvent(currentEvent) {\n // We want to ignore any non-error type events, e.g. transactions or replays\n // These should never be deduped, and also not be compared against as _previousEvent.\n if (currentEvent.type) {\n return currentEvent;\n }\n\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, previousEvent)) {\n DEBUG_BUILD && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n return (previousEvent = currentEvent);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/**\n * Deduplication filter.\n * @deprecated Use `dedupeIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const Dedupe = convertIntegrationFnToClass(INTEGRATION_NAME, dedupeIntegration) as IntegrationClass<\n Integration & { processEvent: (event: Event) => Event }\n>;\n\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-expect-error Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n","import type { HandlerDataError } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nlet _oldOnErrorHandler: (typeof GLOBAL_OBJ)['onerror'] | null = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalErrorInstrumentationHandler(handler: (data: HandlerDataError) => void): void {\n const type = 'error';\n addHandler(type, handler);\n maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError(): void {\n _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n GLOBAL_OBJ.onerror = function (\n msg: string | object,\n url?: string,\n line?: number,\n column?: number,\n error?: Error,\n ): boolean {\n const handlerData: HandlerDataError = {\n column,\n error,\n line,\n msg,\n url,\n };\n triggerHandlers('error', handlerData);\n\n if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n\n GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { HandlerDataUnhandledRejection } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nlet _oldOnUnhandledRejectionHandler: (typeof GLOBAL_OBJ)['onunhandledrejection'] | null = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalUnhandledRejectionInstrumentationHandler(\n handler: (data: HandlerDataUnhandledRejection) => void,\n): void {\n const type = 'unhandledrejection';\n addHandler(type, handler);\n maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n GLOBAL_OBJ.onunhandledrejection = function (e: any): boolean {\n const handlerData: HandlerDataUnhandledRejection = e;\n triggerHandlers('unhandledrejection', handlerData);\n\n if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n\n GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { captureEvent, convertIntegrationFnToClass, defineIntegration, getClient } from '@sentry/core';\nimport type {\n Client,\n Event,\n Integration,\n IntegrationClass,\n IntegrationFn,\n Primitive,\n StackParser,\n} from '@sentry/types';\nimport {\n addGlobalErrorInstrumentationHandler,\n addGlobalUnhandledRejectionInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport type { BrowserClient } from '../client';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\ntype GlobalHandlersIntegrations = Record<GlobalHandlersIntegrationsOptionKeys, boolean>;\n\nconst INTEGRATION_NAME = 'GlobalHandlers';\n\nconst _globalHandlersIntegration = ((options: Partial<GlobalHandlersIntegrations> = {}) => {\n const _options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n Error.stackTraceLimit = 50;\n },\n setup(client) {\n if (_options.onerror) {\n _installGlobalOnErrorHandler(client);\n globalHandlerLog('onerror');\n }\n if (_options.onunhandledrejection) {\n _installGlobalOnUnhandledRejectionHandler(client);\n globalHandlerLog('onunhandledrejection');\n }\n },\n };\n}) satisfies IntegrationFn;\n\nexport const globalHandlersIntegration = defineIntegration(_globalHandlersIntegration);\n\n/**\n * Global handlers.\n * @deprecated Use `globalHandlersIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const GlobalHandlers = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n globalHandlersIntegration,\n) as IntegrationClass<Integration & { setup: (client: Client) => void }> & {\n new (options?: Partial<GlobalHandlersIntegrations>): Integration;\n};\n\nfunction _installGlobalOnErrorHandler(client: Client): void {\n addGlobalErrorInstrumentationHandler(data => {\n const { stackParser, attachStacktrace } = getOptions();\n\n if (getClient() !== client || shouldIgnoreOnError()) {\n return;\n }\n\n const { msg, url, line, column, error } = data;\n\n const event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n captureEvent(event, {\n originalException: error,\n mechanism: {\n handled: false,\n type: 'onerror',\n },\n });\n });\n}\n\nfunction _installGlobalOnUnhandledRejectionHandler(client: Client): void {\n addGlobalUnhandledRejectionInstrumentationHandler(e => {\n const { stackParser, attachStacktrace } = getOptions();\n\n if (getClient() !== client || shouldIgnoreOnError()) {\n return;\n }\n\n const error = _getUnhandledRejectionError(e as unknown);\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n captureEvent(event, {\n originalException: error,\n mechanism: {\n handled: false,\n type: 'onunhandledrejection',\n },\n });\n });\n}\n\nfunction _getUnhandledRejectionError(error: unknown): unknown {\n if (isPrimitive(error)) {\n return error;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const e = error as any;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n return e.reason;\n }\n\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n return e.detail.reason;\n }\n } catch {} // eslint-disable-line no-empty\n\n return error;\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n DEBUG_BUILD && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction getOptions(): { stackParser: StackParser; attachStacktrace?: boolean } {\n const client = getClient<BrowserClient>();\n const options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return options;\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\n\nimport { WINDOW } from '../helpers';\n\nconst INTEGRATION_NAME = 'HttpContext';\n\nconst _httpContextIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n preprocessEvent(event) {\n // if none of the information we want exists, don't bother\n if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n return;\n }\n\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (WINDOW.location && WINDOW.location.href);\n const { referrer } = WINDOW.document || {};\n const { userAgent } = WINDOW.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...event.request, ...(url && { url }), headers };\n\n event.request = request;\n },\n };\n}) satisfies IntegrationFn;\n\nexport const httpContextIntegration = defineIntegration(_httpContextIntegration);\n\n/**\n * HttpContext integration collects information about HTTP request headers.\n * @deprecated Use `httpContextIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const HttpContext = convertIntegrationFnToClass(INTEGRATION_NAME, httpContextIntegration) as IntegrationClass<\n Integration & { preprocessEvent: (event: Event) => void }\n>;\n","import type { Event, EventHint, Exception, ExtendedError, StackParser } from '@sentry/types';\n\nimport { isInstanceOf } from './is';\nimport { truncate } from './string';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nexport function applyAggregateErrorsToEvent(\n exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n parser: StackParser,\n maxValueLimit: number = 250,\n key: string,\n limit: number,\n event: Event,\n hint?: EventHint,\n): void {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return;\n }\n\n // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n const originalException: Exception | undefined =\n event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n // We only create exception grouping if there is an exception in the event.\n if (originalException) {\n event.exception.values = truncateAggregateExceptions(\n aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n hint.originalException as ExtendedError,\n key,\n event.exception.values,\n originalException,\n 0,\n ),\n maxValueLimit,\n );\n }\n}\n\nfunction aggregateExceptionsFromError(\n exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n parser: StackParser,\n limit: number,\n error: ExtendedError,\n key: string,\n prevExceptions: Exception[],\n exception: Exception,\n exceptionId: number,\n): Exception[] {\n if (prevExceptions.length >= limit + 1) {\n return prevExceptions;\n }\n\n let newExceptions = [...prevExceptions];\n\n // Recursively call this function in order to walk down a chain of errors\n if (isInstanceOf(error[key], Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, error[key]);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error[key],\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n\n // This will create exception grouping for AggregateErrors\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n if (Array.isArray(error.errors)) {\n error.errors.forEach((childError, i) => {\n if (isInstanceOf(childError, Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, childError);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n childError,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n });\n }\n\n return newExceptions;\n}\n\nfunction applyExceptionGroupFieldsForParentException(exception: Exception, exceptionId: number): void {\n // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n exception.mechanism = {\n ...exception.mechanism,\n ...(exception.type === 'AggregateError' && { is_exception_group: true }),\n exception_id: exceptionId,\n };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n exception: Exception,\n source: string,\n exceptionId: number,\n parentId: number | undefined,\n): void {\n // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n exception.mechanism = {\n ...exception.mechanism,\n type: 'chained',\n source,\n exception_id: exceptionId,\n parent_id: parentId,\n };\n}\n\n/**\n * Truncate the message (exception.value) of all exceptions in the event.\n * Because this event processor is ran after `applyClientOptions`,\n * we need to truncate the message of the added exceptions here.\n */\nfunction truncateAggregateExceptions(exceptions: Exception[], maxValueLength: number): Exception[] {\n return exceptions.map(exception => {\n if (exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n return exception;\n });\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Client, Event, EventHint, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\nimport { applyAggregateErrorsToEvent } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder';\n\ninterface LinkedErrorsOptions {\n key?: string;\n limit?: number;\n}\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options: LinkedErrorsOptions = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n const key = options.key || DEFAULT_KEY;\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n preprocessEvent(event, hint, client) {\n const options = client.getOptions();\n\n applyAggregateErrorsToEvent(\n // This differs from the LinkedErrors integration in core by using a different exceptionFromError function\n exceptionFromError,\n options.stackParser,\n options.maxValueLength,\n key,\n limit,\n event,\n hint,\n );\n },\n };\n}) satisfies IntegrationFn;\n\nexport const linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\n/**\n * Aggregrate linked errors in an event.\n * @deprecated Use `linkedErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const LinkedErrors = convertIntegrationFnToClass(INTEGRATION_NAME, linkedErrorsIntegration) as IntegrationClass<\n Integration & { preprocessEvent: (event: Event, hint: EventHint, client: Client) => void }\n> & { new (options?: { key?: string; limit?: number }): Integration };\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Integration, IntegrationClass, IntegrationFn, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\n\nimport { WINDOW, wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'BroadcastChannel',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'SharedWorker',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\nconst INTEGRATION_NAME = 'TryCatch';\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\ninterface TryCatchOptions {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n}\n\nconst _browserApiErrorsIntegration = ((options: Partial<TryCatchOptions> = {}) => {\n const _options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n // TODO: This currently only works for the first client this is setup\n // We may want to adjust this to check for client etc.\n setupOnce() {\n if (_options.setTimeout) {\n fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n }\n\n if (_options.setInterval) {\n fill(WINDOW, 'setInterval', _wrapTimeFunction);\n }\n\n if (_options.requestAnimationFrame) {\n fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (_options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = _options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n },\n };\n}) satisfies IntegrationFn;\n\nexport const browserApiErrorsIntegration = defineIntegration(_browserApiErrorsIntegration);\n\n/**\n * Wrap timer functions and event targets to catch errors and provide better meta data.\n * @deprecated Use `browserApiErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const TryCatch = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n browserApiErrorsIntegration,\n) as IntegrationClass<Integration> & {\n new (options?: {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n }): Integration;\n};\n\nfunction _wrapTimeFunction(original: () => void): () => number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, ...args: any[]): number {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: false,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, callback: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: false,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\nfunction _wrapXHR(originalSend: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: XMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original: WrappedFunction): () => any {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: false,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\nfunction _wrapEventTarget(target: string): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObject = WINDOW as { [key: string]: any };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = globalObject[target] && globalObject[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original: VoidFunction,): (\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: false,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn as any as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: false,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener: () => void,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n const wrappedEventHandler = fn as unknown as WrappedFunction;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n","// This was originally forked from https://github.com/csnover/TraceKit, and was largely\n// re - written as part of raven - js.\n//\n// This code was later copied to the JavaScript mono - repo and further modified and\n// refactored over the years.\n\n// Copyright (c) 2013 Onur Can Cakmak onur.cakmak@gmail.com and all TraceKit contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this\n// software and associated documentation files(the 'Software'), to deal in the Software\n// without restriction, including without limitation the rights to use, copy, modify,\n// merge, publish, distribute, sublicense, and / or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following\n// conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies\n// or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n// PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/types';\nimport { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n const frame: StackFrame = {\n filename,\n function: func,\n in_app: true, // All browser frames are considered in_app\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n// We cannot call this variable `chrome` because it can conflict with global `chrome` variable in certain environments\n// See: https://github.com/getsentry/sentry-javascript/issues/6880\nconst chromeStackParserFn: StackLineParserFn = line => {\n const parts = chromeRegex.exec(line);\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chromeStackParserFn];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n const parts = geckoREgex.exec(line);\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n const parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n","import { SentryError } from './error';\nimport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer<T> {\n // exposes the internal array so tests can assert on the state of it.\n // XXX: this really should not be public api.\n $: Array<PromiseLike<T>>;\n add(taskProducer: () => PromiseLike<T>): PromiseLike<T>;\n drain(timeout?: number): PromiseLike<boolean>;\n}\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer<T>(limit?: number): PromiseBuffer<T> {\n const buffer: Array<PromiseLike<T>> = [];\n\n function isReady(): boolean {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike<T>\n * @returns Removed promise.\n */\n function remove(task: PromiseLike<T>): PromiseLike<T> {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike<T>; In previous versions this used to be `task:\n * PromiseLike<T>`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer: () => PromiseLike<T>): PromiseLike<T> {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout?: number): PromiseLike<boolean> {\n return new SyncPromise<boolean>((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n","import type {\n Envelope,\n EnvelopeItem,\n EnvelopeItemType,\n Event,\n EventDropReason,\n EventItem,\n InternalBaseTransportOptions,\n Transport,\n TransportMakeRequestResponse,\n TransportRequestExecutor,\n} from '@sentry/types';\nimport type { PromiseBuffer, RateLimits } from '@sentry/utils';\nimport {\n SentryError,\n createEnvelope,\n envelopeItemTypeToDataCategory,\n forEachEnvelopeItem,\n isRateLimited,\n logger,\n makePromiseBuffer,\n resolvedSyncPromise,\n serializeEnvelope,\n updateRateLimits,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer<void | TransportMakeRequestResponse> = makePromiseBuffer(\n options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n ),\n): Transport {\n let rateLimits: RateLimits = {};\n const flush = (timeout?: number): PromiseLike<boolean> => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike<void | TransportMakeRequestResponse> {\n const filteredEnvelopeItems: EnvelopeItem[] = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const dataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, dataCategory)) {\n const event: Event | undefined = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent('ratelimit_backoff', dataCategory, event);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return resolvedSyncPromise();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filteredEnvelope: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as any);\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason: EventDropReason): void => {\n forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n const event: Event | undefined = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type), event);\n });\n };\n\n const requestTask = (): PromiseLike<void | TransportMakeRequestResponse> =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n DEBUG_BUILD && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n return response;\n },\n error => {\n recordEnvelopeLoss('network_error');\n throw error;\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n DEBUG_BUILD && logger.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise();\n } else {\n throw error;\n }\n },\n );\n }\n\n // We use this to identifify if the transport is the base transport\n // TODO (v8): Remove this again as we'll no longer need it\n send.__sentry__baseTransport__ = true;\n\n return {\n send,\n flush,\n };\n}\n\nfunction getEventForEnvelopeItem(item: Envelope[1][number], type: EnvelopeItemType): Event | undefined {\n if (type !== 'event' && type !== 'transaction') {\n return undefined;\n }\n\n return Array.isArray(item) ? (item as EventItem)[1] : undefined;\n}\n","import { isNativeFetch, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\nlet cachedFetchImpl: FetchImpl | undefined = undefined;\n\nexport type FetchImpl = typeof fetch;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nexport function getNativeFetchImplementation(): FetchImpl {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(WINDOW.fetch)) {\n return (cachedFetchImpl = WINDOW.fetch.bind(WINDOW));\n }\n\n const document = WINDOW.document;\n let fetchImpl = WINDOW.fetch;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n DEBUG_BUILD && logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(WINDOW));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/** Clears cached fetch impl */\nexport function clearCachedFetchImplementation(): void {\n cachedFetchImpl = undefined;\n}\n","import { createTransport } from '@sentry/core';\nimport type { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { rejectedSyncPromise } from '@sentry/utils';\n\nimport type { BrowserTransportOptions } from './types';\nimport type { FetchImpl } from './utils';\nimport { clearCachedFetchImplementation, getNativeFetchImplementation } from './utils';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeFetchTransport(\n options: BrowserTransportOptions,\n nativeFetch: FetchImpl = getNativeFetchImplementation(),\n): Transport {\n let pendingBodySize = 0;\n let pendingCount = 0;\n\n function makeRequest(request: TransportRequest): PromiseLike<TransportMakeRequestResponse> {\n const requestSize = request.body.length;\n pendingBodySize += requestSize;\n pendingCount++;\n\n const requestOptions: RequestInit = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n // frequently sending events right before the user is switching pages (eg. whenfinishing navigation transactions).\n // Gotchas:\n // - `keepalive` isn't supported by Firefox\n // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch):\n // If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n // We will therefore only activate the flag when we're below that limit.\n // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n keepalive: pendingBodySize <= 60_000 && pendingCount < 15,\n ...options.fetchOptions,\n };\n\n try {\n return nativeFetch(options.url, requestOptions).then(response => {\n pendingBodySize -= requestSize;\n pendingCount--;\n return {\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n };\n });\n } catch (e) {\n clearCachedFetchImplementation();\n pendingBodySize -= requestSize;\n pendingCount--;\n return rejectedSyncPromise(e);\n }\n }\n\n return createTransport(options, makeRequest);\n}\n","import { createTransport } from '@sentry/core';\nimport type { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n\nimport type { BrowserTransportOptions } from './types';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nexport function makeXHRTransport(options: BrowserTransportOptions): Transport {\n function makeRequest(request: TransportRequest): PromiseLike<TransportMakeRequestResponse> {\n return new SyncPromise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onerror = reject;\n\n xhr.onreadystatechange = (): void => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n resolve({\n statusCode: xhr.status,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n });\n }\n };\n\n xhr.open('POST', options.url);\n\n for (const header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport(options, makeRequest);\n}\n","import type { Hub } from '@sentry/core';\nimport { functionToStringIntegration, inboundFiltersIntegration } from '@sentry/core';\nimport {\n captureSession,\n getClient,\n getCurrentHub,\n getIntegrationsToSetup,\n getReportDialogEndpoint,\n initAndBind,\n startSession,\n} from '@sentry/core';\nimport type { Integration, Options, UserFeedback } from '@sentry/types';\nimport {\n addHistoryInstrumentationHandler,\n logger,\n stackParserFromStackParserOptions,\n supportsFetch,\n} from '@sentry/utils';\n\nimport type { BrowserClientOptions, BrowserOptions } from './client';\nimport { BrowserClient } from './client';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { ReportDialogOptions } from './helpers';\nimport { WINDOW, wrap as internalWrap } from './helpers';\nimport { breadcrumbsIntegration } from './integrations/breadcrumbs';\nimport { dedupeIntegration } from './integrations/dedupe';\nimport { globalHandlersIntegration } from './integrations/globalhandlers';\nimport { httpContextIntegration } from './integrations/httpcontext';\nimport { linkedErrorsIntegration } from './integrations/linkederrors';\nimport { browserApiErrorsIntegration } from './integrations/trycatch';\nimport { defaultStackParser } from './stack-parsers';\nimport { makeFetchTransport, makeXHRTransport } from './transports';\n\n/** @deprecated Use `getDefaultIntegrations(options)` instead. */\nexport const defaultIntegrations = [\n inboundFiltersIntegration(),\n functionToStringIntegration(),\n browserApiErrorsIntegration(),\n breadcrumbsIntegration(),\n globalHandlersIntegration(),\n linkedErrorsIntegration(),\n dedupeIntegration(),\n httpContextIntegration(),\n];\n\n/** Get the default integrations for the browser SDK. */\nexport function getDefaultIntegrations(_options: Options): Integration[] {\n // We return a copy of the defaultIntegrations here to avoid mutating this\n return [\n // eslint-disable-next-line deprecation/deprecation\n ...defaultIntegrations,\n ];\n}\n\n/**\n * A magic string that build tooling can leverage in order to inject a release value into the SDK.\n */\ndeclare const __SENTRY_RELEASE__: string | undefined;\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options: BrowserOptions = {}): void {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = getDefaultIntegrations(options);\n }\n if (options.release === undefined) {\n // This allows build tooling to find-and-replace __SENTRY_RELEASE__ to inject a release value\n if (typeof __SENTRY_RELEASE__ === 'string') {\n options.release = __SENTRY_RELEASE__;\n }\n\n // This supports the variable that sentry-webpack-plugin injects\n if (WINDOW.SENTRY_RELEASE && WINDOW.SENTRY_RELEASE.id) {\n options.release = WINDOW.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n const clientOptions: BrowserClientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\ntype NewReportDialogOptions = ReportDialogOptions & { eventId: string }; // eslint-disable-line\n\ninterface ShowReportDialogFunction {\n /**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\n (options: NewReportDialogOptions): void;\n\n /**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n *\n * @deprecated Please always pass an `options` argument with `eventId`. The `hub` argument will not be used in the next version of the SDK.\n */\n // eslint-disable-next-line deprecation/deprecation\n (options?: ReportDialogOptions, hub?: Hub): void;\n}\n\nexport const showReportDialog: ShowReportDialogFunction = (\n // eslint-disable-next-line deprecation/deprecation\n options: ReportDialogOptions = {},\n // eslint-disable-next-line deprecation/deprecation\n hub: Hub = getCurrentHub(),\n) => {\n // doesn't work without a document (React Native)\n if (!WINDOW.document) {\n DEBUG_BUILD && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const { client, scope } = hub.getStackTop();\n const dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n DEBUG_BUILD && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n // eslint-disable-next-line deprecation/deprecation\n options.eventId = hub.lastEventId();\n }\n\n const script = WINDOW.document.createElement('script');\n script.async = true;\n script.crossOrigin = 'anonymous';\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n\n const { onClose } = options;\n if (onClose) {\n const reportDialogClosedMessageHandler = (event: MessageEvent): void => {\n if (event.data === '__sentry_reportdialog_closed__') {\n try {\n onClose();\n } finally {\n WINDOW.removeEventListener('message', reportDialogClosedMessageHandler);\n }\n }\n };\n WINDOW.addEventListener('message', reportDialogClosedMessageHandler);\n }\n\n const injectionPoint = WINDOW.document.head || WINDOW.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n DEBUG_BUILD && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n};\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n callback();\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @deprecated This function will be removed in v8.\n * It is not part of Sentry's official API and it's easily replaceable by using a try/catch block\n * and calling Sentry.captureException.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// TODO(v8): Remove this function\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn: (...args: any) => any): any {\n return internalWrap(fn)();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking(): void {\n if (typeof WINDOW.document === 'undefined') {\n DEBUG_BUILD && logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSession({ ignoreDuration: true });\n captureSession();\n\n // We want to create a session for every navigation as well\n addHistoryInstrumentationHandler(({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (from !== undefined && from !== to) {\n startSession({ ignoreDuration: true });\n captureSession();\n }\n });\n}\n\n/**\n * Captures user feedback and sends it to Sentry.\n */\nexport function captureUserFeedback(feedback: UserFeedback): void {\n const client = getClient<BrowserClient>();\n if (client) {\n client.captureUserFeedback(feedback);\n }\n}\n","import type { ReportDialogOptions, Scope } from '@sentry/browser';\nimport { captureException, getClient, showReportDialog, withScope } from '@sentry/browser';\nimport { isError, logger } from '@sentry/utils';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\n\nimport { DEBUG_BUILD } from './debug-build';\n\nexport function isAtLeastReact17(version: string): boolean {\n const major = version.match(/^([^.]+)/);\n return major !== null && parseInt(major[0]) >= 17;\n}\n\nexport const UNKNOWN_COMPONENT = 'unknown';\n\nexport type FallbackRender = (errorData: {\n error: Error;\n componentStack: string;\n eventId: string;\n resetError(): void;\n}) => React.ReactElement;\n\nexport type ErrorBoundaryProps = {\n children?: React.ReactNode | (() => React.ReactNode);\n /** If a Sentry report dialog should be rendered on error */\n showDialog?: boolean | undefined;\n /**\n * Options to be passed into the Sentry report dialog.\n * No-op if {@link showDialog} is false.\n */\n // eslint-disable-next-line deprecation/deprecation\n dialogOptions?: Omit<ReportDialogOptions, 'eventId'> | undefined;\n /**\n * A fallback component that gets rendered when the error boundary encounters an error.\n *\n * Can either provide a React Component, or a function that returns React Component as\n * a valid fallback prop. If a function is provided, the function will be called with\n * the error, the component stack, and an function that resets the error boundary on error.\n *\n */\n fallback?: React.ReactElement | FallbackRender | undefined;\n /** Called when the error boundary encounters an error */\n onError?: ((error: Error, componentStack: string, eventId: string) => void) | undefined;\n /** Called on componentDidMount() */\n onMount?: (() => void) | undefined;\n /** Called if resetError() is called from the fallback render props function */\n onReset?: ((error: Error | null, componentStack: string | null, eventId: string | null) => void) | undefined;\n /** Called on componentWillUnmount() */\n onUnmount?: ((error: Error | null, componentStack: string | null, eventId: string | null) => void) | undefined;\n /** Called before the error is captured by Sentry, allows for you to add tags or context using the scope */\n beforeCapture?: ((scope: Scope, error: Error | null, componentStack: string | null) => void) | undefined;\n};\n\ntype ErrorBoundaryState =\n | {\n componentStack: null;\n error: null;\n eventId: null;\n }\n | {\n componentStack: React.ErrorInfo['componentStack'];\n error: Error;\n eventId: string;\n };\n\nconst INITIAL_STATE = {\n componentStack: null,\n error: null,\n eventId: null,\n};\n\nfunction setCause(error: Error & { cause?: Error }, cause: Error): void {\n const seenErrors = new WeakMap<Error, boolean>();\n\n function recurse(error: Error & { cause?: Error }, cause: Error): void {\n // If we've already seen the error, there is a recursive loop somewhere in the error's\n // cause chain. Let's just bail out then to prevent a stack overflow.\n if (seenErrors.has(error)) {\n return;\n }\n if (error.cause) {\n seenErrors.set(error, true);\n return recurse(error.cause, cause);\n }\n error.cause = cause;\n }\n\n recurse(error, cause);\n}\n\n/**\n * A ErrorBoundary component that logs errors to Sentry. Requires React >= 16.\n * NOTE: If you are a Sentry user, and you are seeing this stack frame, it means the\n * Sentry React SDK ErrorBoundary caught an error invoking your application code. This\n * is expected behavior and NOT indicative of a bug with the Sentry React SDK.\n */\nclass ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n public state: ErrorBoundaryState;\n\n private readonly _openFallbackReportDialog: boolean;\n\n private _lastEventId?: string;\n\n public constructor(props: ErrorBoundaryProps) {\n super(props);\n\n this.state = INITIAL_STATE;\n this._openFallbackReportDialog = true;\n\n const client = getClient();\n if (client && client.on && props.showDialog) {\n this._openFallbackReportDialog = false;\n client.on('afterSendEvent', event => {\n if (!event.type && event.event_id === this._lastEventId) {\n // eslint-disable-next-line deprecation/deprecation\n showReportDialog({ ...props.dialogOptions, eventId: this._lastEventId });\n }\n });\n }\n }\n\n public componentDidCatch(error: Error & { cause?: Error }, { componentStack }: React.ErrorInfo): void {\n const { beforeCapture, onError, showDialog, dialogOptions } = this.props;\n withScope(scope => {\n // If on React version >= 17, create stack trace from componentStack param and links\n // to to the original error using `error.cause` otherwise relies on error param for stacktrace.\n // Linking errors requires the `LinkedErrors` integration be enabled.\n // See: https://reactjs.org/blog/2020/08/10/react-v17-rc.html#native-component-stacks\n //\n // Although `componentDidCatch` is typed to accept an `Error` object, it can also be invoked\n // with non-error objects. This is why we need to check if the error is an error-like object.\n // See: https://github.com/getsentry/sentry-javascript/issues/6167\n if (isAtLeastReact17(React.version) && isError(error)) {\n const errorBoundaryError = new Error(error.message);\n errorBoundaryError.name = `React ErrorBoundary ${error.name}`;\n errorBoundaryError.stack = componentStack;\n\n // Using the `LinkedErrors` integration to link the errors together.\n setCause(error, errorBoundaryError);\n }\n\n if (beforeCapture) {\n beforeCapture(scope, error, componentStack);\n }\n\n const eventId = captureException(error, {\n captureContext: {\n contexts: { react: { componentStack } },\n },\n // If users provide a fallback component we can assume they are handling the error.\n // Therefore, we set the mechanism depending on the presence of the fallback prop.\n mechanism: { handled: !!this.props.fallback },\n });\n\n if (onError) {\n onError(error, componentStack, eventId);\n }\n if (showDialog) {\n this._lastEventId = eventId;\n if (this._openFallbackReportDialog) {\n showReportDialog({ ...dialogOptions, eventId });\n }\n }\n\n // componentDidCatch is used over getDerivedStateFromError\n // so that componentStack is accessible through state.\n this.setState({ error, componentStack, eventId });\n });\n }\n\n public componentDidMount(): void {\n const { onMount } = this.props;\n if (onMount) {\n onMount();\n }\n }\n\n public componentWillUnmount(): void {\n const { error, componentStack, eventId } = this.state;\n const { onUnmount } = this.props;\n if (onUnmount) {\n onUnmount(error, componentStack, eventId);\n }\n }\n\n public resetErrorBoundary: () => void = () => {\n const { onReset } = this.props;\n const { error, componentStack, eventId } = this.state;\n if (onReset) {\n onReset(error, componentStack, eventId);\n }\n this.setState(INITIAL_STATE);\n };\n\n public render(): React.ReactNode {\n const { fallback, children } = this.props;\n const state = this.state;\n\n if (state.error) {\n let element: React.ReactElement | undefined = undefined;\n if (typeof fallback === 'function') {\n element = fallback({\n error: state.error,\n componentStack: state.componentStack,\n resetError: this.resetErrorBoundary,\n eventId: state.eventId,\n });\n } else {\n element = fallback;\n }\n\n if (React.isValidElement(element)) {\n return element;\n }\n\n if (fallback) {\n DEBUG_BUILD && logger.warn('fallback did not produce a valid ReactElement');\n }\n\n // Fail gracefully if no fallback provided or is not valid\n return null;\n }\n\n if (typeof children === 'function') {\n return (children as () => React.ReactNode)();\n }\n return children;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction withErrorBoundary<P extends Record<string, any>>(\n WrappedComponent: React.ComponentType<P>,\n errorBoundaryOptions: ErrorBoundaryProps,\n): React.FC<P> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const componentDisplayName = WrappedComponent.displayName || WrappedComponent.name || UNKNOWN_COMPONENT;\n\n const Wrapped: React.FC<P> = (props: P) => (\n <ErrorBoundary {...errorBoundaryOptions}>\n <WrappedComponent {...props} />\n </ErrorBoundary>\n );\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n Wrapped.displayName = `errorBoundary(${componentDisplayName})`;\n\n // Copy over static methods from Wrapped component to Profiler HOC\n // See: https://reactjs.org/docs/higher-order-components.html#static-methods-must-be-copied-over\n hoistNonReactStatics(Wrapped, WrappedComponent);\n return Wrapped;\n}\n\nexport { ErrorBoundary, withErrorBoundary };\n","import type {\n FormEncType,\n HTMLFormMethod,\n RelativeRoutingType,\n} from \"@remix-run/router\";\nimport { stripBasename, UNSAFE_warning as warning } from \"@remix-run/router\";\n\nexport const defaultMethod: HTMLFormMethod = \"get\";\nconst defaultEncType: FormEncType = \"application/x-www-form-urlencoded\";\n\nexport function isHtmlElement(object: any): object is HTMLElement {\n return object != null && typeof object.tagName === \"string\";\n}\n\nexport function isButtonElement(object: any): object is HTMLButtonElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\n\nexport function isFormElement(object: any): object is HTMLFormElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\n\nexport function isInputElement(object: any): object is HTMLInputElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\n\ntype LimitedMouseEvent = Pick<\n MouseEvent,\n \"button\" | \"metaKey\" | \"altKey\" | \"ctrlKey\" | \"shiftKey\"\n>;\n\nfunction isModifiedEvent(event: LimitedMouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport function shouldProcessLinkClick(\n event: LimitedMouseEvent,\n target?: string\n) {\n return (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n );\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record<string, string | string[]>\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n\nexport function getSearchParamsForLocation(\n locationSearch: string,\n defaultSearchParams: URLSearchParams | null\n) {\n let searchParams = createSearchParams(locationSearch);\n\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n });\n }\n\n return searchParams;\n}\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\nexport type SubmitTarget =\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | JsonValue\n | null;\n\n// One-time check for submitter support\nlet _formDataSupportsSubmitter: boolean | null = null;\n\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(\n document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0\n );\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\n\n/**\n * Submit options shared by both navigations and fetchers\n */\ninterface SharedSubmitOptions {\n /**\n * The HTTP method used to submit the form. Overrides `<form method>`.\n * Defaults to \"GET\".\n */\n method?: HTMLFormMethod;\n\n /**\n * The action URL path used to submit the form. Overrides `<form action>`.\n * Defaults to the path of the current route.\n */\n action?: string;\n\n /**\n * The encoding used to submit the form. Overrides `<form encType>`.\n * Defaults to \"application/x-www-form-urlencoded\".\n */\n encType?: FormEncType;\n\n /**\n * Determines whether the form action is relative to the route hierarchy or\n * the pathname. Use this if you want to opt out of navigating the route\n * hierarchy and want to instead route based on /-delimited URL segments\n */\n relative?: RelativeRoutingType;\n\n /**\n * In browser-based environments, prevent resetting scroll after this\n * navigation when using the <ScrollRestoration> component\n */\n preventScrollReset?: boolean;\n\n /**\n * Enable flushSync for this submission's state updates\n */\n flushSync?: boolean;\n}\n\n/**\n * Submit options available to fetchers\n */\nexport interface FetcherSubmitOptions extends SharedSubmitOptions {}\n\n/**\n * Submit options available to navigations\n */\nexport interface SubmitOptions extends FetcherSubmitOptions {\n /**\n * Set `true` to replace the current entry in the browser's history stack\n * instead of creating a new one (i.e. stay on \"the same page\"). Defaults\n * to `false`.\n */\n replace?: boolean;\n\n /**\n * State object to add to the history stack entry for this navigation\n */\n state?: any;\n\n /**\n * Indicate a specific fetcherKey to use when using navigate=false\n */\n fetcherKey?: string;\n\n /**\n * navigate=false will use a fetcher instead of a navigation\n */\n navigate?: boolean;\n\n /**\n * Enable view transitions on this submission navigation\n */\n viewTransition?: boolean;\n}\n\nconst supportedFormEncTypes: Set<FormEncType> = new Set([\n \"application/x-www-form-urlencoded\",\n \"multipart/form-data\",\n \"text/plain\",\n]);\n\nfunction getFormEncType(encType: string | null) {\n if (encType != null && !supportedFormEncTypes.has(encType as FormEncType)) {\n warning(\n false,\n `\"${encType}\" is not a valid \\`encType\\` for \\`<Form>\\`/\\`<fetcher.Form>\\` ` +\n `and will default to \"${defaultEncType}\"`\n );\n\n return null;\n }\n return encType;\n}\n\nexport function getFormSubmissionInfo(\n target: SubmitTarget,\n basename: string\n): {\n action: string | null;\n method: string;\n encType: string;\n formData: FormData | undefined;\n body: any;\n} {\n let method: string;\n let action: string | null;\n let encType: string;\n let formData: FormData | undefined;\n let body: any;\n\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n\n formData = new FormData(target);\n } else if (\n isButtonElement(target) ||\n (isInputElement(target) &&\n (target.type === \"submit\" || target.type === \"image\"))\n ) {\n let form = target.form;\n\n if (form == null) {\n throw new Error(\n `Cannot submit a <button> or <input type=\"submit\"> without a <form>`\n );\n }\n\n // <button>/<input type=\"submit\"> may override attributes of <form>\n\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"formaction\") || form.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n\n method =\n target.getAttribute(\"formmethod\") ||\n form.getAttribute(\"method\") ||\n defaultMethod;\n encType =\n getFormEncType(target.getAttribute(\"formenctype\")) ||\n getFormEncType(form.getAttribute(\"enctype\")) ||\n defaultEncType;\n\n // Build a FormData object populated from a form and submitter\n formData = new FormData(form, target);\n\n // If this browser doesn't support the `FormData(el, submitter)` format,\n // then tack on the submitter value at the end. This is a lightweight\n // solution that is not 100% spec compliant. For complete support in older\n // browsers, consider using the `formdata-submitter-polyfill` package\n if (!isFormDataSubmitterSupported()) {\n let { name, type, value } = target;\n if (type === \"image\") {\n let prefix = name ? `${name}.` : \"\";\n formData.append(`${prefix}x`, \"0\");\n formData.append(`${prefix}y`, \"0\");\n } else if (name) {\n formData.append(name, value);\n }\n }\n } else if (isHtmlElement(target)) {\n throw new Error(\n `Cannot submit element that is not <form>, <button>, or ` +\n `<input type=\"submit|image\">`\n );\n } else {\n method = defaultMethod;\n action = null;\n encType = defaultEncType;\n body = target;\n }\n\n // Send body for <Form encType=\"text/plain\" so we encode it into text\n if (formData && encType === \"text/plain\") {\n body = formData;\n formData = undefined;\n }\n\n return { action, method: method.toLowerCase(), encType, formData, body };\n}\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport type {\n DataRouteObject,\n FutureConfig,\n Location,\n NavigateOptions,\n NavigationType,\n Navigator,\n RelativeRoutingType,\n RouteObject,\n RouterProps,\n RouterProviderProps,\n To,\n DataStrategyFunction,\n PatchRoutesOnNavigationFunction,\n} from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatches,\n useNavigate,\n useNavigation,\n useResolvedPath,\n useBlocker,\n UNSAFE_DataRouterContext as DataRouterContext,\n UNSAFE_DataRouterStateContext as DataRouterStateContext,\n UNSAFE_NavigationContext as NavigationContext,\n UNSAFE_RouteContext as RouteContext,\n UNSAFE_logV6DeprecationWarnings as logV6DeprecationWarnings,\n UNSAFE_mapRouteProperties as mapRouteProperties,\n UNSAFE_useRouteId as useRouteId,\n UNSAFE_useRoutesImpl as useRoutesImpl,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n FutureConfig as RouterFutureConfig,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HTMLFormMethod,\n HydrationState,\n Router as RemixRouter,\n V7_FormMethod,\n RouterState,\n RouterSubscriber,\n BlockerFunction,\n} from \"@remix-run/router\";\nimport {\n createRouter,\n createBrowserHistory,\n createHashHistory,\n joinPaths,\n stripBasename,\n UNSAFE_ErrorResponseImpl as ErrorResponseImpl,\n UNSAFE_invariant as invariant,\n UNSAFE_warning as warning,\n matchPath,\n IDLE_FETCHER,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\n SubmitTarget,\n FetcherSubmitOptions,\n} from \"./dom\";\nimport {\n createSearchParams,\n defaultMethod,\n getFormSubmissionInfo,\n getSearchParamsForLocation,\n shouldProcessLinkClick,\n} from \"./dom\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Re-exports\n////////////////////////////////////////////////////////////////////////////////\n\nexport type {\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n ParamKeyValuePair,\n SubmitOptions,\n URLSearchParamsInit,\n V7_FormMethod,\n};\nexport { createSearchParams, ErrorResponseImpl as UNSAFE_ErrorResponseImpl };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n ActionFunctionArgs,\n AwaitProps,\n Blocker,\n BlockerFunction,\n DataRouteMatch,\n DataRouteObject,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DataStrategyMatch,\n DataStrategyResult,\n ErrorResponse,\n Fetcher,\n FutureConfig,\n Hash,\n IndexRouteObject,\n IndexRouteProps,\n JsonFunction,\n LazyRouteFunction,\n LayoutRouteProps,\n LoaderFunction,\n LoaderFunctionArgs,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n NonIndexRouteObject,\n OutletProps,\n Params,\n ParamParseKey,\n PatchRoutesOnNavigationFunction,\n PatchRoutesOnNavigationFunctionArgs,\n Path,\n PathMatch,\n Pathname,\n PathParam,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RelativeRoutingType,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RouterProviderProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n ShouldRevalidateFunctionArgs,\n To,\n UIMatch,\n} from \"react-router\";\nexport {\n AbortedDeferredError,\n Await,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n Routes,\n createMemoryRouter,\n createPath,\n createRoutesFromChildren,\n createRoutesFromElements,\n defer,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n redirectDocument,\n replace,\n renderMatches,\n resolvePath,\n useActionData,\n useAsyncError,\n useAsyncValue,\n useBlocker,\n useHref,\n useInRouterContext,\n useLoaderData,\n useLocation,\n useMatch,\n useMatches,\n useNavigate,\n useNavigation,\n useNavigationType,\n useOutlet,\n useOutletContext,\n useParams,\n useResolvedPath,\n useRevalidator,\n useRouteError,\n useRouteLoaderData,\n useRoutes,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n UNSAFE_useRouteId,\n} from \"react-router\";\n//#endregion\n\ndeclare global {\n var __staticRouterHydrationData: HydrationState | undefined;\n var __reactRouterVersion: string;\n interface Document {\n startViewTransition(cb: () => Promise<void> | void): ViewTransition;\n }\n}\n\n// HEY YOU! DON'T TOUCH THIS VARIABLE!\n//\n// It is replaced with the proper version at build time via a babel plugin in\n// the rollup config.\n//\n// Export a global property onto the window for React Router detection by the\n// Core Web Vitals Technology Report. This way they can configure the `wappalyzer`\n// to detect and properly classify live websites as being built with React Router:\n// https://github.com/HTTPArchive/wappalyzer/blob/main/src/technologies/r.json\nconst REACT_ROUTER_VERSION = \"0\";\ntry {\n window.__reactRouterVersion = REACT_ROUTER_VERSION;\n} catch (e) {\n // no-op\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Routers\n////////////////////////////////////////////////////////////////////////////////\n\ninterface DOMRouterOpts {\n basename?: string;\n future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n hydrationData?: HydrationState;\n dataStrategy?: DataStrategyFunction;\n patchRoutesOnNavigation?: PatchRoutesOnNavigationFunction;\n window?: Window;\n}\n\nexport function createBrowserRouter(\n routes: RouteObject[],\n opts?: DOMRouterOpts\n): RemixRouter {\n return createRouter({\n basename: opts?.basename,\n future: {\n ...opts?.future,\n v7_prependBasename: true,\n },\n history: createBrowserHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || parseHydrationData(),\n routes,\n mapRouteProperties,\n dataStrategy: opts?.dataStrategy,\n patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n window: opts?.window,\n }).initialize();\n}\n\nexport function createHashRouter(\n routes: RouteObject[],\n opts?: DOMRouterOpts\n): RemixRouter {\n return createRouter({\n basename: opts?.basename,\n future: {\n ...opts?.future,\n v7_prependBasename: true,\n },\n history: createHashHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || parseHydrationData(),\n routes,\n mapRouteProperties,\n dataStrategy: opts?.dataStrategy,\n patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n window: opts?.window,\n }).initialize();\n}\n\nfunction parseHydrationData(): HydrationState | undefined {\n let state = window?.__staticRouterHydrationData;\n if (state && state.errors) {\n state = {\n ...state,\n errors: deserializeErrors(state.errors),\n };\n }\n return state;\n}\n\nfunction deserializeErrors(\n errors: RemixRouter[\"state\"][\"errors\"]\n): RemixRouter[\"state\"][\"errors\"] {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized: RemixRouter[\"state\"][\"errors\"] = {};\n for (let [key, val] of entries) {\n // Hey you! If you change this, please change the corresponding logic in\n // serializeErrors in react-router-dom/server.tsx :)\n if (val && val.__type === \"RouteErrorResponse\") {\n serialized[key] = new ErrorResponseImpl(\n val.status,\n val.statusText,\n val.data,\n val.internal === true\n );\n } else if (val && val.__type === \"Error\") {\n // Attempt to reconstruct the right type of Error (i.e., ReferenceError)\n if (val.__subType) {\n let ErrorConstructor = window[val.__subType];\n if (typeof ErrorConstructor === \"function\") {\n try {\n // @ts-expect-error\n let error = new ErrorConstructor(val.message);\n // Wipe away the client-side stack trace. Nothing to fill it in with\n // because we don't serialize SSR stack traces for security reasons\n error.stack = \"\";\n serialized[key] = error;\n } catch (e) {\n // no-op - fall through and create a normal Error\n }\n }\n }\n\n if (serialized[key] == null) {\n let error = new Error(val.message);\n // Wipe away the client-side stack trace. Nothing to fill it in with\n // because we don't serialize SSR stack traces for security reasons\n error.stack = \"\";\n serialized[key] = error;\n }\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Contexts\n////////////////////////////////////////////////////////////////////////////////\n\ntype ViewTransitionContextObject =\n | {\n isTransitioning: false;\n }\n | {\n isTransitioning: true;\n flushSync: boolean;\n currentLocation: Location;\n nextLocation: Location;\n };\n\nconst ViewTransitionContext = React.createContext<ViewTransitionContextObject>({\n isTransitioning: false,\n});\nif (__DEV__) {\n ViewTransitionContext.displayName = \"ViewTransition\";\n}\n\nexport { ViewTransitionContext as UNSAFE_ViewTransitionContext };\n\n// TODO: (v7) Change the useFetcher data from `any` to `unknown`\ntype FetchersContextObject = Map<string, any>;\n\nconst FetchersContext = React.createContext<FetchersContextObject>(new Map());\nif (__DEV__) {\n FetchersContext.displayName = \"Fetchers\";\n}\n\nexport { FetchersContext as UNSAFE_FetchersContext };\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\nconst FLUSH_SYNC = \"flushSync\";\nconst flushSyncImpl = ReactDOM[FLUSH_SYNC];\nconst USE_ID = \"useId\";\nconst useIdImpl = React[USE_ID];\n\nfunction startTransitionSafe(cb: () => void) {\n if (startTransitionImpl) {\n startTransitionImpl(cb);\n } else {\n cb();\n }\n}\n\nfunction flushSyncSafe(cb: () => void) {\n if (flushSyncImpl) {\n flushSyncImpl(cb);\n } else {\n cb();\n }\n}\n\ninterface ViewTransition {\n finished: Promise<void>;\n ready: Promise<void>;\n updateCallbackDone: Promise<void>;\n skipTransition(): void;\n}\n\nclass Deferred<T> {\n status: \"pending\" | \"resolved\" | \"rejected\" = \"pending\";\n promise: Promise<T>;\n // @ts-expect-error - no initializer\n resolve: (value: T) => void;\n // @ts-expect-error - no initializer\n reject: (reason?: unknown) => void;\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = (value) => {\n if (this.status === \"pending\") {\n this.status = \"resolved\";\n resolve(value);\n }\n };\n this.reject = (reason) => {\n if (this.status === \"pending\") {\n this.status = \"rejected\";\n reject(reason);\n }\n };\n });\n }\n}\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let [pendingState, setPendingState] = React.useState<RouterState>();\n let [vtContext, setVtContext] = React.useState<ViewTransitionContextObject>({\n isTransitioning: false,\n });\n let [renderDfd, setRenderDfd] = React.useState<Deferred<void>>();\n let [transition, setTransition] = React.useState<ViewTransition>();\n let [interruption, setInterruption] = React.useState<{\n state: RouterState;\n currentLocation: Location;\n nextLocation: Location;\n }>();\n let fetcherData = React.useRef<Map<string, any>>(new Map());\n let { v7_startTransition } = future || {};\n\n let optInStartTransition = React.useCallback(\n (cb: () => void) => {\n if (v7_startTransition) {\n startTransitionSafe(cb);\n } else {\n cb();\n }\n },\n [v7_startTransition]\n );\n\n let setState = React.useCallback<RouterSubscriber>(\n (\n newState: RouterState,\n {\n deletedFetchers,\n flushSync: flushSync,\n viewTransitionOpts: viewTransitionOpts,\n }\n ) => {\n deletedFetchers.forEach((key) => fetcherData.current.delete(key));\n newState.fetchers.forEach((fetcher, key) => {\n if (fetcher.data !== undefined) {\n fetcherData.current.set(key, fetcher.data);\n }\n });\n\n let isViewTransitionUnavailable =\n router.window == null ||\n router.window.document == null ||\n typeof router.window.document.startViewTransition !== \"function\";\n\n // If this isn't a view transition or it's not available in this browser,\n // just update and be done with it\n if (!viewTransitionOpts || isViewTransitionUnavailable) {\n if (flushSync) {\n flushSyncSafe(() => setStateImpl(newState));\n } else {\n optInStartTransition(() => setStateImpl(newState));\n }\n return;\n }\n\n // flushSync + startViewTransition\n if (flushSync) {\n // Flush through the context to mark DOM elements as transition=ing\n flushSyncSafe(() => {\n // Cancel any pending transitions\n if (transition) {\n renderDfd && renderDfd.resolve();\n transition.skipTransition();\n }\n setVtContext({\n isTransitioning: true,\n flushSync: true,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation,\n });\n });\n\n // Update the DOM\n let t = router.window!.document.startViewTransition(() => {\n flushSyncSafe(() => setStateImpl(newState));\n });\n\n // Clean up after the animation completes\n t.finished.finally(() => {\n flushSyncSafe(() => {\n setRenderDfd(undefined);\n setTransition(undefined);\n setPendingState(undefined);\n setVtContext({ isTransitioning: false });\n });\n });\n\n flushSyncSafe(() => setTransition(t));\n return;\n }\n\n // startTransition + startViewTransition\n if (transition) {\n // Interrupting an in-progress transition, cancel and let everything flush\n // out, and then kick off a new transition from the interruption state\n renderDfd && renderDfd.resolve();\n transition.skipTransition();\n setInterruption({\n state: newState,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation,\n });\n } else {\n // Completed navigation update with opted-in view transitions, let 'er rip\n setPendingState(newState);\n setVtContext({\n isTransitioning: true,\n flushSync: false,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation,\n });\n }\n },\n [router.window, transition, renderDfd, fetcherData, optInStartTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n // When we start a view transition, create a Deferred we can use for the\n // eventual \"completed\" render\n React.useEffect(() => {\n if (vtContext.isTransitioning && !vtContext.flushSync) {\n setRenderDfd(new Deferred<void>());\n }\n }, [vtContext]);\n\n // Once the deferred is created, kick off startViewTransition() to update the\n // DOM and then wait on the Deferred to resolve (indicating the DOM update has\n // happened)\n React.useEffect(() => {\n if (renderDfd && pendingState && router.window) {\n let newState = pendingState;\n let renderPromise = renderDfd.promise;\n let transition = router.window.document.startViewTransition(async () => {\n optInStartTransition(() => setStateImpl(newState));\n await renderPromise;\n });\n transition.finished.finally(() => {\n setRenderDfd(undefined);\n setTransition(undefined);\n setPendingState(undefined);\n setVtContext({ isTransitioning: false });\n });\n setTransition(transition);\n }\n }, [optInStartTransition, pendingState, renderDfd, router.window]);\n\n // When the new location finally renders and is committed to the DOM, this\n // effect will run to resolve the transition\n React.useEffect(() => {\n if (\n renderDfd &&\n pendingState &&\n state.location.key === pendingState.location.key\n ) {\n renderDfd.resolve();\n }\n }, [renderDfd, transition, state.location, pendingState]);\n\n // If we get interrupted with a new navigation during a transition, we skip\n // the active transition, let it cleanup, then kick it off again here\n React.useEffect(() => {\n if (!vtContext.isTransitioning && interruption) {\n setPendingState(interruption.state);\n setVtContext({\n isTransitioning: true,\n flushSync: false,\n currentLocation: interruption.currentLocation,\n nextLocation: interruption.nextLocation,\n });\n setInterruption(undefined);\n }\n }, [vtContext.isTransitioning, interruption]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`<RouterProvider fallbackElement>` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n let routerFuture = React.useMemo<RouterProps[\"future\"]>(\n () => ({\n v7_relativeSplatPath: router.future.v7_relativeSplatPath,\n }),\n [router.future.v7_relativeSplatPath]\n );\n\n React.useEffect(\n () => logV6DeprecationWarnings(future, router.future),\n [future, router.future]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a <script> here\n // containing the hydrated server-side staticContext (from StaticRouterProvider).\n // useId relies on the component tree structure to generate deterministic id's\n // so we need to ensure it remains the same on the client even though\n // we don't need the <script> tag\n return (\n <>\n <DataRouterContext.Provider value={dataRouterContext}>\n <DataRouterStateContext.Provider value={state}>\n <FetchersContext.Provider value={fetcherData.current}>\n <ViewTransitionContext.Provider value={vtContext}>\n <Router\n basename={basename}\n location={state.location}\n navigationType={state.historyAction}\n navigator={navigator}\n future={routerFuture}\n >\n {state.initialized || router.future.v7_partialHydration ? (\n <MemoizedDataRoutes\n routes={router.routes}\n future={router.future}\n state={state}\n />\n ) : (\n fallbackElement\n )}\n </Router>\n </ViewTransitionContext.Provider>\n </FetchersContext.Provider>\n </DataRouterStateContext.Provider>\n </DataRouterContext.Provider>\n {null}\n </>\n );\n}\n\n// Memoize to avoid re-renders when updating `ViewTransitionContext`\nconst MemoizedDataRoutes = React.memo(DataRoutes);\n\nfunction DataRoutes({\n routes,\n future,\n state,\n}: {\n routes: DataRouteObject[];\n future: RemixRouter[\"future\"];\n state: RouterState;\n}): React.ReactElement | null {\n return useRoutesImpl(routes, undefined, state, future);\n}\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n future?: Partial<FutureConfig>;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n future,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef<BrowserHistory>();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window, v5Compat: true });\n }\n\n let history = historyRef.current;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location,\n });\n let { v7_startTransition } = future || {};\n let setState = React.useCallback(\n (newState: { action: NavigationType; location: Location }) => {\n v7_startTransition && startTransitionImpl\n ? startTransitionImpl(() => setStateImpl(newState))\n : setStateImpl(newState);\n },\n [setStateImpl, v7_startTransition]\n );\n\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n React.useEffect(() => logV6DeprecationWarnings(future), [future]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n future={future}\n />\n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n future?: Partial<FutureConfig>;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({\n basename,\n children,\n future,\n window,\n}: HashRouterProps) {\n let historyRef = React.useRef<HashHistory>();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window, v5Compat: true });\n }\n\n let history = historyRef.current;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location,\n });\n let { v7_startTransition } = future || {};\n let setState = React.useCallback(\n (newState: { action: NavigationType; location: Location }) => {\n v7_startTransition && startTransitionImpl\n ? startTransitionImpl(() => setStateImpl(newState))\n : setStateImpl(newState);\n },\n [setStateImpl, v7_startTransition]\n );\n\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n React.useEffect(() => logV6DeprecationWarnings(future), [future]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n future={future}\n />\n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n future?: FutureConfig;\n history: History;\n}\n\n/**\n * A `<Router>` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({\n basename,\n children,\n future,\n history,\n}: HistoryRouterProps) {\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location,\n });\n let { v7_startTransition } = future || {};\n let setState = React.useCallback(\n (newState: { action: NavigationType; location: Location }) => {\n v7_startTransition && startTransitionImpl\n ? startTransitionImpl(() => setStateImpl(newState))\n : setStateImpl(newState);\n },\n [setStateImpl, v7_startTransition]\n );\n\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n React.useEffect(() => logV6DeprecationWarnings(future), [future]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n future={future}\n />\n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nexport interface LinkProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n to: To;\n viewTransition?: boolean;\n}\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\";\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\n/**\n * The public API for rendering a history-aware `<a>`.\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function LinkWithRef(\n {\n onClick,\n relative,\n reloadDocument,\n replace,\n state,\n target,\n to,\n preventScrollReset,\n viewTransition,\n ...rest\n },\n ref\n ) {\n let { basename } = React.useContext(NavigationContext);\n\n // Rendered into <a href> for absolute URLs\n let absoluteHref;\n let isExternal = false;\n\n if (typeof to === \"string\" && ABSOLUTE_URL_REGEX.test(to)) {\n // Render the absolute href server- and client-side\n absoluteHref = to;\n\n // Only check for external origins client-side\n if (isBrowser) {\n try {\n let currentUrl = new URL(window.location.href);\n let targetUrl = to.startsWith(\"//\")\n ? new URL(currentUrl.protocol + to)\n : new URL(to);\n let path = stripBasename(targetUrl.pathname, basename);\n\n if (targetUrl.origin === currentUrl.origin && path != null) {\n // Strip the protocol/origin/basename for same-origin absolute URLs\n to = path + targetUrl.search + targetUrl.hash;\n } else {\n isExternal = true;\n }\n } catch (e) {\n // We can't do external URL detection without a valid URL\n warning(\n false,\n `<Link to=\"${to}\"> contains an invalid URL which will probably break ` +\n `when clicked - please update to a valid URL path.`\n );\n }\n }\n }\n\n // Rendered into <a href> for relative URLs\n let href = useHref(to, { relative });\n\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n preventScrollReset,\n relative,\n viewTransition,\n });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={absoluteHref || href}\n onClick={isExternal || reloadDocument ? onClick : handleClick}\n ref={ref}\n target={target}\n />\n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport type NavLinkRenderProps = {\n isActive: boolean;\n isPending: boolean;\n isTransitioning: boolean;\n};\n\nexport interface NavLinkProps\n extends Omit<LinkProps, \"className\" | \"style\" | \"children\"> {\n children?: React.ReactNode | ((props: NavLinkRenderProps) => React.ReactNode);\n caseSensitive?: boolean;\n className?: string | ((props: NavLinkRenderProps) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: NavLinkRenderProps) => React.CSSProperties | undefined);\n}\n\n/**\n * A `<Link>` wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef<HTMLAnchorElement, NavLinkProps>(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n viewTransition,\n children,\n ...rest\n },\n ref\n ) {\n let path = useResolvedPath(to, { relative: rest.relative });\n let location = useLocation();\n let routerState = React.useContext(DataRouterStateContext);\n let { navigator, basename } = React.useContext(NavigationContext);\n let isTransitioning =\n routerState != null &&\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useViewTransitionState(path) &&\n viewTransition === true;\n\n let toPathname = navigator.encodeLocation\n ? navigator.encodeLocation(path).pathname\n : path.pathname;\n let locationPathname = location.pathname;\n let nextLocationPathname =\n routerState && routerState.navigation && routerState.navigation.location\n ? routerState.navigation.location.pathname\n : null;\n\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n nextLocationPathname = nextLocationPathname\n ? nextLocationPathname.toLowerCase()\n : null;\n toPathname = toPathname.toLowerCase();\n }\n\n if (nextLocationPathname && basename) {\n nextLocationPathname =\n stripBasename(nextLocationPathname, basename) || nextLocationPathname;\n }\n\n // If the `to` has a trailing slash, look at that exact spot. Otherwise,\n // we're looking for a slash _after_ what's in `to`. For example:\n //\n // <NavLink to=\"/users\"> and <NavLink to=\"/users/\">\n // both want to look for a / at index 6 to match URL `/users/matt`\n const endSlashPosition =\n toPathname !== \"/\" && toPathname.endsWith(\"/\")\n ? toPathname.length - 1\n : toPathname.length;\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(endSlashPosition) === \"/\");\n\n let isPending =\n nextLocationPathname != null &&\n (nextLocationPathname === toPathname ||\n (!end &&\n nextLocationPathname.startsWith(toPathname) &&\n nextLocationPathname.charAt(toPathname.length) === \"/\"));\n\n let renderProps = {\n isActive,\n isPending,\n isTransitioning,\n };\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp(renderProps);\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for <NavLink />s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [\n classNameProp,\n isActive ? \"active\" : null,\n isPending ? \"pending\" : null,\n isTransitioning ? \"transitioning\" : null,\n ]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\" ? styleProp(renderProps) : styleProp;\n\n return (\n <Link\n {...rest}\n aria-current={ariaCurrent}\n className={className}\n ref={ref}\n style={style}\n to={to}\n viewTransition={viewTransition}\n >\n {typeof children === \"function\" ? children(renderProps) : children}\n </Link>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\n/**\n * Form props shared by navigations and fetchers\n */\ninterface SharedFormProps extends React.FormHTMLAttributes<HTMLFormElement> {\n /**\n * The HTTP verb to use when the form is submit. Supports \"get\", \"post\",\n * \"put\", \"delete\", \"patch\".\n */\n method?: HTMLFormMethod;\n\n /**\n * `<form encType>` - enhancing beyond the normal string type and limiting\n * to the built-in browser supported values\n */\n encType?:\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"text/plain\";\n\n /**\n * Normal `<form action>` but supports React Router's relative paths.\n */\n action?: string;\n\n /**\n * Determines whether the form action is relative to the route hierarchy or\n * the pathname. Use this if you want to opt out of navigating the route\n * hierarchy and want to instead route based on /-delimited URL segments\n */\n relative?: RelativeRoutingType;\n\n /**\n * Prevent the scroll position from resetting to the top of the viewport on\n * completion of the navigation when using the <ScrollRestoration> component\n */\n preventScrollReset?: boolean;\n\n /**\n * A function to call when the form is submitted. If you call\n * `event.preventDefault()` then this form will not do anything.\n */\n onSubmit?: React.FormEventHandler<HTMLFormElement>;\n}\n\n/**\n * Form props available to fetchers\n */\nexport interface FetcherFormProps extends SharedFormProps {}\n\n/**\n * Form props available to navigations\n */\nexport interface FormProps extends SharedFormProps {\n /**\n * Indicate a specific fetcherKey to use when using navigate=false\n */\n fetcherKey?: string;\n\n /**\n * navigate=false will use a fetcher instead of a navigation\n */\n navigate?: boolean;\n\n /**\n * Forces a full document navigation instead of a fetch.\n */\n reloadDocument?: boolean;\n\n /**\n * Replaces the current entry in the browser history stack when the form\n * navigates. Use this if you don't want the user to be able to click \"back\"\n * to the page with the form on it.\n */\n replace?: boolean;\n\n /**\n * State object to add to the history stack entry for this navigation\n */\n state?: any;\n\n /**\n * Enable view transitions on this Form navigation\n */\n viewTransition?: boolean;\n}\n\ntype HTMLSubmitEvent = React.BaseSyntheticEvent<\n SubmitEvent,\n Event,\n HTMLFormElement\n>;\n\ntype HTMLFormSubmitter = HTMLButtonElement | HTMLInputElement;\n\n/**\n * A `@remix-run/router`-aware `<form>`. It behaves like a normal form except\n * that the interaction with the server is with `fetch` instead of new document\n * requests, allowing components to add nicer UX to the page as the form is\n * submitted and returns with data.\n */\nexport const Form = React.forwardRef<HTMLFormElement, FormProps>(\n (\n {\n fetcherKey,\n navigate,\n reloadDocument,\n replace,\n state,\n method = defaultMethod,\n action,\n onSubmit,\n relative,\n preventScrollReset,\n viewTransition,\n ...props\n },\n forwardedRef\n ) => {\n let submit = useSubmit();\n let formAction = useFormAction(action, { relative });\n let formMethod: HTMLFormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n\n let submitHandler: React.FormEventHandler<HTMLFormElement> = (event) => {\n onSubmit && onSubmit(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n\n let submitter = (event as unknown as HTMLSubmitEvent).nativeEvent\n .submitter as HTMLFormSubmitter | null;\n\n let submitMethod =\n (submitter?.getAttribute(\"formmethod\") as HTMLFormMethod | undefined) ||\n method;\n\n submit(submitter || event.currentTarget, {\n fetcherKey,\n method: submitMethod,\n navigate,\n replace,\n state,\n relative,\n preventScrollReset,\n viewTransition,\n });\n };\n\n return (\n <form\n ref={forwardedRef}\n method={formMethod}\n action={formAction}\n onSubmit={reloadDocument ? onSubmit : submitHandler}\n {...props}\n />\n );\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\nexport interface ScrollRestorationProps {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n}\n\n/**\n * This component will emulate the browser's scroll restoration on location\n * changes.\n */\nexport function ScrollRestoration({\n getKey,\n storageKey,\n}: ScrollRestorationProps) {\n useScrollRestoration({ getKey, storageKey });\n return null;\n}\n\nif (__DEV__) {\n ScrollRestoration.displayName = \"ScrollRestoration\";\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hooks\n////////////////////////////////////////////////////////////////////////////////\n\nenum DataRouterHook {\n UseScrollRestoration = \"useScrollRestoration\",\n UseSubmit = \"useSubmit\",\n UseSubmitFetcher = \"useSubmitFetcher\",\n UseFetcher = \"useFetcher\",\n useViewTransitionState = \"useViewTransitionState\",\n}\n\nenum DataRouterStateHook {\n UseFetcher = \"useFetcher\",\n UseFetchers = \"useFetchers\",\n UseScrollRestoration = \"useScrollRestoration\",\n}\n\n// Internal hooks\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/v6/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\n// External hooks\n\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\nexport function useLinkClickHandler<E extends Element = HTMLAnchorElement>(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n preventScrollReset,\n relative,\n viewTransition,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n viewTransition?: boolean;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to, { relative });\n\n return React.useCallback(\n (event: React.MouseEvent<E, MouseEvent>) => {\n if (shouldProcessLinkClick(event, target)) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular <a> will do a replace instead of\n // a push, so do the same here unless the replace prop is explicitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, {\n replace,\n state,\n preventScrollReset,\n relative,\n viewTransition,\n });\n }\n },\n [\n location,\n navigate,\n path,\n replaceProp,\n state,\n target,\n to,\n preventScrollReset,\n relative,\n viewTransition,\n ]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(\n defaultInit?: URLSearchParamsInit\n): [URLSearchParams, SetURLSearchParams] {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n let hasSetSearchParamsRef = React.useRef(false);\n\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n // Only merge in the defaults if we haven't yet called setSearchParams.\n // Once we call that we want those to take precedence, otherwise you can't\n // remove a param with setSearchParams({}) if it has an initial value\n getSearchParamsForLocation(\n location.search,\n hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current\n ),\n [location.search]\n );\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback<SetURLSearchParams>(\n (nextInit, navigateOptions) => {\n const newSearchParams = createSearchParams(\n typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit\n );\n hasSetSearchParamsRef.current = true;\n navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\nexport type SetURLSearchParams = (\n nextInit?:\n | URLSearchParamsInit\n | ((prev: URLSearchParams) => URLSearchParamsInit),\n navigateOpts?: NavigateOptions\n) => void;\n\n/**\n * Submits a HTML `<form>` to the server without reloading the page.\n */\nexport interface SubmitFunction {\n (\n /**\n * Specifies the `<form>` to be submitted to the server, a specific\n * `<button>` or `<input type=\"submit\">` to use to submit the form, or some\n * arbitrary data to submit.\n *\n * Note: When using a `<button>` its `name` and `value` will also be\n * included in the form data that is submitted.\n */\n target: SubmitTarget,\n\n /**\n * Options that override the `<form>`'s own attributes. Required when\n * submitting arbitrary data without a backing `<form>`.\n */\n options?: SubmitOptions\n ): void;\n}\n\n/**\n * Submits a fetcher `<form>` to the server without reloading the page.\n */\nexport interface FetcherSubmitFunction {\n (\n target: SubmitTarget,\n // Fetchers cannot replace or set state because they are not navigation events\n options?: FetcherSubmitOptions\n ): void;\n}\n\nfunction validateClientSideSubmission() {\n if (typeof document === \"undefined\") {\n throw new Error(\n \"You are calling submit during the server render. \" +\n \"Try calling submit within a `useEffect` or callback instead.\"\n );\n }\n}\n\nlet fetcherId = 0;\nlet getUniqueFetcherId = () => `__${String(++fetcherId)}__`;\n\n/**\n * Returns a function that may be used to programmatically submit a form (or\n * some arbitrary data) to the server.\n */\nexport function useSubmit(): SubmitFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseSubmit);\n let { basename } = React.useContext(NavigationContext);\n let currentRouteId = useRouteId();\n\n return React.useCallback<SubmitFunction>(\n (target, options = {}) => {\n validateClientSideSubmission();\n\n let { action, method, encType, formData, body } = getFormSubmissionInfo(\n target,\n basename\n );\n\n if (options.navigate === false) {\n let key = options.fetcherKey || getUniqueFetcherId();\n router.fetch(key, currentRouteId, options.action || action, {\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || (method as HTMLFormMethod),\n formEncType: options.encType || (encType as FormEncType),\n flushSync: options.flushSync,\n });\n } else {\n router.navigate(options.action || action, {\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || (method as HTMLFormMethod),\n formEncType: options.encType || (encType as FormEncType),\n replace: options.replace,\n state: options.state,\n fromRouteId: currentRouteId,\n flushSync: options.flushSync,\n viewTransition: options.viewTransition,\n });\n }\n },\n [router, basename, currentRouteId]\n );\n}\n\n// v7: Eventually we should deprecate this entirely in favor of using the\n// router method directly?\nexport function useFormAction(\n action?: string,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n let { basename } = React.useContext(NavigationContext);\n let routeContext = React.useContext(RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n let [match] = routeContext.matches.slice(-1);\n // Shallow clone path so we can modify it below, otherwise we modify the\n // object referenced by useMemo inside useResolvedPath\n let path = { ...useResolvedPath(action ? action : \".\", { relative }) };\n\n // If no action was specified, browsers will persist current search params\n // when determining the path, so match that behavior\n // https://github.com/remix-run/remix/issues/927\n let location = useLocation();\n if (action == null) {\n // Safe to write to this directly here since if action was undefined, we\n // would have called useResolvedPath(\".\") which will never include a search\n path.search = location.search;\n\n // When grabbing search params from the URL, remove any included ?index param\n // since it might not apply to our contextual route. We add it back based\n // on match.route.index below\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n let hasNakedIndexParam = indexValues.some((v) => v === \"\");\n if (hasNakedIndexParam) {\n params.delete(\"index\");\n indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? `?${qs}` : \"\";\n }\n }\n\n if ((!action || action === \".\") && match.route.index) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the form action. If this is a root navigation, then just use\n // the raw basename which allows the basename to have full control over the\n // presence of a trailing slash on root actions\n if (basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\nexport type FetcherWithComponents<TData> = Fetcher<TData> & {\n Form: React.ForwardRefExoticComponent<\n FetcherFormProps & React.RefAttributes<HTMLFormElement>\n >;\n submit: FetcherSubmitFunction;\n load: (href: string, opts?: { flushSync?: boolean }) => void;\n};\n\n// TODO: (v7) Change the useFetcher generic default from `any` to `unknown`\n\n/**\n * Interacts with route loaders and actions without causing a navigation. Great\n * for any interaction that stays on the same page.\n */\nexport function useFetcher<TData = any>({\n key,\n}: { key?: string } = {}): FetcherWithComponents<TData> {\n let { router } = useDataRouterContext(DataRouterHook.UseFetcher);\n let state = useDataRouterState(DataRouterStateHook.UseFetcher);\n let fetcherData = React.useContext(FetchersContext);\n let route = React.useContext(RouteContext);\n let routeId = route.matches[route.matches.length - 1]?.route.id;\n\n invariant(fetcherData, `useFetcher must be used inside a FetchersContext`);\n invariant(route, `useFetcher must be used inside a RouteContext`);\n invariant(\n routeId != null,\n `useFetcher can only be used on routes that contain a unique \"id\"`\n );\n\n // Fetcher key handling\n // OK to call conditionally to feature detect `useId`\n // eslint-disable-next-line react-hooks/rules-of-hooks\n let defaultKey = useIdImpl ? useIdImpl() : \"\";\n let [fetcherKey, setFetcherKey] = React.useState<string>(key || defaultKey);\n if (key && key !== fetcherKey) {\n setFetcherKey(key);\n } else if (!fetcherKey) {\n // We will only fall through here when `useId` is not available\n setFetcherKey(getUniqueFetcherId());\n }\n\n // Registration/cleanup\n React.useEffect(() => {\n router.getFetcher(fetcherKey);\n return () => {\n // Tell the router we've unmounted - if v7_fetcherPersist is enabled this\n // will not delete immediately but instead queue up a delete after the\n // fetcher returns to an `idle` state\n router.deleteFetcher(fetcherKey);\n };\n }, [router, fetcherKey]);\n\n // Fetcher additions\n let load = React.useCallback(\n (href: string, opts?: { flushSync?: boolean }) => {\n invariant(routeId, \"No routeId available for fetcher.load()\");\n router.fetch(fetcherKey, routeId, href, opts);\n },\n [fetcherKey, routeId, router]\n );\n\n let submitImpl = useSubmit();\n let submit = React.useCallback<FetcherSubmitFunction>(\n (target, opts) => {\n submitImpl(target, {\n ...opts,\n navigate: false,\n fetcherKey,\n });\n },\n [fetcherKey, submitImpl]\n );\n\n let FetcherForm = React.useMemo(() => {\n let FetcherForm = React.forwardRef<HTMLFormElement, FetcherFormProps>(\n (props, ref) => {\n return (\n <Form {...props} navigate={false} fetcherKey={fetcherKey} ref={ref} />\n );\n }\n );\n if (__DEV__) {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n }, [fetcherKey]);\n\n // Exposed FetcherWithComponents\n let fetcher = state.fetchers.get(fetcherKey) || IDLE_FETCHER;\n let data = fetcherData.get(fetcherKey);\n let fetcherWithComponents = React.useMemo(\n () => ({\n Form: FetcherForm,\n submit,\n load,\n ...fetcher,\n data,\n }),\n [FetcherForm, submit, load, fetcher, data]\n );\n\n return fetcherWithComponents;\n}\n\n/**\n * Provides all fetchers currently on the page. Useful for layouts and parent\n * routes that need to provide pending/optimistic UI regarding the fetch.\n */\nexport function useFetchers(): (Fetcher & { key: string })[] {\n let state = useDataRouterState(DataRouterStateHook.UseFetchers);\n return Array.from(state.fetchers.entries()).map(([key, fetcher]) => ({\n ...fetcher,\n key,\n }));\n}\n\nconst SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nlet savedScrollPositions: Record<string, number> = {};\n\n/**\n * When rendered inside a RouterProvider, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n getKey,\n storageKey,\n}: {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n} = {}) {\n let { router } = useDataRouterContext(DataRouterHook.UseScrollRestoration);\n let { restoreScrollPosition, preventScrollReset } = useDataRouterState(\n DataRouterStateHook.UseScrollRestoration\n );\n let { basename } = React.useContext(NavigationContext);\n let location = useLocation();\n let matches = useMatches();\n let navigation = useNavigation();\n\n // Trigger manual scroll restoration while we're active\n React.useEffect(() => {\n window.history.scrollRestoration = \"manual\";\n return () => {\n window.history.scrollRestoration = \"auto\";\n };\n }, []);\n\n // Save positions on pagehide\n usePageHide(\n React.useCallback(() => {\n if (navigation.state === \"idle\") {\n let key = (getKey ? getKey(location, matches) : null) || location.key;\n savedScrollPositions[key] = window.scrollY;\n }\n try {\n sessionStorage.setItem(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY,\n JSON.stringify(savedScrollPositions)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${error}).`\n );\n }\n window.history.scrollRestoration = \"auto\";\n }, [storageKey, getKey, navigation.state, location, matches])\n );\n\n // Read in any saved scroll locations\n if (typeof document !== \"undefined\") {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n try {\n let sessionPositions = sessionStorage.getItem(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY\n );\n if (sessionPositions) {\n savedScrollPositions = JSON.parse(sessionPositions);\n }\n } catch (e) {\n // no-op, use default empty object\n }\n }, [storageKey]);\n\n // Enable scroll restoration in the router\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n let getKeyWithoutBasename: GetScrollRestorationKeyFunction | undefined =\n getKey && basename !== \"/\"\n ? (location, matches) =>\n getKey(\n // Strip the basename to match useLocation()\n {\n ...location,\n pathname:\n stripBasename(location.pathname, basename) ||\n location.pathname,\n },\n matches\n )\n : getKey;\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKeyWithoutBasename\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, basename, getKey]);\n\n // Restore scrolling when state.restoreScrollPosition changes\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n // Explicit false means don't do anything (used for submissions)\n if (restoreScrollPosition === false) {\n return;\n }\n\n // been here before, scroll to it\n if (typeof restoreScrollPosition === \"number\") {\n window.scrollTo(0, restoreScrollPosition);\n return;\n }\n\n // try to scroll to the hash\n if (location.hash) {\n let el = document.getElementById(\n decodeURIComponent(location.hash.slice(1))\n );\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n\n // Don't reset if this navigation opted out\n if (preventScrollReset === true) {\n return;\n }\n\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, preventScrollReset]);\n }\n}\n\nexport { useScrollRestoration as UNSAFE_useScrollRestoration };\n\n/**\n * Setup a callback to be fired on the window's `beforeunload` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nexport function useBeforeUnload(\n callback: (event: BeforeUnloadEvent) => any,\n options?: { capture?: boolean }\n): void {\n let { capture } = options || {};\n React.useEffect(() => {\n let opts = capture != null ? { capture } : undefined;\n window.addEventListener(\"beforeunload\", callback, opts);\n return () => {\n window.removeEventListener(\"beforeunload\", callback, opts);\n };\n }, [callback, capture]);\n}\n\n/**\n * Setup a callback to be fired on the window's `pagehide` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes. This event is better supported than beforeunload across browsers.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nfunction usePageHide(\n callback: (event: PageTransitionEvent) => any,\n options?: { capture?: boolean }\n): void {\n let { capture } = options || {};\n React.useEffect(() => {\n let opts = capture != null ? { capture } : undefined;\n window.addEventListener(\"pagehide\", callback, opts);\n return () => {\n window.removeEventListener(\"pagehide\", callback, opts);\n };\n }, [callback, capture]);\n}\n\n/**\n * Wrapper around useBlocker to show a window.confirm prompt to users instead\n * of building a custom UI with useBlocker.\n *\n * Warning: This has *a lot of rough edges* and behaves very differently (and\n * very incorrectly in some cases) across browsers if user click addition\n * back/forward navigations while the confirm is open. Use at your own risk.\n */\nfunction usePrompt({\n when,\n message,\n}: {\n when: boolean | BlockerFunction;\n message: string;\n}) {\n let blocker = useBlocker(when);\n\n React.useEffect(() => {\n if (blocker.state === \"blocked\") {\n let proceed = window.confirm(message);\n if (proceed) {\n // This timeout is needed to avoid a weird \"race\" on POP navigations\n // between the `window.history` revert navigation and the result of\n // `window.confirm`\n setTimeout(blocker.proceed, 0);\n } else {\n blocker.reset();\n }\n }\n }, [blocker, message]);\n\n React.useEffect(() => {\n if (blocker.state === \"blocked\" && !when) {\n blocker.reset();\n }\n }, [blocker, when]);\n}\n\nexport { usePrompt as unstable_usePrompt };\n\n/**\n * Return a boolean indicating if there is an active view transition to the\n * given href. You can use this value to render CSS classes or viewTransitionName\n * styles onto your elements\n *\n * @param href The destination href\n * @param [opts.relative] Relative routing type (\"route\" | \"path\")\n */\nfunction useViewTransitionState(\n to: To,\n opts: { relative?: RelativeRoutingType } = {}\n) {\n let vtContext = React.useContext(ViewTransitionContext);\n\n invariant(\n vtContext != null,\n \"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. \" +\n \"Did you accidentally import `RouterProvider` from `react-router`?\"\n );\n\n let { basename } = useDataRouterContext(\n DataRouterHook.useViewTransitionState\n );\n let path = useResolvedPath(to, { relative: opts.relative });\n if (!vtContext.isTransitioning) {\n return false;\n }\n\n let currentPath =\n stripBasename(vtContext.currentLocation.pathname, basename) ||\n vtContext.currentLocation.pathname;\n let nextPath =\n stripBasename(vtContext.nextLocation.pathname, basename) ||\n vtContext.nextLocation.pathname;\n\n // Transition is active if we're going to or coming from the indicated\n // destination. This ensures that other PUSH navigations that reverse\n // an indicated transition apply. I.e., on the list view you have:\n //\n // <NavLink to=\"/details/1\" viewTransition>\n //\n // If you click the breadcrumb back to the list view:\n //\n // <NavLink to=\"/list\" viewTransition>\n //\n // We should apply the transition because it's indicated as active going\n // from /list -> /details/1 and therefore should be active on the reverse\n // (even though this isn't strictly a POP reverse)\n return (\n matchPath(path.pathname, nextPath) != null ||\n matchPath(path.pathname, currentPath) != null\n );\n}\n\nexport { useViewTransitionState as useViewTransitionState };\n\n//#endregion\n","import * as React from 'react';\nconst ThemeContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'ThemeContext';\n}\nexport default ThemeContext;","import * as React from 'react';\nimport ThemeContext from './ThemeContext';\nexport default function useTheme() {\n const theme = React.useContext(ThemeContext);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n return theme;\n}","const hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@mui/utils';\nimport ThemeContext from '../useTheme/ThemeContext';\nimport useTheme from '../useTheme';\nimport nested from './nested';\n\n// To support composition of theme.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mergeOuterLocalTheme(outerTheme, localTheme) {\n if (typeof localTheme === 'function') {\n const mergedTheme = localTheme(outerTheme);\n if (process.env.NODE_ENV !== 'production') {\n if (!mergedTheme) {\n console.error(['MUI: You should return an object from your theme function, i.e.', '<ThemeProvider theme={() => ({})} />'].join('\\n'));\n }\n }\n return mergedTheme;\n }\n return _extends({}, outerTheme, localTheme);\n}\n\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\nfunction ThemeProvider(props) {\n const {\n children,\n theme: localTheme\n } = props;\n const outerTheme = useTheme();\n if (process.env.NODE_ENV !== 'production') {\n if (outerTheme === null && typeof localTheme === 'function') {\n console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n }\n }\n const theme = React.useMemo(() => {\n const output = outerTheme === null ? localTheme : mergeOuterLocalTheme(outerTheme, localTheme);\n if (output != null) {\n output[nested] = outerTheme !== null;\n }\n return output;\n }, [localTheme, outerTheme]);\n return /*#__PURE__*/_jsx(ThemeContext.Provider, {\n value: theme,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n /**\n * A theme object. You can provide a function to extend the outer theme.\n */\n theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\nexport default ThemeProvider;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { ThemeProvider as MuiThemeProvider, useTheme as usePrivateTheme } from '@mui/private-theming';\nimport exactProp from '@mui/utils/exactProp';\nimport { ThemeContext as StyledEngineThemeContext } from '@mui/styled-engine';\nimport useThemeWithoutDefault from '../useThemeWithoutDefault';\nimport RtlProvider from '../RtlProvider';\nimport DefaultPropsProvider from '../DefaultPropsProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst EMPTY_THEME = {};\nfunction useThemeScoping(themeId, upperTheme, localTheme, isPrivate = false) {\n return React.useMemo(() => {\n const resolvedTheme = themeId ? upperTheme[themeId] || upperTheme : upperTheme;\n if (typeof localTheme === 'function') {\n const mergedTheme = localTheme(resolvedTheme);\n const result = themeId ? _extends({}, upperTheme, {\n [themeId]: mergedTheme\n }) : mergedTheme;\n // must return a function for the private theme to NOT merge with the upper theme.\n // see the test case \"use provided theme from a callback\" in ThemeProvider.test.js\n if (isPrivate) {\n return () => result;\n }\n return result;\n }\n return themeId ? _extends({}, upperTheme, {\n [themeId]: localTheme\n }) : _extends({}, upperTheme, localTheme);\n }, [themeId, upperTheme, localTheme, isPrivate]);\n}\n\n/**\n * This component makes the `theme` available down the React tree.\n * It should preferably be used at **the root of your component tree**.\n *\n * <ThemeProvider theme={theme}> // existing use case\n * <ThemeProvider theme={{ id: theme }}> // theme scoping\n */\nfunction ThemeProvider(props) {\n const {\n children,\n theme: localTheme,\n themeId\n } = props;\n const upperTheme = useThemeWithoutDefault(EMPTY_THEME);\n const upperPrivateTheme = usePrivateTheme() || EMPTY_THEME;\n if (process.env.NODE_ENV !== 'production') {\n if (upperTheme === null && typeof localTheme === 'function' || themeId && upperTheme && !upperTheme[themeId] && typeof localTheme === 'function') {\n console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n }\n }\n const engineTheme = useThemeScoping(themeId, upperTheme, localTheme);\n const privateTheme = useThemeScoping(themeId, upperPrivateTheme, localTheme, true);\n const rtlValue = engineTheme.direction === 'rtl';\n return /*#__PURE__*/_jsx(MuiThemeProvider, {\n theme: privateTheme,\n children: /*#__PURE__*/_jsx(StyledEngineThemeContext.Provider, {\n value: engineTheme,\n children: /*#__PURE__*/_jsx(RtlProvider, {\n value: rtlValue,\n children: /*#__PURE__*/_jsx(DefaultPropsProvider, {\n value: engineTheme == null ? void 0 : engineTheme.components,\n children: children\n })\n })\n })\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────â”\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n /**\n * A theme object. You can provide a function to extend the outer theme.\n */\n theme: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n /**\n * The design system's unique id for getting the corresponded theme when there are multiple design systems.\n */\n themeId: PropTypes.string\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\nexport default ThemeProvider;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"theme\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { ThemeProvider as SystemThemeProvider } from '@mui/system';\nimport THEME_ID from './identifier';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function ThemeProvider(_ref) {\n let {\n theme: themeInput\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const scopedTheme = themeInput[THEME_ID];\n return /*#__PURE__*/_jsx(SystemThemeProvider, _extends({}, props, {\n themeId: scopedTheme ? THEME_ID : undefined,\n theme: scopedTheme || themeInput\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n /**\n * A theme object. You can provide a function to extend the outer theme.\n */\n theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport GlobalStyles from '../GlobalStyles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const html = (theme, enableColorScheme) => _extends({\n WebkitFontSmoothing: 'antialiased',\n // Antialiasing.\n MozOsxFontSmoothing: 'grayscale',\n // Antialiasing.\n // Change from `box-sizing: content-box` so that `width`\n // is not affected by `padding` or `border`.\n boxSizing: 'border-box',\n // Fix font resize problem in iOS\n WebkitTextSizeAdjust: '100%'\n}, enableColorScheme && !theme.vars && {\n colorScheme: theme.palette.mode\n});\nexport const body = theme => _extends({\n color: (theme.vars || theme).palette.text.primary\n}, theme.typography.body1, {\n backgroundColor: (theme.vars || theme).palette.background.default,\n '@media print': {\n // Save printer ink.\n backgroundColor: (theme.vars || theme).palette.common.white\n }\n});\nexport const styles = (theme, enableColorScheme = false) => {\n var _theme$components;\n const colorSchemeStyles = {};\n if (enableColorScheme && theme.colorSchemes) {\n Object.entries(theme.colorSchemes).forEach(([key, scheme]) => {\n var _scheme$palette;\n colorSchemeStyles[theme.getColorSchemeSelector(key).replace(/\\s*&/, '')] = {\n colorScheme: (_scheme$palette = scheme.palette) == null ? void 0 : _scheme$palette.mode\n };\n });\n }\n let defaultStyles = _extends({\n html: html(theme, enableColorScheme),\n '*, *::before, *::after': {\n boxSizing: 'inherit'\n },\n 'strong, b': {\n fontWeight: theme.typography.fontWeightBold\n },\n body: _extends({\n margin: 0\n }, body(theme), {\n // Add support for document.body.requestFullScreen().\n // Other elements, if background transparent, are not supported.\n '&::backdrop': {\n backgroundColor: (theme.vars || theme).palette.background.default\n }\n })\n }, colorSchemeStyles);\n const themeOverrides = (_theme$components = theme.components) == null || (_theme$components = _theme$components.MuiCssBaseline) == null ? void 0 : _theme$components.styleOverrides;\n if (themeOverrides) {\n defaultStyles = [defaultStyles, themeOverrides];\n }\n return defaultStyles;\n};\n\n/**\n * Kickstart an elegant, consistent, and simple baseline to build upon.\n */\nfunction CssBaseline(inProps) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiCssBaseline'\n });\n const {\n children,\n enableColorScheme = false\n } = props;\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(GlobalStyles, {\n styles: theme => styles(theme, enableColorScheme)\n }), children]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? CssBaseline.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────â”\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * You can wrap a node.\n */\n children: PropTypes.node,\n /**\n * Enable `color-scheme` CSS property to use `theme.palette.mode`.\n * For more details, check out https://developer.mozilla.org/en-US/docs/Web/CSS/color-scheme\n * For browser support, check out https://caniuse.com/?search=color-scheme\n * @default false\n */\n enableColorScheme: PropTypes.bool\n} : void 0;\nexport default CssBaseline;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTableCellUtilityClass(slot) {\n return generateUtilityClass('MuiTableCell', slot);\n}\nconst tableCellClasses = generateUtilityClasses('MuiTableCell', ['root', 'head', 'body', 'footer', 'sizeSmall', 'sizeMedium', 'paddingCheckbox', 'paddingNone', 'alignLeft', 'alignCenter', 'alignRight', 'alignJustify', 'stickyHeader']);\nexport default tableCellClasses;","import React from \"react\";\n\nimport { inputLabelClasses } from \"@mui/material/InputLabel\";\nimport { createTheme } from \"@mui/material/styles\";\nimport { tableCellClasses } from \"@mui/material/TableCell\";\n\n// Used only to create transitions\nconst muiTheme = createTheme();\n\nexport const createComponents = () => ({\n MuiAvatar: {\n styleOverrides: {\n root: {\n fontSize : 14,\n fontWeight : 600,\n letterSpacing : 0\n }\n }\n },\n MuiButton: {\n styleOverrides: {\n root: {\n borderRadius : \"12px\",\n textTransform : \"none\"\n },\n sizeSmall: {\n padding: \"6px 16px\"\n },\n sizeMedium: {\n padding: \"8px 20px\"\n },\n sizeLarge: {\n padding: \"11px 24px\"\n },\n textSizeSmall: {\n padding: \"7px 12px\"\n },\n textSizeMedium: {\n padding: \"9px 16px\"\n },\n textSizeLarge: {\n padding: \"12px 16px\"\n }\n }\n },\n MuiCard: {\n styleOverrides: {\n root: {\n borderRadius: 20\n }\n }\n },\n MuiCardContent: {\n styleOverrides: {\n root: {\n padding : \"20px 24px\",\n \"&:last-child\" : {\n paddingBottom: \"20px\"\n }\n }\n }\n },\n MuiCardHeader: {\n defaultProps: {\n titleTypographyProps: {\n variant: \"h6\"\n },\n subheaderTypographyProps: {\n variant: \"body2\"\n }\n },\n styleOverrides: {\n root: {\n padding: \"32px 24px 16px\"\n }\n }\n },\n MuiCheckbox: {\n defaultProps: {\n checkedIcon: (\n <svg\n fill=\"none\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n clipRule=\"evenodd\"\n d=\"M9 3.5C5.68629 3.5 3 6.18629 3 9.5V15.5C3 18.8137 5.68629 21.5 9 21.5H15C18.3137 21.5 21 18.8137 21 15.5V9.5C21 6.18629 18.3137 3.5 15 3.5H9ZM16.7179 10.1961C17.1024 9.79966 17.0926 9.16657 16.6961 8.7821C16.2997 8.39763 15.6666 8.40737 15.2821 8.80385L10.6667 13.5635L8.7179 11.5539C8.33343 11.1574 7.70034 11.1476 7.30385 11.5321C6.90737 11.9166 6.89763 12.5497 7.2821 12.9461L9.94877 15.6961C10.1371 15.8904 10.3961 16 10.6667 16C10.9372 16 11.1962 15.8904 11.3846 15.6961L16.7179 10.1961Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n />\n </svg>\n ),\n color : \"primary\",\n icon : (\n <svg\n fill=\"none\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n height=\"16\"\n rx=\"5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n width=\"16\"\n x=\"4\"\n y=\"4.5\"\n />\n </svg>\n ),\n indeterminateIcon: (\n <svg\n fill=\"none\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n clipRule=\"evenodd\"\n d=\"M9 5.5H15C17.2091 5.5 19 7.29086 19 9.5V15.5C19 17.7091 17.2091 19.5 15 19.5H9C6.79086 19.5 5 17.7091 5 15.5V9.5C5 7.29086 6.79086 5.5 9 5.5ZM3 9.5C3 6.18629 5.68629 3.5 9 3.5H15C18.3137 3.5 21 6.18629 21 9.5V15.5C21 18.8137 18.3137 21.5 15 21.5H9C5.68629 21.5 3 18.8137 3 15.5V9.5ZM8 11.5C7.44772 11.5 7 11.9477 7 12.5C7 13.0523 7.44772 13.5 8 13.5H16C16.5523 13.5 17 13.0523 17 12.5C17 11.9477 16.5523 11.5 16 11.5H8Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n />\n </svg>\n )\n }\n },\n MuiChip: {\n styleOverrides: {\n root: {\n fontWeight: 500\n }\n }\n },\n MuiCssBaseline: {\n styleOverrides: {\n \"*\": {\n boxSizing: \"border-box\"\n },\n html: {\n MozOsxFontSmoothing : \"grayscale\",\n WebkitFontSmoothing : \"antialiased\",\n display : \"flex\",\n flexDirection : \"column\",\n minHeight : \"100%\",\n width : \"100%\"\n },\n body: {\n display : \"flex\",\n flex : \"1 1 auto\",\n flexDirection : \"column\",\n minHeight : \"100%\",\n width : \"100%\",\n margin : 0,\n padding : 0,\n },\n \"#root, #__next\": {\n display : \"flex\",\n flex : \"1 1 auto\",\n flexDirection : \"column\",\n height : \"100%\",\n width : \"100%\"\n },\n \"#nprogress\": {\n pointerEvents: \"none\"\n },\n \"#nprogress .bar\": {\n height : 3,\n left : 0,\n position : \"fixed\",\n top : 0,\n width : \"100%\",\n zIndex : 2000\n }\n }\n },\n MuiIconButton: {\n styleOverrides: {\n sizeSmall: {\n padding: 4\n }\n }\n },\n MuiInputBase: {\n styleOverrides: {\n input: {\n \"&::placeholder\": {\n opacity: 1\n }\n }\n }\n },\n MuiInput: {\n styleOverrides: {\n input: {\n fontSize : 14,\n fontWeight : 500,\n lineHeight : \"24px\"\n }\n }\n },\n MuiFilledInput: {\n styleOverrides: {\n root: {\n backgroundColor : \"transparent\",\n borderRadius : 8,\n borderStyle : \"solid\",\n borderWidth : 1,\n overflow : \"hidden\",\n transition : muiTheme.transitions.create([\n \"border-color\",\n \"box-shadow\",\n ]),\n \"&:before\": {\n display: \"none\"\n },\n \"&:after\": {\n display: \"none\"\n }\n },\n input: {\n fontSize : 14,\n fontWeight : 500,\n lineHeight : \"24px\"\n }\n }\n },\n MuiOutlinedInput: {\n styleOverrides: {\n input: {\n fontSize : 14,\n fontWeight : 500,\n lineHeight : \"24px\"\n },\n notchedOutline: {\n transition: muiTheme.transitions.create([\n \"border-color\",\n \"box-shadow\",\n ])\n }\n }\n },\n MuiFormLabel: {\n styleOverrides: {\n root: {\n fontSize : 14,\n fontWeight : 500,\n [`&.${inputLabelClasses.filled}`] : {\n transform: \"translate(12px, 18px) scale(1)\"\n },\n [`&.${inputLabelClasses.shrink}`]: {\n [`&.${inputLabelClasses.standard}`]: {\n transform: \"translate(0, -1.5px) scale(0.85)\"\n },\n [`&.${inputLabelClasses.filled}`]: {\n transform: \"translate(12px, 6px) scale(0.85)\"\n },\n [`&.${inputLabelClasses.outlined}`]: {\n transform: \"translate(14px, -9px) scale(0.85)\"\n }\n }\n }\n }\n },\n MuiLinearProgress: {\n styleOverrides: {\n root: {\n borderRadius : 3,\n overflow : \"hidden\"\n }\n }\n },\n MuiLink: {\n defaultProps: {\n underline: \"hover\"\n }\n },\n MuiListItemIcon: {\n styleOverrides: {\n root: {\n marginRight : \"16px\",\n minWidth : \"unset\"\n }\n }\n },\n MuiPaper: {\n styleOverrides: {\n root: {\n backgroundImage: \"none\"\n }\n }\n },\n MuiPopover: {\n defaultProps: {\n elevation: 16\n }\n },\n MuiRadio: {\n defaultProps: {\n color: \"primary\"\n }\n },\n MuiSwitch: {\n defaultProps: {\n color: \"primary\"\n }\n },\n MuiTab: {\n styleOverrides: {\n root: {\n fontSize : 14,\n fontWeight : 500,\n lineHeight : 1.71,\n minWidth : \"auto\",\n paddingLeft : 0,\n paddingRight : 0,\n textTransform : \"none\",\n \"& + &\" : {\n marginLeft: 24\n }\n }\n }\n },\n MuiTableCell: {\n styleOverrides: {\n root: {\n padding: \"15px 16px\"\n }\n }\n },\n MuiTableHead: {\n styleOverrides: {\n root: {\n borderBottom : \"none\",\n [`& .${tableCellClasses.root}`] : {\n borderBottom : \"none\",\n fontSize : 12,\n fontWeight : 600,\n lineHeight : 1,\n letterSpacing : 0.5,\n textTransform : \"uppercase\"\n },\n [`& .${tableCellClasses.paddingCheckbox}`]: {\n paddingTop : 4,\n paddingBottom : 4\n }\n }\n }\n },\n MuiTextField: {\n defaultProps: {\n variant: \"filled\"\n }\n }\n});\n","import { backdropClasses } from \"@mui/material/Backdrop\";\nimport { common } from \"@mui/material/colors\";\nimport { filledInputClasses } from \"@mui/material/FilledInput\";\nimport { outlinedInputClasses } from \"@mui/material/OutlinedInput\";\nimport { paperClasses } from \"@mui/material/Paper\";\nimport { tableCellClasses } from \"@mui/material/TableCell\";\nimport { alpha } from \"@mui/system/colorManipulator\";\n\nexport const createComponents = ({ palette }) => ({\n MuiAvatar: {\n styleOverrides: {\n root: {\n backgroundColor : palette.neutral[300],\n color : common.black\n }\n }\n },\n MuiBackdrop: {\n styleOverrides: {\n root: {\n [`&:not(.${backdropClasses.invisible})`]: {\n backgroundColor: alpha(common.black, 0.50)\n }\n }\n }\n },\n MuiButton: {\n styleOverrides: {\n text: {\n color: palette.action.active\n }\n }\n },\n MuiCard: {\n styleOverrides: {\n root: {\n [`&.${paperClasses.elevation1}`]: {\n boxShadow: \"0px 5px 22px rgba(0, 0, 0, 0.08), 0px 0px 0px 0.5px rgba(0, 0, 0, 0.06)\"\n }\n }\n }\n },\n MuiChip: {\n styleOverrides: {\n icon: {\n color: palette.action.active\n },\n root: {\n borderColor: palette.neutral[700]\n }\n }\n },\n MuiCssBaseline: {\n styleOverrides: {\n \"#nprogress .bar\": {\n backgroundColor: palette.primary.main\n },\n \".slick-dots li button\": {\n \"&:before\": {\n fontSize : 10,\n color : palette.primary.main\n }\n },\n \".slick-dots li.slick-active button\": {\n \"&:before\": {\n color: palette.primary.main\n }\n }\n }\n },\n MuiInputBase: {\n styleOverrides: {\n input: {\n \"&::placeholder\": {\n color: palette.text.disabled\n }\n }\n }\n },\n MuiFilledInput: {\n styleOverrides: {\n root: {\n borderColor : palette.divider,\n \"&:hover\" : {\n backgroundColor: palette.action.hover\n },\n [`&.${filledInputClasses.disabled}`]: {\n backgroundColor: \"transparent\"\n },\n [`&.${filledInputClasses.focused}`]: {\n backgroundColor : \"transparent\",\n borderColor : palette.primary.main,\n boxShadow : `${palette.primary.main} 0 0 0 2px`\n },\n [`&.${filledInputClasses.error}`]: {\n borderColor : palette.error.main,\n boxShadow : `${palette.error.main} 0 0 0 2px`\n }\n }\n }\n },\n MuiOutlinedInput: {\n styleOverrides: {\n root: {\n \"&:hover\": {\n backgroundColor : palette.action.hover,\n [`& .${outlinedInputClasses.notchedOutline}`] : {\n borderColor: palette.divider\n }\n },\n [`&.${outlinedInputClasses.focused}`]: {\n backgroundColor : \"transparent\",\n [`& .${outlinedInputClasses.notchedOutline}`] : {\n borderColor : palette.primary.main,\n boxShadow : `${palette.primary.main} 0 0 0 2px`\n }\n },\n [`&.${filledInputClasses.error}`]: {\n [`& .${outlinedInputClasses.notchedOutline}`]: {\n borderColor : palette.error.main,\n boxShadow : `${palette.error.main} 0 0 0 2px`\n }\n }\n },\n notchedOutline: {\n borderColor: palette.divider\n }\n }\n },\n MuiSwitch: {\n styleOverrides: {\n switchBase: {\n color: palette.neutral[500]\n },\n track: {\n backgroundColor : palette.neutral[400],\n opacity : 1\n }\n }\n },\n MuiTableCell: {\n styleOverrides: {\n root: {\n borderBottomColor: palette.divider\n }\n }\n },\n MuiTableHead: {\n styleOverrides: {\n root: {\n [`& .${tableCellClasses.root}`]: {\n backgroundColor : palette.neutral[800],\n color : palette.neutral[400]\n }\n }\n }\n },\n MuiTimelineConnector: {\n styleOverrides: {\n root: {\n backgroundColor: palette.divider\n }\n }\n },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n backdropFilter : \"blur(6px)\",\n background : alpha(palette.neutral[900], 0.8)\n }\n }\n }\n});\n","import { alpha } from \"@mui/system/colorManipulator\";\n\nconst withAlphas = color => ({\n ...color,\n alpha4 : alpha(color.main, 0.04),\n alpha8 : alpha(color.main, 0.08),\n alpha12 : alpha(color.main, 0.12),\n alpha30 : alpha(color.main, 0.30),\n alpha50 : alpha(color.main, 0.50)\n});\n\nexport const neutral = {\n 50 : \"#F8F9FA\",\n 100 : \"#F3F4F6\",\n 200 : \"#E5E7EB\",\n 300 : \"#D2D6DB\",\n 400 : \"#9DA4AE\",\n 500 : \"#6C737F\",\n 600 : \"#4D5761\",\n 700 : \"#2F3746\",\n 800 : \"#1C2536\",\n 900 : \"#111927\"\n};\n\nexport const blue = withAlphas({\n lightest : \"#F5F8FF\",\n light : \"#EBEFFF\",\n main : \"#2970FF\",\n dark : \"#004EEB\",\n darkest : \"#00359E\",\n contrastText : \"#FFFFFF\"\n});\n\nexport const green = withAlphas({\n lightest : \"#F6FEF9\",\n light : \"#EDFCF2\",\n main : \"#16B364\",\n dark : \"#087443\",\n darkest : \"#084C2E\",\n contrastText : \"#FFFFFF\"\n});\n\nexport const indigo = withAlphas({\n lightest : \"#F5F7FF\",\n light : \"#EBEEFE\",\n main : \"#6366F1\",\n dark : \"#4338CA\",\n darkest : \"#312E81\",\n contrastText : \"#FFFFFF\"\n});\n\nexport const purple = withAlphas({\n lightest : \"#F9F5FF\",\n light : \"#F4EBFF\",\n main : \"#9E77ED\",\n dark : \"#6941C6\",\n darkest : \"#42307D\",\n contrastText : \"#FFFFFF\"\n});\n\nexport const success = withAlphas({\n lightest : \"#F0FDF9\",\n light : \"#3FC79A\",\n main : \"#10B981\",\n dark : \"#0B815A\",\n darkest : \"#134E48\",\n contrastText : \"#FFFFFF\"\n});\n\nexport const info = withAlphas({\n lightest : \"#ECFDFF\",\n light : \"#CFF9FE\",\n main : \"#06AED4\",\n dark : \"#0E7090\",\n darkest : \"#164C63\",\n contrastText : \"#FFFFFF\"\n});\n\nexport const warning = withAlphas({\n lightest : \"#FFFAEB\",\n light : \"#FEF0C7\",\n main : \"#F79009\",\n dark : \"#B54708\",\n darkest : \"#7A2E0E\",\n contrastText : \"#FFFFFF\"\n});\n\nexport const error = withAlphas({\n lightest : \"#FEF3F2\",\n light : \"#FEE4E2\",\n main : \"#F04438\",\n dark : \"#B42318\",\n darkest : \"#7A271A\",\n contrastText : \"#FFFFFF\"\n});\n","import { blue, green, indigo, purple } from \"./colors\";\n\nexport const getPrimary = (preset) => {\n switch (preset) {\n case \"blue\":\n return blue;\n case \"green\":\n return green;\n case \"indigo\":\n return indigo;\n case \"purple\":\n return purple;\n default:\n console.error('Invalid color preset, accepted values: \"blue\", \"green\", \"indigo\" or \"purple\"\".');\n return blue;\n }\n};\n","import { createComponents } from \"./create-components\";\nimport { createPalette } from \"./create-palette\";\nimport { createShadows } from \"./create-shadows\";\n\nexport const createOptions = (config) => {\n const { colorPreset, contrast } = config;\n const palette = createPalette({ colorPreset, contrast });\n const components = createComponents({ palette });\n const shadows = createShadows();\n\n return {\n components,\n palette,\n shadows\n };\n};\n","import { alpha } from \"@mui/system/colorManipulator\";\n\nimport { error, info, neutral, success, warning } from \"../colors\";\nimport { getPrimary } from \"../utils\";\n\nexport const createPalette = (config) => {\n const { colorPreset, contrast } = config;\n\n return {\n action: {\n active : neutral[500],\n disabled : alpha(neutral[100], 0.38),\n disabledBackground : alpha(neutral[100], 0.12),\n focus : alpha(neutral[100], 0.16),\n hover : alpha(neutral[100], 0.04),\n selected : alpha(neutral[100], 0.12)\n },\n background: {\n default : contrast === \"high\" ? \"#0B0F19\" : \"#0E1320\",\n paper : neutral[900]\n },\n divider : \"#2D3748\",\n error,\n info,\n mode : \"dark\",\n neutral,\n primary : getPrimary(colorPreset),\n success,\n text : {\n primary : \"#EDF2F7\",\n secondary : \"#A0AEC0\",\n disabled : \"rgba(255, 255, 255, 0.48)\"\n },\n warning\n };\n};\n","export const createShadows = () => [\n \"none\",\n \"0px 1px 2px rgba(0, 0, 0, 0.24)\",\n \"0px 1px 2px rgba(0, 0, 0, 0.24)\",\n \"0px 1px 4px rgba(0, 0, 0, 0.24)\",\n \"0px 1px 5px rgba(0, 0, 0, 0.24)\",\n \"0px 1px 6px rgba(0, 0, 0, 0.24)\",\n \"0px 2px 6px rgba(0, 0, 0, 0.24)\",\n \"0px 3px 6px rgba(0, 0, 0, 0.24)\",\n \"0px 4px 6px rgba(0, 0, 0, 0.24)\",\n \"0px 5px 12px rgba(0, 0, 0, 0.24)\",\n \"0px 5px 14px rgba(0, 0, 0, 0.24)\",\n \"0px 5px 15px rgba(0, 0, 0, 0.24)\",\n \"0px 6px 15px rgba(0, 0, 0, 0.24)\",\n \"0px 7px 15px rgba(0, 0, 0, 0.24)\",\n \"0px 8px 15px rgba(0, 0, 0, 0.24)\",\n \"0px 9px 15px rgba(0, 0, 0, 0.24)\",\n \"0px 10px 15px rgba(0, 0, 0, 0.24)\",\n \"0px 12px 22px rgba(0, 0, 0, 0.24)\",\n \"0px 13px 22px rgba(0, 0, 0, 0.24)\",\n \"0px 14px 24px rgba(0, 0, 0, 0.24)\",\n \"0px 20px 25px rgba(0, 0, 0, 0.24)\",\n \"0px 25px 50px rgba(0, 0, 0, 0.24)\",\n \"0px 25px 50px rgba(0, 0, 0, 0.24)\",\n \"0px 25px 50px rgba(0, 0, 0, 0.24)\",\n \"0px 25px 50px rgba(0, 0, 0, 0.24)\",\n];\n","import { createComponents } from \"./create-components\";\nimport { createPalette } from \"./create-palette\";\nimport { createShadows } from \"./create-shadows\";\n\nexport const createOptions = ({ colorPreset, contrast, orgTheme }) => {\n const palette = createPalette({ colorPreset, contrast, orgTheme });\n const components = createComponents({ palette });\n const shadows = createShadows();\n\n return {\n components,\n palette,\n shadows\n };\n};\n","import { common } from \"@mui/material/colors\";\nimport { alpha } from \"@mui/system/colorManipulator\";\n\nimport { error, info, neutral, success, warning } from \"../colors\";\n\nexport const createPalette = (config) => {\n const { contrast, orgTheme } = config;\n return {\n action: {\n active : neutral[500],\n disabled : alpha(neutral[900], 0.38),\n disabledBackground : alpha(neutral[900], 0.12),\n focus : alpha(neutral[900], 0.16),\n hover : alpha(neutral[900], 0.04),\n selected : alpha(neutral[900], 0.12)\n },\n background: {\n default : contrast === \"high\" ? neutral[50] : common.white,\n paper : common.white\n },\n divider : \"#F2F4F7\",\n error,\n info,\n mode : \"light\",\n neutral,\n primary : { main: orgTheme?.primary || \"#000\" },\n secondary : {\n lightest : \"#F8F9FA\",\n light : \"#F3F4F6\",\n main : \"#384250\",\n dark : \"#1C2536\",\n darkest : \"#111927\"\n },\n success,\n text: {\n primary : neutral[900],\n secondary : neutral[500],\n disabled : alpha(neutral[900], 0.38)\n },\n warning\n };\n};\n","import { backdropClasses } from \"@mui/material/Backdrop\";\nimport { common } from \"@mui/material/colors\";\nimport { filledInputClasses } from \"@mui/material/FilledInput\";\nimport { outlinedInputClasses } from \"@mui/material/OutlinedInput\";\nimport { paperClasses } from \"@mui/material/Paper\";\nimport { tableCellClasses } from \"@mui/material/TableCell\";\nimport { alpha } from \"@mui/system/colorManipulator\";\n\nexport const createComponents = ({ palette }) => ({\n MuiAvatar: {\n styleOverrides: {\n root: {\n backgroundColor : palette.neutral[200],\n color : common.black\n }\n }\n },\n MuiBackdrop: {\n styleOverrides: {\n root: {\n [`&:not(.${backdropClasses.invisible})`]: {\n backgroundColor: alpha(palette.primary.main, 0.5)\n }\n }\n }\n },\n MuiCard: {\n styleOverrides: {\n root: {\n [`&.${paperClasses.elevation1}`]: {\n boxShadow: \"0px 5px 22px rgba(0, 0, 0, 0.04), 0px 0px 0px 0.5px rgba(0, 0, 0, 0.03)\"\n }\n }\n }\n },\n MuiChip: {\n styleOverrides: {\n icon: {\n color: palette.action.active\n },\n root: {\n borderColor: palette.neutral[200]\n }\n }\n },\n MuiCssBaseline: {\n styleOverrides: {\n \"#nprogress .bar\": {\n backgroundColor: palette.primary.main\n },\n \".slick-dots li button\": {\n \"&:before\": {\n fontSize : 10,\n color : palette.primary.main\n }\n },\n \".slick-dots li.slick-active button\": {\n \"&:before\": {\n color: palette.primary.main\n }\n }\n }\n },\n MuiInputBase: {\n styleOverrides: {\n input: {\n \"&::placeholder\": {\n color: palette.text.disabled\n }\n }\n }\n },\n MuiFilledInput: {\n styleOverrides: {\n root: {\n borderColor : palette.neutral[300],\n \"&:hover\" : {\n backgroundColor: palette.action.hover\n },\n [`&.${filledInputClasses.disabled}`]: {\n backgroundColor: \"transparent\"\n },\n [`&.${filledInputClasses.focused}`]: {\n backgroundColor : \"transparent\",\n borderColor : palette.primary.main,\n boxShadow : `${palette.primary.main} 0 0 0 2px`\n },\n [`&.${filledInputClasses.error}`]: {\n borderColor : palette.error.main,\n boxShadow : `${palette.error.main} 0 0 0 2px`\n }\n }\n }\n },\n MuiOutlinedInput: {\n styleOverrides: {\n root: {\n \"&:hover\": {\n backgroundColor : palette.action.hover,\n [`& .${outlinedInputClasses.notchedOutline}`] : {\n borderColor: palette.neutral[200]\n }\n },\n [`&.${outlinedInputClasses.focused}`]: {\n backgroundColor : \"transparent\",\n [`& .${outlinedInputClasses.notchedOutline}`] : {\n borderColor : palette.primary.main,\n borderWidth : 3,\n // boxShadow : `${palette.primary.main} 0 0 0 2px`\n }\n },\n [`&.${filledInputClasses.error}`]: {\n [`& .${outlinedInputClasses.notchedOutline}`]: {\n borderColor : palette.error.main,\n boxShadow : `${palette.error.main} 0 0 0 2px`\n }\n }\n },\n notchedOutline: {\n borderColor: palette.neutral[200]\n }\n }\n },\n MuiSwitch: {\n styleOverrides: {\n switchBase: {\n color: palette.neutral[500]\n },\n track: {\n backgroundColor : palette.neutral[400],\n opacity : 1\n }\n }\n },\n MuiTableCell: {\n styleOverrides: {\n root: {\n borderBottomColor: palette.divider\n }\n }\n },\n MuiTableHead: {\n styleOverrides: {\n root: {\n [`& .${tableCellClasses.root}`]: {\n backgroundColor : palette.neutral[50],\n color : palette.neutral[700]\n }\n }\n }\n },\n MuiTimelineConnector: {\n styleOverrides: {\n root: {\n backgroundColor: palette.divider\n }\n }\n },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n backdropFilter : \"blur(6px)\",\n background : alpha(palette.neutral[900], 0.8)\n }\n }\n }\n});\n","export const createShadows = () => [\n \"none\",\n \"0px 1px 2px rgba(0, 0, 0, 0.08)\",\n \"0px 1px 5px rgba(0, 0, 0, 0.08)\",\n \"0px 1px 8px rgba(0, 0, 0, 0.08)\",\n \"0px 1px 10px rgba(0, 0, 0, 0.08)\",\n \"0px 1px 14px rgba(0, 0, 0, 0.08)\",\n \"0px 1px 18px rgba(0, 0, 0, 0.08)\",\n \"0px 2px 16px rgba(0, 0, 0, 0.08)\",\n \"0px 3px 14px rgba(0, 0, 0, 0.08)\",\n \"0px 3px 16px rgba(0, 0, 0, 0.08)\",\n \"0px 4px 18px rgba(0, 0, 0, 0.08)\",\n \"0px 4px 20px rgba(0, 0, 0, 0.08)\",\n \"0px 5px 22px rgba(0, 0, 0, 0.08)\",\n \"0px 5px 24px rgba(0, 0, 0, 0.08)\",\n \"0px 5px 26px rgba(0, 0, 0, 0.08)\",\n \"0px 6px 28px rgba(0, 0, 0, 0.08)\",\n \"0px 6px 30px rgba(0, 0, 0, 0.08)\",\n \"0px 6px 32px rgba(0, 0, 0, 0.08)\",\n \"0px 7px 34px rgba(0, 0, 0, 0.08)\",\n \"0px 7px 36px rgba(0, 0, 0, 0.08)\",\n \"0px 8px 38px rgba(0, 0, 0, 0.08)\",\n \"0px 8px 40px rgba(0, 0, 0, 0.08)\",\n \"0px 8px 42px rgba(0, 0, 0, 0.08)\",\n \"0px 9px 44px rgba(0, 0, 0, 0.08)\",\n \"0px 9px 46px rgba(0, 0, 0, 0.08)\",\n];\n","import { createTheme as createMuiTheme, responsiveFontSizes } from \"@mui/material/styles\";\nimport merge from \"lodash/merge\";\n\nimport { createOptions as createBaseOptions } from \"./base/create-options\";\nimport { createOptions as createDarkOptions } from \"./dark/create-options\";\nimport { createOptions as createLightOptions } from \"./light/create-options\";\n\nexport const createTheme = (config) => {\n const options = config.paletteMode === \"dark\"\n ? createDarkOptions({\n colorPreset : config.colorPreset,\n contrast : config.contrast\n })\n : createLightOptions({\n colorPreset : config.colorPreset,\n contrast : config.contrast,\n orgTheme : config.orgTheme,\n });\n\n if (config.orgTheme?.primary) {\n options.palette.tonalOffset = {\n light : 0.85,\n dark : 0.15,\n };\n }\n\n let theme = createMuiTheme(merge(\n // Base options available for both dark and light palette modes\n createBaseOptions({\n direction: config.direction,\n }),\n // Options based on selected palette mode, color preset and contrast\n options\n ));\n\n if (config.responsiveFontSizes) {\n theme = responsiveFontSizes(theme);\n }\n\n return theme;\n};\n","import { createComponents } from \"./create-components\";\nimport { createTypography } from \"./create-typography\";\n\n// Here we do not modify the \"palette\" and \"shadows\" because \"light\" and \"dark\" mode\n// may have different values.\n\nexport const createOptions = (config) => {\n const { direction = \"ltr\" } = config;\n\n return {\n breakpoints: {\n values: {\n xs : 0,\n sm : 600,\n md : 900,\n lg : 1200,\n xl : 1440\n }\n },\n components : createComponents(),\n direction,\n shape : {\n borderRadius: 8\n },\n typography: createTypography()\n };\n};\n","export const createTypography = () => ({\n fontFamily : '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\"',\n body1 : {\n fontSize : \"1rem\",\n fontWeight : 400,\n lineHeight : 1.5\n },\n body2: {\n fontSize : \"0.875rem\",\n fontWeight : 400,\n lineHeight : 1.57\n },\n button: {\n fontWeight: 600\n },\n caption: {\n fontSize : \"0.75rem\",\n fontWeight : 500,\n lineHeight : 1.66\n },\n subtitle1: {\n fontSize : \"1rem\",\n fontWeight : 500,\n lineHeight : 1.57\n },\n subtitle2: {\n fontSize : \"0.875rem\",\n fontWeight : 500,\n lineHeight : 1.57\n },\n overline: {\n fontSize : \"0.75rem\",\n fontWeight : 600,\n letterSpacing : \"0.5px\",\n lineHeight : 2.5,\n textTransform : \"uppercase\"\n },\n h1: {\n fontFamily : \"'Plus Jakarta Sans', sans-serif\",\n fontWeight : 700,\n fontSize : \"3.5rem\",\n lineHeight : 1.2\n },\n h2: {\n fontFamily : \"'Plus Jakarta Sans', sans-serif\",\n fontWeight : 700,\n fontSize : \"3rem\",\n lineHeight : 1.2\n },\n h3: {\n fontFamily : \"'Plus Jakarta Sans', sans-serif\",\n fontWeight : 700,\n fontSize : \"2.25rem\",\n lineHeight : 1.2\n },\n h4: {\n fontFamily : \"'Plus Jakarta Sans', sans-serif\",\n fontWeight : 700,\n fontSize : \"2rem\",\n lineHeight : 1.2\n },\n h5: {\n fontFamily : \"'Plus Jakarta Sans', sans-serif\",\n fontWeight : 700,\n fontSize : \"1.5rem\",\n lineHeight : 1.2\n },\n h6: {\n fontFamily : \"'Plus Jakarta Sans', sans-serif\",\n fontWeight : 700,\n fontSize : \"1.125rem\",\n lineHeight : 1.2\n },\n quote: {\n fontFamily : \"Reenie Beanie !important\",\n fontStyle : \"normal\",\n fontWeight : 500,\n fontSize : \"2.5rem\",\n lineHeight : \"3rem\"\n },\n tooltip: {\n fontStyle : \"normal\",\n fontSize : \"0.625rem\",\n fontWeight : 500,\n lineHeight : 1.4,\n },\n link: {\n fontStyle : \"normal\",\n fontSize : \"0.875rem\",\n fontWeight : 500,\n lineHeight : 1.4,\n },\n});\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport { isUnitless, convertLength, responsiveProperty, alignProperty, fontGrid } from './cssUtils';\nexport default function responsiveFontSizes(themeInput, options = {}) {\n const {\n breakpoints = ['sm', 'md', 'lg'],\n disableAlign = false,\n factor = 2,\n variants = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'caption', 'button', 'overline']\n } = options;\n const theme = _extends({}, themeInput);\n theme.typography = _extends({}, theme.typography);\n const typography = theme.typography;\n\n // Convert between CSS lengths e.g. em->px or px->rem\n // Set the baseFontSize for your project. Defaults to 16px (also the browser default).\n const convert = convertLength(typography.htmlFontSize);\n const breakpointValues = breakpoints.map(x => theme.breakpoints.values[x]);\n variants.forEach(variant => {\n const style = typography[variant];\n if (!style) {\n return;\n }\n const remFontSize = parseFloat(convert(style.fontSize, 'rem'));\n if (remFontSize <= 1) {\n return;\n }\n const maxFontSize = remFontSize;\n const minFontSize = 1 + (maxFontSize - 1) / factor;\n let {\n lineHeight\n } = style;\n if (!isUnitless(lineHeight) && !disableAlign) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported non-unitless line height with grid alignment.\nUse unitless line heights instead.` : _formatMuiErrorMessage(6));\n }\n if (!isUnitless(lineHeight)) {\n // make it unitless\n lineHeight = parseFloat(convert(lineHeight, 'rem')) / parseFloat(remFontSize);\n }\n let transform = null;\n if (!disableAlign) {\n transform = value => alignProperty({\n size: value,\n grid: fontGrid({\n pixels: 4,\n lineHeight,\n htmlFontSize: typography.htmlFontSize\n })\n });\n }\n typography[variant] = _extends({}, style, responsiveProperty({\n cssProperty: 'fontSize',\n min: minFontSize,\n max: maxFontSize,\n unit: 'rem',\n breakpoints: breakpointValues,\n transform\n }));\n });\n return theme;\n}","import React, { Suspense, lazy } from \"react\";\n\nimport { LoadingSpinner } from \"src/components\";\nimport { DIALOG_NAME } from \"src/constants\";\nimport useGlobalDialog from \"src/redux/hooks/useGlobalDialog\";\n\nconst WalletSettingsDialog = lazy(() => import(\"src/components/Dialogs/WalletSettingsDialog\"));\nconst KYCFlowDialog = lazy(() => import(\"src/components/Dialogs/KYCFlowDialog\"));\nconst KYCResetDialog = lazy(() => import(\"src/components/Dialogs/KYCResetDialog\"));\nconst KYCStatusDialog = lazy(() => import(\"src/components/Dialogs/KYCStatusDialog\"));\nconst KYCFinishedDialog = lazy(() => import(\"src/components/Dialogs/KYCFinishedDialog\"));\nconst KYBReviewDialog = lazy(() => import(\"src/components/Dialogs/KYBReviewDialog\"));\nconst CountryResetDialog = lazy(() => import(\"src/components/Dialogs/CountryResetDialog\"));\nconst AccountBlockedDialog = lazy(() => import(\"src/components/Dialogs/AccountBlockedDialog\"));\nconst AccountUnblockedDialog = lazy(() => import(\"src/components/Dialogs/AccountUnblockedDialog\"));\nconst AccessUnavailableDialog = lazy(() => import(\"src/components/Dialogs/AccessUnavailableDialog\"));\nconst VpnBlockedDialog = lazy(() => import(\"src/components/Dialogs/VpnBlockedDialog\"));\nconst SeriesPausedDialog = lazy(() => import(\"src/components/Dialogs/SeriesPausedDialog\"));\nconst MaxAmountReachedDialog = lazy(() => import(\"src/components/Dialogs/Investment/MaxAmountReachedDialog\"));\nconst UnlinkWalletDialog = lazy(() => import(\"src/components/Dialogs/UnlinkWalletDialog\"));\nconst GrantAcceptSuccessDialog = lazy(() => import(\"src/components/Dialogs/GrantAcceptSuccessDialog\"));\n\nconst DialogWrapper = () => {\n const { data: currentDialog, setData: setCurrentDialog } = useGlobalDialog();\n // No open dialog\n if (!currentDialog?.name) return null;\n\n return (\n <Suspense fallback={<LoadingSpinner />}>\n {currentDialog.name === DIALOG_NAME.WALLET_SETTINGS && (\n <WalletSettingsDialog onClose={() => setCurrentDialog(null)} />\n )}\n {currentDialog.name === DIALOG_NAME.KYC_RESET && (\n <KYCResetDialog onClose={() => setCurrentDialog(null)} />\n )}\n {currentDialog.name === DIALOG_NAME.KYC_FLOW && (\n <KYCFlowDialog onClose={() => setCurrentDialog(null)} />\n )}\n {currentDialog.name === DIALOG_NAME.KYC_FINISHED && (\n <KYCFinishedDialog onClose={() => setCurrentDialog(null)} />\n )}\n {currentDialog.name === DIALOG_NAME.KYC_STATUS && (\n <KYCStatusDialog onClose={() => setCurrentDialog(null)} />\n )}\n {currentDialog.name === DIALOG_NAME.KYB_REVIEW && (\n <KYBReviewDialog onClose={() => setCurrentDialog(null)} />\n )}\n {currentDialog.name === DIALOG_NAME.COUNTRY_RESET && (\n <CountryResetDialog onClose={() => setCurrentDialog(null)} />\n )}\n {currentDialog.name === DIALOG_NAME.ACCOUNT_BLOCKED && (\n <AccountBlockedDialog onClose={() => setCurrentDialog(null)} />\n )}\n {currentDialog.name === DIALOG_NAME.ACCOUNT_UNBLOCKED && (\n <AccountUnblockedDialog onClose={() => setCurrentDialog(null)} />\n )}\n {currentDialog.name === DIALOG_NAME.ACCESS_UNAVAILABLE && (\n <AccessUnavailableDialog onClose={() => setCurrentDialog(null)} />\n )}\n {currentDialog.name === DIALOG_NAME.VPN_BLOCKED && (\n <VpnBlockedDialog onClose={() => setCurrentDialog(null)} />\n )}\n {currentDialog.name === DIALOG_NAME.SERIES_PAUSED && (\n <SeriesPausedDialog onClose={() => setCurrentDialog(null)} />\n )}\n {currentDialog.name === DIALOG_NAME.MAX_AMOUNT_REACHED && (\n <MaxAmountReachedDialog onClose={() => setCurrentDialog(null)} />\n )}\n {currentDialog.name === DIALOG_NAME.UNLINK_WALLET && (\n <UnlinkWalletDialog {...currentDialog.props} onClose={() => setCurrentDialog(null)} />\n )}\n {currentDialog.name === DIALOG_NAME.GRANT_ACCEPT_SUCCESS && (\n <GrantAcceptSuccessDialog {...currentDialog.props} onClose={() => setCurrentDialog(null)} />\n )}\n </Suspense>\n );\n};\n\nexport default DialogWrapper;\n","/* eslint-disable */\nimport React, { lazy, useEffect } from \"react\";\nimport { usePrivy } from \"@privy-io/react-auth\";\nimport get from \"lodash/get\";\nimport * as Sentry from \"@sentry/react\";\nimport { Routes, Route, Navigate } from \"react-router-dom\";\n\nimport { config_REACT_APP_STAGE } from \"src/config\";\nimport { ROUTE_PATH, AUTH_LEVEL, APP_STAGE } from \"src/constants\";\nimport useAppContext from \"src/pages/Core/context\";\nconst NotFound = lazy(() => import(\"src/pages/Error/NotFound\"));\nconst Sanctioned = lazy(() => import(\"src/pages/Error/Sanctioned\"));\nconst UploadDocument = lazy(() => import(\"src/pages/UploadDocument\"));\nconst InvitationCode = lazy(() => import(\"src/pages/InvitationCode\"));\nconst RootRedirect = lazy(() => import(\"src/pages/RootRedirect\"));\nconst navigatorMap = {\n \"series\": lazy(() => import(\"src/components/NavigatorSeries\")),\n \"token\": lazy(() => import(\"src/components/NavigatorSeries\")),\n \"guest\": lazy(() => import(\"src/components/NavigatorGuest\")),\n \"grants\": lazy(() => import(\"src/components/NavigatorGrants\")),\n \"circle\": lazy(() => import(\"src/components/NavigatorSyndicate\")),\n \"default\": lazy(() => import(\"src/components/NavigatorSeries\"))\n};\nconst allRoutes = [\n {\n exact : true,\n path : ROUTE_PATH.ROOT,\n componentLevel : AUTH_LEVEL.FREE,\n component : lazy(() => import(\"src/pages/Root\")),\n },\n {\n exact : true,\n path : ROUTE_PATH.AUTH,\n componentLevel : AUTH_LEVEL.SIGN_IN,\n component : lazy(() => import(\"src/pages/Auth\")),\n },\n {\n exact : true,\n path : ROUTE_PATH.SERIES_NOT_PUBLISHED,\n componentLevel : AUTH_LEVEL.SIGN_IN,\n component : lazy(() => import(\"src/pages/SeriesNotPublished\")),\n },\n {\n exact : true,\n path : ROUTE_PATH.INVITE_DISABLED,\n componentLevel : AUTH_LEVEL.DASHBOARD,\n component : lazy(() => import(\"src/pages/InviteDisabled\")),\n },\n {\n exact : true,\n path : ROUTE_PATH.INVALID_INVITE,\n componentLevel : AUTH_LEVEL.DASHBOARD,\n component : lazy(() => import(\"src/pages/InvalidInvite\")),\n },\n {\n exact: true,\n path: ROUTE_PATH.INVITE_REQUIRED,\n componentLevel: AUTH_LEVEL.DASHBOARD,\n component: lazy(() => import(\"src/pages/InviteRequired\")),\n },\n {\n exact : true,\n hasFooter : true,\n path : ROUTE_PATH.US,\n componentLevel : AUTH_LEVEL.DASHBOARD,\n component : lazy(() => import(\"src/pages/Main\")),\n },\n {\n exact : true,\n hasFooter : true,\n path : ROUTE_PATH.INTERNATIONAL,\n componentLevel : AUTH_LEVEL.DASHBOARD,\n component : lazy(() => import(\"src/pages/Main\")),\n },\n {\n exact : true,\n hasFooter : true,\n path : ROUTE_PATH.INVEST,\n componentLevel : AUTH_LEVEL.DASHBOARD,\n component : lazy(() => import(\"src/pages/Main\")),\n },\n {\n exact : true,\n hasFooter : true,\n path : ROUTE_PATH.START,\n componentLevel : AUTH_LEVEL.DASHBOARD,\n component : lazy(() => import(\"src/pages/Start\")),\n },\n {\n exact : true,\n hasFooter : true,\n path : ROUTE_PATH.PUBLIC,\n componentLevel : AUTH_LEVEL.PUBLIC,\n component : lazy(() => import(\"src/pages/Public\")),\n },\n {\n exact : true,\n hasFooter : true,\n path : ROUTE_PATH.AUTH_WITH_SERIES,\n componentLevel : AUTH_LEVEL.DASHBOARD,\n component : lazy(() => import(\"src/pages/AuthWithSeries\")),\n },\n {\n exact : true,\n hasFooter : true,\n path : ROUTE_PATH.KYB_FLOW,\n componentLevel : AUTH_LEVEL.DASHBOARD,\n component : lazy(() => import(\"src/pages/KYBFlow\")),\n },\n {\n exact : true,\n hasFooter : true,\n path : ROUTE_PATH.ACCEPT_GRANT,\n componentLevel : AUTH_LEVEL.DASHBOARD,\n component : lazy(() => import(\"src/pages/Grants\")),\n },\n {\n exact : true,\n hasFooter : true,\n path : ROUTE_PATH.SYNDICATE,\n componentLevel : AUTH_LEVEL.DASHBOARD,\n component : lazy(() => import(\"src/pages/Syndicates\")),\n },\n];\n\nconst routeViews = config_REACT_APP_STAGE === APP_STAGE.DEV\n ? allRoutes\n : allRoutes.filter(route => !route.devOnly);\n\nconst AppRoutes = () => {\n const { context } = useAppContext();\n const { user } = usePrivy();\n // if user exists add it to sentry, useEffect\n useEffect(() => {\n if (user) {\n const email = get(user, \"email.address\") || get(user, \"google.email\");\n Sentry.setUser({\n id: get(user, \"id\"),\n email,\n });\n }\n }, [user]);\n\n return (\n <main>\n <Routes>\n <Route\n path=\"/404\"\n exact\n element={<NotFound />}\n />\n <Route\n path=\"/sanctioned\"\n exact\n element={<Sanctioned />}\n />\n <Route\n path=\"/upload-documentation\"\n exact\n element={<UploadDocument />}\n />\n <Route\n path=\"/invitation/:invitationCode\"\n exact\n element={<InvitationCode />}\n />\n <Route\n path=\"/\"\n exact\n element={<RootRedirect />}\n />\n <Route path=\"/:type/:slug\">\n {routeViews.map(route => {\n const Navigator = navigatorMap[context] || navigatorMap.default;\n return (\n <Route\n key={route.path}\n path={route.path}\n exact={route.exact}\n componentLevel={route.componentLevel}\n element={(\n <Navigator\n componentLevel={route.componentLevel}\n permission={route.permission}\n path={route.path}\n >\n <route.component />\n </Navigator>\n )}\n />\n );\n })}\n </Route>\n <Route path=\"*\" element={<Navigate to=\"/404\" />} />\n </Routes>\n </main>\n );\n};\n\nexport default AppRoutes;\n","import { useEffect } from \"react\";\n\nimport { DIALOG_NAME, WEBSOCKET_EVENT } from \"src/constants\";\nimport useWebSocket from \"src/hooks/useWebSocket\";\nimport useGlobalDialog from \"src/redux/hooks/useGlobalDialog\";\n\nconst WebhookEventHandler = () => {\n const { lastMessage } = useWebSocket();\n const { setData: setCurrentDialog } = useGlobalDialog();\n\n useEffect(() => {\n const message = lastMessage?.data;\n if (message) {\n const data = JSON.parse(message);\n if (data.event === WEBSOCKET_EVENT.RESET_KYC) {\n setCurrentDialog(DIALOG_NAME.KYC_RESET);\n }\n else if (data.event === WEBSOCKET_EVENT.RESET_COUNTRY) {\n setCurrentDialog(DIALOG_NAME.COUNTRY_RESET);\n }\n else if (data.event === WEBSOCKET_EVENT.ACCOUNT_BLOCKED) {\n setCurrentDialog(DIALOG_NAME.ACCOUNT_BLOCKED);\n }\n else if (data.event === WEBSOCKET_EVENT.ACCOUNT_UNBLOCKED) {\n setCurrentDialog(DIALOG_NAME.ACCOUNT_UNBLOCKED);\n }\n }\n }, [lastMessage, setCurrentDialog]);\n\n return null;\n};\n\nexport default WebhookEventHandler;\n","import React, { lazy, useMemo } from \"react\";\n\nimport PropTypes from \"prop-types\";\nimport { useLocation } from \"react-router-dom\";\n\nimport { SERIES_ROOT } from \"src/constants\";\n\nimport { AppContext } from \"./context\";\nimport DialogWrapper from \"./dialog-wrapper\";\nimport Routes from \"./routes\";\nimport WebhookEventHandler from \"./webhook-event-handler\";\n\nconst ReloadPage = lazy(() => import(\"src/pages/Error/ReloadPage\"));\n\nconst getFlowContext = (pathname) => {\n const pathSegments = pathname.split(\"/\");\n if (pathSegments.length < 3) {\n return [null, null]; // Not enough segments to determine context\n }\n if (pathSegments[1] && pathSegments[1] === \"invitation\") {\n return [null, null]; // Invitation context is handled separately\n }\n if (\n pathSegments.length >= 3\n && Object.values(SERIES_ROOT).includes(\"/\" + pathSegments[1])\n ) {\n return [pathSegments[1], pathSegments[2]];\n }\n return [null, null]; // No valid context found\n};\n\nconst Content = ({ hasError }) => {\n const location = useLocation();\n const [context, value] = getFlowContext(location.pathname);\n const contextValue = useMemo(() => ({ context, value }), [context, value]);\n if (hasError) {\n return <ReloadPage />;\n }\n\n return (\n <AppContext.Provider value={contextValue}>\n <Routes />\n <DialogWrapper />\n <WebhookEventHandler />\n </AppContext.Provider>\n );\n};\n\nContent.propTypes = {\n hasError: PropTypes.bool,\n};\n\nexport default Content;\n","import React, { Suspense, useEffect, useMemo } from \"react\";\n\nimport { CssBaseline, ThemeProvider } from \"@mui/material\";\nimport { PrivyProvider } from \"@privy-io/react-auth\";\nimport get from \"lodash/get\";\nimport has from \"lodash/has\";\nimport PropTypes from \"prop-types\";\nimport TagManager from \"react-gtm-module\";\nimport { Toaster } from \"react-hot-toast\";\n\nimport { LoadingSpinner } from \"src/components\";\nimport { config_gtmId, config_privyAppId } from \"src/config\";\nimport usePortalItem from \"src/hooks/apis/usePortalItem\";\nimport usePrivyLoginMethod from \"src/redux/hooks/usePrivyLoginMethod\";\nimport { createTheme } from \"src/theme\";\nimport loadIntercom from \"src/utils/intercom\";\n\nimport Content from \"./content\";\n\nif (config_gtmId) {\n TagManager.initialize({ gtmId: config_gtmId });\n}\n\nconst CoreView = ({ hasError }) => {\n const { data } = usePortalItem();\n const portalItem = get(data, \"portalItem\", null);\n\n const { data: loginMethods } = usePrivyLoginMethod();\n\n useEffect(() => {\n loadIntercom();\n }, []);\n\n // Theme and logos from Series have priority over the ones from PortalItem\n const currentTheme = has(portalItem, \"series.attributes.theme.primary\")\n ? get(portalItem, \"series.attributes.theme\")\n : get(portalItem, \"attributes.theme\", null);\n const rectangleColoredLogo = has(portalItem, \"series.attributes.theme.logos.rectangle_colored\")\n ? get(portalItem, \"series.attributes.theme.logos.rectangle_colored\")\n : get(portalItem, \"logos.rectangle_colored\", null);\n const squareColoredLogo = has(portalItem, \"series.attributes.theme.logos.square_colored\")\n ? get(portalItem, \"series.attributes.theme.logos.square_colored\")\n : get(portalItem, \"logos.square_colored\", null);\n const theme = useMemo(() => createTheme({\n direction : \"ltr\",\n paletteMode : \"light\",\n responsiveFontSizes : true,\n roundedCorners : true,\n colorPreset : \"indigo\",\n contrast : \"high\",\n orgTheme : currentTheme\n }), [currentTheme]);\n\n useEffect(() => {\n if (portalItem) {\n let link = document.querySelector(\"link[rel~='icon']\");\n if (!link) {\n link = document.createElement(\"link\");\n link.rel = \"icon\";\n document.getElementsByTagName(\"head\")[0].appendChild(link);\n }\n link.href = squareColoredLogo;\n }\n }, [portalItem, squareColoredLogo]);\n\n // Render\n return (\n <Suspense fallback={<LoadingSpinner />}>\n <ThemeProvider theme={theme}>\n <CssBaseline />\n <PrivyProvider\n appId={config_privyAppId}\n config={{\n loginMethods,\n embeddedWallets: {\n showWalletUIs : false,\n createOnLogin : \"all-users\"\n },\n appearance: {\n logo : rectangleColoredLogo,\n theme : \"light\",\n accentColor : currentTheme?.primary,\n showWalletLoginFirst : false\n }\n }}\n >\n <Content\n portalItem={portalItem}\n hasError={hasError}\n />\n </PrivyProvider>\n <Toaster toastOptions={{ error: { duration: 15000 } }} />\n </ThemeProvider>\n </Suspense>\n );\n};\n\nclass ViewWrapper extends React.Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError(error) {\n // Update state so the next render will show the fallback UI.\n console.error(\"[series app] general error: \", error);\n return { hasError: true };\n }\n\n render() {\n const { hasError } = this.state;\n return <CoreView hasError={hasError} {...this.props} />;\n }\n}\n\nCoreView.propTypes = {\n hasError: PropTypes.bool,\n};\n\nexport default ViewWrapper;\n","/* eslint-disable */\n\nexport default function loadIntercom(appId) {\n setTimeout(() => {\n window.intercomSettings = {\n app_id: appId\n };\n \n var w = window;\n var ic = w.Intercom;\n if (typeof ic === \"function\") {\n ic('reattach_activator');\n ic('update', w.intercomSettings);\n } else {\n var d = document;\n var i = function() {\n i.c(arguments);\n };\n i.q = [];\n i.c = function(args) {\n i.q.push(args);\n };\n w.Intercom = i;\n var l = function() {\n var s = d.createElement('script');\n s.type = 'text/javascript';\n s.async = true;\n s.src = 'https://widget.intercom.io/widget/' + appId;\n var x = d.getElementsByTagName('script')[0];\n x.parentNode.insertBefore(s, x);\n };\n l();\n }\n }, 1);\n}\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport globalReducer from \"./slices/global\";\n\nexport default combineReducers({\n global: globalReducer\n});\n","/* eslint no-underscore-dangle: \"off\" */\n\nimport { configureStore } from \"@reduxjs/toolkit\";\n\nimport reducer from \"./reducer\";\n\nconst store = configureStore({\n reducer,\n middleware: (getDefaultMiddleware) => {\n const defaultMiddleWare = getDefaultMiddleware();\n\n return defaultMiddleWare;\n }\n});\n\nexport default store;\n","import { createGlobalStyle } from \"styled-components\";\n\nexport const HideScrollBar = createGlobalStyle`\n ::-webkit-scrollbar {\n display: none; /* Safari and Chrome */\n }\n\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n`;\n","import React from \"react\";\n\nimport { captureConsoleIntegration } from \"@sentry/browser\";\nimport { init, replayIntegration, ErrorBoundary } from \"@sentry/react\";\nimport { createRoot } from \"react-dom/client\";\nimport { HelmetProvider } from \"react-helmet-async\";\nimport { Provider } from \"react-redux\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport { SWRConfig } from \"swr\";\n\nimport {\n config_sentryDSN,\n config_REACT_APP_STAGE\n} from \"./config\";\nimport { APP_STAGE } from \"./constants\";\nimport Core from \"./pages/Core\";\nimport ReloadPage from \"./pages/Error/ReloadPage\";\nimport store from \"./redux/store\";\nimport { HideScrollBar } from \"./utils/hidescrollbar\";\n\nconst integrations = [\n captureConsoleIntegration({ levels: [\"error\"] }),\n];\n\nif (config_REACT_APP_STAGE !== APP_STAGE.DEV) {\n integrations.push(replayIntegration({\n maskAllText : false,\n blockAllMedia : false,\n }));\n}\n\ninit({\n environment : config_REACT_APP_STAGE,\n dsn : config_sentryDSN,\n integrations,\n denyUrls : [/node_modules/], // Block errors from node_modules\n sendDefaultPii : true,\n tracesSampleRate : 0.2,\n replaysSessionSampleRate : 0.1,\n replaysOnErrorSampleRate : 1.0,\n profilesSampleRate : 0.0,\n beforeSend(event) {\n // Check if the hostname is localhost\n if (window.location.hostname === \"localhost\") {\n return null;\n }\n // Filter out common browser extensions errors\n if (event.exception && event.exception.values) {\n const exceptionMessage = event.exception.values[0]?.value;\n if (exceptionMessage && (\n exceptionMessage.includes(\"chrome-extension://\")\n || exceptionMessage.includes(\"moz-extension://\")\n || exceptionMessage.includes(\"safari-extension://\")\n )) {\n return null; // Implication: We won't receive errors caused by browser extensions ie. metamask\n }\n }\n\n return event;\n },\n});\n\n/* disable logrocket (too expensive for now)\nif (config_REACT_APP_STAGE === \"production\") {\n LogRocket.init(\"8gahip/series\");\n} */\n\nconst rootElement = document.getElementById(\"root\");\nconst root = createRoot(rootElement);\n\nroot.render(\n <Provider store={store}>\n <BrowserRouter>\n <HelmetProvider>\n <HideScrollBar />\n <ErrorBoundary fallback={<ReloadPage />}>\n <SWRConfig value={{\n revalidateIfStale : false,\n revalidateOnFocus : false,\n revalidateOnReconnect : false,\n errorRetryCount : 0\n }}\n >\n <Core />\n </SWRConfig>\n </ErrorBoundary>\n </HelmetProvider>\n </BrowserRouter>\n </Provider>\n);\n"],"names":["style","theme","margin","position","top","left","color","palette","action","active","_ref","text","useTheme","_jsxs","className","styles","children","_jsx","CircularProgress","REACT_APP_DOMAIN","REACT_APP_STAGE","REACT_APP_DEVELOPMENT","process","domain","window","location","hostname","includes","APP_STAGE","DEV","config","dev","privyAppId","apiEndpoint","wsEndpoint","gtmId","intercomAppId","investorAppUrl","USDC","chain","optimismSepolia","address","staging","production","mainnet","common","sentryDSN","configuration","console","log","debug","config_REACT_APP_STAGE","config_domain","config_sentryDSN","config_privyAppId","config_intercomAppId","config_apiEndpoint","config_gtmId","config_wsEndpoint","config_USDC","config_investorAppUrl","ROUTE_PATH","ROOT","US","INTERNATIONAL","START","AUTH","AUTH_WITH_SERIES","KYB_FLOW","INVITE_DISABLED","SERIES_NOT_PUBLISHED","INVALID_INVITE","INVITE_REQUIRED","ACCEPT_GRANT","SYNDICATE","PUBLIC","INVEST","AUTH_LEVEL","FREE","SIGN_IN","DASHBOARD","CUSTOMER_SUPPORT","INTERCOM","ERXES","STAGE","PRODUCTION","COMPANY_TYPE","LLC","LP","C_COPR","S_COPR","GP","FE","TRUST","FUND","COMPANY_TRUST_TYPE","REVOCABLE","IRREVOCABLE","COMPANY_FUND_TYPE","INVESTMENT_COMPANY","A_3_C_1_FUND","A_3_C_7_FUND","ANOTHER_TYPE_OF_FUND","COMPANY_STATUS_ACTION","ACCEPT","REJECT","ACCREDITATION_ACTION","KYC_ACTION","REVIEW","AML_ACTION","SKIP","VERIFICATION_STATUS","PROHIBITED","BLOCKED","SANCTIONED","ERROR","KYC_NOT_SUBMITTED","KYC_NEED","KYC_REJECTED","KYC_IN_REVIEW","AML_NEED","AML_REJECTED","TAX_MISSING","KYB_NEED","KYB_ID_NEED","KYB_IN_REVIEW","KYB_REJECTED","ACCREDITATION_NEED","NON_ACCREDITED","NON_ACCREDITED_BUT","ROW_VERIFIED","ACCREDITED_NOT_VERIFIED","ACCREDITED_IN_REVIEW","ACCREDITED_VERIFIED","ACCREDITED_REJECTED","VISITOR","WEBSOCKET_EVENT","ACCOUNT_BLOCKED","ACCOUNT_UNBLOCKED","ACCOUNT_UPDATED","ADMIN_TOKEN_ISSUE_FAILED","ADMIN_TOKEN_ISSUE_SUCCESS","BENEFICIAL_OWNER_UPDATED","FUNDS_RECEIVED","RESET_COUNTRY","RESET_KYC","TOKEN_ISSUED","TRANSACTION_UPDATED","USER_UPDATED","GRANT_SIGNED","VESTING","VESTED","ACCREDITATION_STATUS","NO","NO_BUT","INCOME","ASSETS","LICENSE","COMPANY_ACCREDITATION_STATUS","OWNERS","BUSINESS","EXEMPTION","REGS","REGD506C","REGD506B","INVESTMENT_STATUS","SIGN_NEEDED","SIGNED","FUNDS_SENT","AWAITING_SIGNATURE","ADMIN_REFUSED","TOKENS_ISSUED","CANCELED","COMMITTED","DIALOG_NAME","WALLET_SETTINGS","KYC_RESET","KYC_FLOW","KYC_FINISHED","KYC_STATUS","KYB_REVIEW","COUNTRY_RESET","ACCESS_UNAVAILABLE","VPN_BLOCKED","SERIES_PAUSED","MAX_AMOUNT_REACHED","UNLINK_WALLET","GRANT_ACCEPT_SUCCESS","FUNDING_TYPE","BANK_TRANSFER","USDC_TRANSFER","SOLANA_TRANSFER","ETHEREUM_TRANSFER","TX_STATUS","QUEUED","PENDING","CONFIRMED","STUCK","FAILED","DROPPED","FILING_STATUS","FILED","NOT_FILED","SERIES_STATUS","SETUP","READY","LIVE","PAUSED","CLOSED","DELETED","SOFT_COMMITMENT","SERIES_TYPE","FUNDRAISING","GRANT","SHARES","ROLLUP","WARRANT","TOKEN","SPV","SERIES_ROOT","fundraising","grants","community","shares","token","guest","spv","CONTEXT","SERIES","GRANTS","INVITATION","GUEST","CONTRACT_EXEC_TRIGGER","FUNDS","TOKENS","S3_ASSET_TYPE","KYC","ACCREDITATION_PROOF","CUSTOM_LEGAL_DOC","COMPANY_DOC","CAP_TABLE","CONTRACT_SECURITIES_TYPE","CONVERTIBLE","SHARE","COMPENSATION_TYPE","OPTION","RSU","OPTION_ISO","OPTION_NSO","CONTRACT_SUBTYPE","OPTIONS","GRANT_STATUS","PENDING_TAX","PENDING_SIGNATURE","USER_DECLINED","CLIFF_PERIOD","READY_TO_ISSUE","READY_TO_EXERCISE","ISSUED","EXERCISED","FARCASTER","DRAPER","APECHAIN","BASE","SOLANA","NON_ACCREDITED_USERS_ALLOWED","DEFAULT","INVESTOR_URLS","SERIES_ROOT_PATHS","Set","Object","values","useLocation","setData","setSlug","useSlug","slug","useMemo","some","dir","pathname","startsWith","split","useEffect","useSWR","callLambda","method","service","SERVICE_1","url","unauthed","user","usePrivy","sendMessage","lastMessage","readyState","useWebSocket","queryParams","userId","id","shouldReconnect","reconnectInterval","AppContext","React","context","value","useAppContext","undefined","Error","ReloadPage","mdUp","useMediaQuery","breakpoints","down","Box","component","sx","alignItems","display","flexGrow","py","Container","maxWidth","justifyContent","mb","alt","src","ReloadSVG","height","width","Typography","align","variant","mt","Button","onClick","reload","useGlobalDialog","data","useSelector","store","_store$global","global","currentDialog","dispatch","useDispatch","useCallback","name","props","setCurrentDialog","usePrivyLoginMethod","privyLogin","payload","setPrivyLogin","slice","createSlice","initialState","reducers","state","actions","bind","fn","thisArg","apply","arguments","toString","prototype","getPrototypeOf","kindOf","cache","create","thing","str","call","toLowerCase","kindOfTest","type","typeOfTest","isArray","Array","isUndefined","isArrayBuffer","isString","isFunction","isNumber","isObject","isPlainObject","val","Symbol","toStringTag","iterator","isDate","isFile","isBlob","isFileList","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","map","forEach","obj","i","l","allOwnKeys","length","keys","getOwnPropertyNames","len","key","findKey","_key","_global","globalThis","self","isContextDefined","isTypedArray","TypedArray","Uint8Array","isHTMLForm","hasOwnProperty","prop","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","ret","defineProperties","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","toUpperCase","isAsyncFn","_setImmediate","setImmediateSupported","postMessageSupported","setImmediate","Math","random","callbacks","addEventListener","_ref2","source","shift","cb","push","postMessage","setTimeout","asap","queueMicrotask","nextTick","isBuffer","constructor","isFormData","kind","FormData","append","isArrayBufferView","result","ArrayBuffer","isView","buffer","isBoolean","isStream","pipe","merge","caseless","this","assignValue","targetKey","extend","a","b","trim","replace","stripBOM","content","charCodeAt","inherits","superConstructor","defineProperty","assign","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","String","lastIndex","indexOf","toArray","arr","forEachEntry","next","done","pair","matchAll","regExp","matches","exec","hasOwnProp","freezeMethods","enumerable","writable","set","toObjectSet","arrayOrString","delimiter","define","toCamelCase","m","p1","p2","noop","toFiniteNumber","defaultValue","Number","isFinite","generateString","size","alphabet","isSpecCompliantForm","toJSONObject","stack","visit","target","reducedValue","isThenable","then","catch","AxiosError","message","code","request","response","captureStackTrace","status","utils","toJSON","description","number","fileName","lineNumber","columnNumber","from","error","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","path","dots","concat","join","predicates","test","formData","options","TypeError","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","JSON","stringify","isFlatArray","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","toFormData","encoder","_encode","buildURL","serializeFn","serialize","serializedParams","hashmarkIndex","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","clear","h","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","document","_navigator","navigator","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","origin","href","platform","buildPath","isNumericKey","isLast","arrayToObject","entries","parsePropPath","defaults","transitional","transitionalDefaults","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","formDataToJSON","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","parser","parse","e","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","substring","parseHeaders","get","tokens","tokensRE","parseTokens","has","matcher","delete","deleted","deleteHeader","normalize","format","normalized","w","char","formatHeader","_len","targets","asStrings","first","computed","_len2","_key2","accessor","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","configurable","buildAccessors","mapped","headerValue","transformData","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","resolve","reject","ERR_BAD_REQUEST","floor","samplesCount","min","bytes","timestamps","firstSampleTS","head","tail","chunkLength","now","Date","startedAt","bytesCount","passed","round","freq","lastArgs","timer","timestamp","threshold","invoke","args","clearTimeout","flush","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","speedometer","throttle","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","event","progressEventDecorator","throttled","asyncDecorator","msie","userAgent","urlParsingNode","createElement","originURL","resolveURL","setAttribute","protocol","host","search","hash","port","charAt","requestURL","write","expires","secure","cookie","toGMTString","read","RegExp","decodeURIComponent","remove","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","configValue","newConfig","auth","btoa","username","password","unescape","Boolean","isURLSameOrigin","xsrfValue","cookies","XMLHttpRequest","Promise","_config","resolveConfig","requestData","requestHeaders","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","unsubscribe","signal","removeEventListener","onloadend","responseHeaders","getAllResponseHeaders","err","responseText","statusText","open","onreadystatechange","responseURL","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","setRequestHeader","upload","cancel","abort","subscribe","aborted","parseProtocol","send","composeSignals","signals","controller","AbortController","reason","streamChunk","chunk","chunkSize","byteLength","end","pos","readStream","async","stream","asyncIterator","reader","getReader","trackStream","onProgress","onFinish","iterable","readBytes","_onFinish","ReadableStream","pull","close","loadedBytes","enqueue","return","highWaterMark","isFetchSupported","fetch","Request","Response","isReadableStreamSupported","encodeText","TextEncoder","arrayBuffer","supportsRequestStream","duplexAccessed","hasContentType","body","duplex","supportsResponseStream","resolvers","res","_","ERR_NOT_SUPPORT","resolveBodyLength","getContentLength","_request","getBodyLength","fetchOptions","composedSignal","toAbortSignal","requestContentLength","contentTypeHeader","isCredentialsSupported","credentials","isStreamResponse","responseContentLength","responseData","knownAdapters","http","xhr","xhrAdapter","fetchAdapter","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","s","throwIfCancellationRequested","throwIfRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validator","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","warn","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","InterceptorManager","configOrUrl","dummy","boolean","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","responseInterceptorChain","promise","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","splice","c","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","axios","createInstance","defaultConfig","instance","Cancel","all","promises","spread","callback","isAxiosError","formToJSON","getAdapter","default","SERVICE_2","queryStringParameters","accessToken","getAccessToken","Authorization","t","addNewPrivateAsset","portalId","signedUrl","uploadFileToS3BySlug","getS3AssetURLRedirect","getS3AssetURLImagesRedirect","StyleSheet","_this","_insertTag","tag","before","tags","insertionPoint","nextSibling","prepend","container","firstChild","insertBefore","isSpeedy","speedy","ctr","nonce","_proto","hydrate","nodes","insert","rule","appendChild","createTextNode","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","_tag$parentNode","parentNode","removeChild","abs","fromCharCode","pattern","replacement","indexof","charat","substr","begin","strlen","sizeof","array","column","character","characters","node","root","parent","copy","prev","peek","caret","alloc","dealloc","delimit","whitespace","escaping","count","commenter","identifier","MS","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","KEYFRAMES","output","element","compile","rules","rulesets","pseudo","points","declarations","offset","atrule","property","previous","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","j","k","x","y","z","identifierWithPointTracking","getRules","toRules","fixedElements","WeakMap","compat","isImplicitRule","parentRules","removeLabel","prefix","defaultStylisPlugins","combine","createCache","ssrStyles","querySelectorAll","getAttribute","_insert","stylisPlugins","inserted","nodesToHydrate","attrib","currentSheet","finalizingPlugins","serializer","collection","middleware","selector","serialized","shouldCache","registered","memoize","arg","EmotionCacheContext","HTMLElement","CacheProvider","Provider","withEmotionCache","func","forwardRef","ref","useContext","ThemeContext","Global","serializeStyles","sheetRef","useInsertionEffectWithLayoutFallback","rehydrating","querySelector","current","sheetRefCurrent","insertStyles","nextElementSibling","css","keyframes","insertable","anim","unitlessKeys","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","scale","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","isDevelopment","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","cursor","unitless","noComponentSelectorMessage","handleInterpolation","mergedProps","interpolation","componentSelector","__emotion_styles","serializedStyles","string","asString","interpolated","_i","createStringFromObject","previousCursor","cached","labelPattern","stringMode","strings","raw","identifierName","hashString","useInsertionEffect","useInsertionEffectAlwaysWithSyncFallback","getRegisteredStyles","registeredStyles","classNames","rawClassName","registerStyles","isStringTag","getBackdropUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","defaultTheme","createTheme","themeId","defaultClassName","generateClassName","BoxRoot","styled","shouldForwardProp","styleFunctionSx","inProps","_extendSxProp","extendSxProp","other","_objectWithoutPropertiesLoose","_extends","as","clsx","createBox","THEME_ID","boxClasses","ClassNameGenerator","generate","getButtonUtilityClass","commonIconStyles","ownerState","fontSize","ButtonRoot","ButtonBase","rootShouldForwardProp","overridesResolver","capitalize","colorInherit","disableElevation","fullWidth","_theme$palette$getCon","_theme$palette","inheritContainedBackgroundColor","mode","grey","inheritContainedHoverBackgroundColor","A100","typography","button","minWidth","padding","borderRadius","vars","shape","transition","transitions","duration","short","textDecoration","backgroundColor","primaryChannel","hoverOpacity","alpha","primary","mainChannel","main","border","inheritContainedHoverBg","boxShadow","shadows","dark","buttonClasses","focusVisible","disabled","disabledBackground","getContrastText","inheritContainedBg","contrastText","borderColor","pxToRem","ButtonStartIcon","startIcon","_ref3","marginRight","marginLeft","ButtonEndIcon","endIcon","_ref4","contextProps","ButtonGroupContext","buttonGroupButtonContextPositionClassName","ButtonGroupButtonContext","resolvedProps","resolveProps","useDefaultProps","disableFocusRipple","endIconProp","focusVisibleClassName","startIconProp","slots","label","composedClasses","composeClasses","useUtilityClasses","positionClassName","focusRipple","pulsate","rippleX","rippleY","rippleSize","in","inProp","onExited","leaving","setLeaving","rippleClassName","ripple","rippleVisible","ripplePulsate","rippleStyles","childClassName","child","childLeaving","childPulsate","timeoutId","_t","_t2","_t3","_t4","enterKeyframe","exitKeyframe","pulsateKeyframe","TouchRippleRoot","overflow","pointerEvents","right","bottom","TouchRippleRipple","Ripple","touchRippleClasses","easing","easeInOut","shorter","center","centerProp","ripples","setRipples","nextKey","rippleCallback","ignoringMouseDown","startTimer","useTimeout","startTimerCommit","startCommit","oldRipples","start","fakeElement","rect","getBoundingClientRect","clientX","clientY","touches","sqrt","sizeX","max","clientWidth","sizeY","clientHeight","stop","TransitionGroup","exit","getButtonBaseUtilityClass","ButtonBaseRoot","boxSizing","WebkitTapHighlightColor","outline","userSelect","verticalAlign","MozAppearance","WebkitAppearance","borderStyle","buttonBaseClasses","colorAdjust","centerRipple","disableRipple","disableTouchRipple","LinkComponent","onBlur","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","buttonRef","rippleRef","handleRippleRef","useForkRef","isFocusVisibleRef","handleFocusVisible","handleBlurVisible","focusVisibleRef","useIsFocusVisible","setFocusVisible","focus","mountedState","setMountedState","enableTouchRipple","useRippleHandler","rippleAction","eventCallback","skipRippleAction","useEventCallback","handleMouseDown","handleContextMenu","handleDragLeave","handleMouseUp","handleMouseLeave","preventDefault","handleTouchStart","handleTouchEnd","handleTouchMove","handleBlur","handleFocus","currentTarget","isNonNativeButton","tagName","keydownRef","handleKeyDown","handleKeyUp","defaultPrevented","ComponentProp","to","buttonProps","role","handleRef","TouchRipple","getCircularProgressUtilityClass","SIZE","circularRotateKeyframe","circularDashKeyframe","CircularProgressRoot","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","thickness","circleStyle","rootStyle","rootProps","circumference","PI","toFixed","transform","viewBox","cx","cy","r","fill","defaultCreateStyledComponent","systemStyled","fixed","disableGutters","useThemePropsDefault","useThemePropsSystem","createStyledComponent","useThemeProps","componentName","ContainerRoot","paddingLeft","spacing","paddingRight","up","reduce","acc","breakpointValueKey","breakpoint","unit","xs","createContainer","useSystemDefaultProps","getFilledInputUtilityClass","inputBaseClasses","upperTheme","globalStyles","MuiGlobalStyles","SystemGlobalStyles","getInputBaseUtilityClass","getInputLabelUtilityClasses","getOutlinedInputUtilityClass","getPaperUtilityClass","getTypographyUtilityClass","TypographyRoot","noWrap","gutterBottom","paragraph","font","textAlign","textOverflow","whiteSpace","marginBottom","defaultVariantMapping","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","colorTransformations","textPrimary","secondary","textSecondary","themeProps","transformDeprecatedColors","variantMapping","Component","black","white","A200","A400","A700","light","divider","background","paper","hover","selected","selectedOpacity","disabledOpacity","focusOpacity","activatedOpacity","icon","addLightOrDark","intent","direction","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","lighten","darken","createPalette","contrastThreshold","blue","getDefaultPrimary","purple","getDefaultSecondary","red","getDefaultError","info","lightBlue","getDefaultInfo","success","green","getDefaultSuccess","warning","orange","getDefaultWarning","getContrastRatio","augmentColor","mainShade","lightShade","darkShade","_formatMuiErrorMessage","modes","deepmerge","caseAllCaps","textTransform","defaultFontFamily","createTypography","fontFamily","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem2","coef","buildVariant","letterSpacing","casing","variants","caption","overline","clone","createShadow","mobileStepper","fab","speedDial","appBar","drawer","modal","snackbar","tooltip","mixins","mixinsInput","paletteInput","transitionsInput","typographyInput","systemTheme","systemCreateTheme","muiTheme","toolbar","minHeight","createTransitions","argument","unstable_sxConfig","defaultSxConfig","unstable_sx","easeOut","easeIn","sharp","shortest","standard","complex","enteringScreen","leavingScreen","formatMs","milliseconds","getAutoHeightDuration","constant","inputTransitions","mergedEasing","mergedDuration","durationOption","easingOption","delay","animatedProp","isUnitless","parseFloat","getUnit","input","toUnitless","convertLength","baseFontSize","toUnit","fromUnit","pxLength","outputLength","alignProperty","grid","sizeBelow","sizeAbove","fontGrid","pixels","responsiveProperty","cssProperty","factor","slotShouldForwardProp","createStyled","useThemeSystem","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","Timeout","inputTypesWhitelist","tel","email","date","month","week","time","datetime","metaKey","altKey","ctrlKey","handlePointerDown","handleVisibilityChange","visibilityState","isFocusVisible","readOnly","isContentEditable","focusTriggersKeyboardModality","doc","ownerDocument","GlobalStyles","themeInput","reactPropsRegex","isPropValid","testOmitPropsOnStringTag","testOmitPropsOnComponent","getDefaultShouldForwardProp","composeShouldForwardProps","isReal","optionsShouldForwardProp","__emotion_forwardProp","propName","Insertion","newStyled","targetClassName","__emotion_real","baseTag","__emotion_base","defaultShouldForwardProp","shouldUseAs","Styled","FinalTag","classInterpolations","finalShouldForwardProp","newProps","displayName","defaultProps","withComponent","nextTag","nextOptions","StyledEngineProvider","injectFirst","emStyled","internal_processStyles","processor","_interopRequireDefault","require","exports","foreground","lumA","getLuminance","lumB","_formatMuiErrorMessage2","_clamp","clampWrapper","hexToRgb","re","colors","n","parseInt","decomposeColor","marker","colorSpace","colorChannel","decomposedColor","idx","recomposeColor","hslToRgb","f","rgb","coefficient","emphasize","systemDefaultTheme","systemSx","_styleFunctionSx","_extends2","resolveTheme","__mui_systemSx","inputOptions","_styledEngine","componentSlot","skipVariantsResolver","inputSkipVariantsResolver","skipSx","inputSkipSx","defaultOverridesResolver","lowercaseFirstLetter","_objectWithoutPropertiesLoose2","_excluded3","shouldForwardPropOption","defaultStyledResolver","transformStyleArg","stylesArg","_deepmerge","processStyleArg","muiStyledResolver","styleArg","transformedStyleArg","expressions","expressionsWithDefaultTheme","components","styleOverrides","resolvedStyleOverrides","slotKey","slotStyle","_theme$components","numOfCustomFnsApplied","placeholders","muiName","withConfig","__esModule","_getRequireWildcardCache","__proto__","getOwnPropertyDescriptor","u","_interopRequireWildcard","_createTheme","_excluded2","callableStyle","resolvedStylesArg","flatMap","resolvedStyle","isMatch","PropsContext","getThemeProps","RtlContext","useRtl","sm","md","lg","xl","defaultBreakpoints","handleBreakpoints","propValue","styleFromPropValue","themeBreakpoints","item","cssKey","createEmptyBreakpointObject","breakpointsInput","_breakpointsInput$key","removeUnusedBreakpoints","breakpointKeys","breakpointOutput","mergeBreakpointsInOrder","emptyBreakpoints","mergedOutput","resolveBreakpointValues","breakpointValues","base","customBase","breakpointsKeys","computeBreakpointsBase","applyStyles","getColorSchemeSelector","sortBreakpointsValues","breakpointsAsArray","sort","breakpoint1","breakpoint2","createBreakpoints","step","sortedValues","between","endIndex","only","not","keyIndex","spacingInput","shapeInput","mui","createUnarySpacing","argsInput","createSpacing","properties","p","directions","aliases","marginX","marginY","paddingX","paddingY","getCssProperties","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","themeKey","_getPath","themeSpacing","getPath","getValue","transformer","transformed","resolveCssProperty","cssProperties","getStyleFromPropValue","propTypes","filterProps","checkVars","getStyleValue","themeMapping","propValueFinal","userValue","borderTransform","createBorderStyle","borderTop","borderRight","borderBottom","borderLeft","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor","compose","gap","columnGap","rowGap","paletteTransform","sizingTransform","_props$theme","_props$theme2","breakpointsValues","maxHeight","bgcolor","pt","pr","pb","pl","px","paddingTop","paddingBottom","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd","mr","ml","mx","my","marginTop","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd","displayPrint","visibility","flexBasis","flexDirection","flexWrap","alignContent","alignSelf","justifyItems","justifySelf","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","fontStyle","splitProps","_props$theme$unstable","systemProps","otherProps","inSx","finalSx","unstable_createStyleFunctionSx","getThemeValue","_theme$unstable_sxCon","traverse","sxInput","sxObject","styleKey","maybeFn","objects","allKeys","object","union","every","objectsHaveSameKeys","processStyles","styledEngineStyled","useMediaQueryOld","query","defaultMatches","matchMedia","ssrMatchMedia","noSsr","setMatch","useEnhancedEffect","queryList","updateMatch","addListener","removeListener","maybeReactUseSyncExternalStore","useMediaQueryNew","getDefaultSnapshot","getServerSnapshot","getSnapshot","mediaQueryList","notify","queryInput","supportMatchMedia","useThemeWithoutDefault","contextTheme","defaultGenerator","createClassNameGenerator","configure","generator","reset","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","getUtilityClass","utilityClass","deepClone","formatMuiErrorMessage","globalStateClasses","checked","completed","expanded","focused","required","globalStatePrefix","globalStateClass","fnNameMatchRegex","getFunctionName","getFunctionComponentName","fallback","getWrappedName","outerType","innerType","wrapperName","functionName","getDisplayName","$$typeof","ForwardRef","render","Memo","defaultSlotProps","slotProps","slotPropName","setRef","refs","UNINITIALIZED","EMPTY","currentId","disposeEffect","init","initArg","useLazyRef","Q","Function","Z","L","v","o","nn","add","X","Map","q","rn","d","freeze","isFrozen","tn","U","g","O","S","P","M","H","A","I","N","R","D","E","F","T","C","en","on","Proxy","revocable","revoke","proxy","J","K","G","W","B","Reflect","for","ownKeys","getOwnPropertySymbols","isNaN","deleteProperty","setPrototypeOf","un","produce","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","op","$","an","createThunkMiddleware","extraArgument","getState","thunk","withExtraArgument","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","__REDUX_DEVTOOLS_EXTENSION__","proto","baseProto","createAction","prepareAction","actionCreator","prepared","__spreadValues","meta","MiddlewareArray","_super","__extends","species","__spreadArray","EnhancerArray","freezeDraftable","isDraftable","createNextState","curryGetDefaultMiddleware","_c","middlewareArray","immutableCheck","serializableCheck","actionCreatorCheck","thunkMiddleware","getDefaultMiddleware","IS_PRODUCTION","configureStore","rootReducer","curriedGetDefaultMiddleware","_d","_e","_f","devTools","_g","preloadedState","_h","enhancers","combineReducers","finalMiddleware","middlewareEnhancer","applyMiddleware","finalCompose","compose2","trace","defaultEnhancers","storeEnhancers","composedEnhancer","createStore","executeReducerBuilderCallback","builderCallback","defaultCaseReducer","actionsMap","actionMatchers","builder","addCase","typeOrActionCreator","addMatcher","addDefaultCase","_reducer","reducerNames","sliceCaseReducersByName","sliceCaseReducersByType","actionCreators","buildReducer","extraReducers","finalCaseReducers","mapOrBuilderCallback","getInitialState","finalActionMatchers","finalDefaultCaseReducer","isStateFunction","frozenInitialState_1","caseReducers","cr","previousState","caseReducer","isDraft2","isDraftable2","createNextState2","draft","createReducer","actionMatchers_1","reducerName","prepareCallback","maybeReducerWithPrepare","prepare","nanoid","commonProperties","RejectWithValue","FulfillWithMeta","miniSerializeError","simpleError","commonProperties_1","createAsyncThunk2","typePrefix","payloadCreator","requestId","__spreadProps","requestStatus","pending","serializeError","rejectedWithValue","condition","AC","class_1","dispatchEvent","throwIfAborted","extra","abortReason","idGenerator","abortController","promise2","__async","conditionResult","_a","sent","abortedPromise","_b","getPendingMeta","race","rejectWithValue","fulfillWithValue","finalAction","err_1","dispatchConditionRejection","unwrap","unwrapResult","withTypes","alm","createQueueWithTimer","requestAnimationFrame","enableES5","Action","PopStateEventType","createBrowserHistory","getUrlBasedHistory","globalHistory","createLocation","usr","createPath","invariant","cond","getHistoryState","parsePath","parsedPath","hashIndex","searchIndex","getLocation","createHref","validateLocation","defaultView","v5Compat","history","Pop","getIndex","handlePop","nextIndex","delta","createURL","URL","replaceState","listen","encodeLocation","Push","historyState","pushState","DOMException","Replace","go","ResultType","matchRoutes","routes","locationArg","basename","matchRoutesImpl","allowPartial","stripBasename","branches","flattenRoutes","score","siblings","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","decoded","decodePath","matchRouteBranch","parentsMeta","parentPath","flattenRoute","route","relativePath","caseSensitive","joinPaths","computeScore","_route$path","exploded","explodeOptionalSegments","segments","rest","isOptional","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","compiledParams","regexpSource","paramName","compilePath","captureGroups","memo","splatValue","startIndex","nextChar","getInvalidPathError","field","dest","getPathContributingMatches","getResolveToMatches","v7_relativeSplatPath","pathMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","paths","AbortedDeferredError","isRouteErrorResponse","internal","validMutationMethodsArr","validRequestMethodsArr","DEFAULT_ENVIRONMENT","DEBUG_BUILD","__SENTRY_DEBUG__","getGlobalEventProcessors","getGlobalSingleton","addGlobalEventProcessor","notifyEventProcessors","processors","hint","SyncPromise","logger","final","captureException","exception","getCurrentHub","parseEventHintOrCaptureContext","captureMessage","captureContext","level","captureEvent","addBreadcrumb","breadcrumb","setContext","setTag","setUser","withScope","hub","scope","getStackTop","getClient","getCurrentScope","getScope","startSession","client","isolationScope","getIsolationScope","currentScope","release","environment","getOptions","GLOBAL_OBJ","session","makeSession","getUser","currentSession","getSession","updateSession","endSession","setSession","closeSession","_sendSessionUpdate","captureSession","API_VERSION","SDK_VERSION","DEFAULT_BREADCRUMBS","Hub","assignedScope","assignedIsolationScope","_version","Scope","setClient","_stack","bindClient","_isolationScope","isOlderThan","setupIntegrations","pushScope","getStack","popScope","maybePromiseResult","eventId","_lastEventId","event_id","uuid4","syntheticException","originalException","lastEventId","beforeBreadcrumb","maxBreadcrumbs","mergedBreadcrumb","dateTimestampInSeconds","finalBreadcrumb","consoleSandbox","emit","setTags","setExtras","extras","setExtra","configureScope","run","oldHub","makeMain","getIntegration","integration","_oO","startTransaction","customSamplingContext","_callExtensionMethod","traceHeaders","shouldSendDefaultPii","sendDefaultPii","sentry","getMainCarrier","__SENTRY__","extensions","registry","getHubFromCarrier","setHubOnCarrier","acs","getGlobalHub","hasHubOnCarrier","carrier","globalScope","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_attachments","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","_propagationContext","generatePropagationContext","newScope","_level","_span","_session","_transactionName","_fingerprint","_requestSession","_client","addScopeListener","addEventProcessor","ip_address","_notifyScopeListeners","getRequestSession","setRequestSession","requestSession","setFingerprint","fingerprint","setLevel","setTransactionName","setSpan","span","getSpan","getTransaction","transaction","update","scopeToMerge","scopeData","getScopeData","contexts","propagationContext","scopeContext","maxCrumbs","breadcrumbs","getLastBreadcrumb","clearBreadcrumbs","addAttachment","attachment","getAttachments","attachments","clearAttachments","eventProcessors","sdkProcessingMetadata","transactionName","applyToEvent","additionalEventProcessors","applyScopeDataToEvent","setSDKProcessingMetadata","newData","setPropagationContext","getPropagationContext","getGlobalScope","traceId","spanId","startingTime","timestampInSeconds","sid","started","errors","ignoreDuration","dropUndefinedKeys","did","abnormal_mechanism","attrs","ipAddress","user_agent","sessionToJSON","getDynamicSamplingContextFromClient","trace_id","publicKey","public_key","getDsn","user_segment","dsc","getDynamicSamplingContextFromSpan","spanToJSON","txn","getRootSpan","v7FrozenDsc","_frozenDynamicSamplingContext","sampleRate","maybeSampleRate","metadata","sample_rate","jsonSpan","sampled","spanIsSampled","cleanedExtra","cleanedTags","cleanedUser","cleanedContexts","applyDataToEvent","spanToTraceContext","rootSpan","dynamicSamplingContext","applySpanToEvent","arrayify","applyFingerprintToEvent","mergedBreadcrumbs","applyBreadcrumbsToEvent","applySdkMetadataToEvent","mergeScopeData","mergeData","mergeAndOverwriteScopeData","mergeVal","prepareEvent","normalizeDepth","normalizeMaxBreadth","integrations","dist","maxValueLength","truncate","applyClientOptions","integrationNames","sdk","applyIntegrationsMetadata","stackParser","debugIdMap","_sentryDebugIds","debugIdStackFramesCache","cachedDebugIdStackFrameCache","debugIdStackParserCache","filenameDebugIdMap","debugIdStackTrace","parsedStack","cachedParsedStack","stackFrame","filename","stacktrace","frames","frame","debug_id","applyDebugIds","finalScope","getFinalScope","mechanism","addExceptionMechanism","clientEventProcessors","getEventProcessors","isolationData","finalScopeData","evt","abs_path","debug_meta","images","code_file","applyDebugMeta","depth","maxBreadth","spans","normalizeEvent","hintIsScopeOrFunction","captureContextKeys","hintIsScopeContext","TRACE_FLAG_SAMPLED","span_id","spanContext","parent_span_id","getSpanJSON","spanIsSpanClass","traceFlags","WINDOW","getGlobalObject","DEFAULT_MAX_STRING_LENGTH","htmlTreeAsString","elem","currentElem","MAX_TRAVERSE_HEIGHT","out","separator","sepLength","nextStr","keyAttrs","maxStringLength","_htmlElementAsString","reverse","attr","dataset","keyAttrPairs","keyAttr","keyAttrPair","allowedAttrs","getLocationHref","oO","getComponentName","isBrowserBundle","__SENTRY_BROWSER_BUNDLE__","getSDKSource","objectToString","isError","wat","isInstanceOf","isBuiltin","isErrorEvent","isDOMError","isDOMException","isParameterizedString","isPrimitive","isEvent","Event","isElement","Element","isSyntheticEvent","isVueViewModel","__isVue","_isVue","CONSOLE_LEVELS","originalConsoleMethods","wrappedFuncs","wrappedLevels","originalConsoleMethod","enabled","enable","disable","isEnabled","makeLogger","gbl","crypto","msCrypto","getRandomByte","randomUUID","getRandomValues","typedArray","getFirstException","getEventDescription","firstException","addExceptionTypeValue","newMechanism","currentMechanism","handled","mergedData","checkOrSetAlreadyCaught","__sentry_captured__","addNonEnumerableProperty","maybeArray","isNodeEnv","maxProperties","Infinity","normalizeToSize","maxSize","encodeURI","utf8Length","hasWeakSet","WeakSet","inner","memoBuilder","unmemoize","stringified","_events","objName","getConstructorName","stringifyValue","remainingDepth","valueWithToJSON","numAdded","visitable","convertToPlainObject","visitKey","visitValue","replacementFactory","original","wrapped","markFunctionWrapped","o_O","getOriginalFunction","__sentry_original__","urlEncode","getOwnProperties","newObj","serializeEventTarget","CustomEvent","detail","extractedProps","extractExceptionKeysForMessage","maxLength","includedKeys","inputValue","_dropUndefinedKeys","memoizationMap","isPojo","memoVal","returnValue","STACKTRACE_FRAME_LIMIT","WEBPACK_ERROR_REGEXP","STRIP_FRAME_REGEXP","createStackParser","parsers","sortedParsers","skipFirst","lines","cleanedLine","localStack","stripSentryFramesAndReverse","stackParserFromStackParserOptions","defaultFunctionName","safeJoin","stringMatchesSomePattern","testString","requireExactStringMatch","isMatchingPattern","States","resolvedSyncPromise","rejectedSyncPromise","__init","__init2","__init3","__init4","_state","_handlers","_reject","onrejected","_executeHandlers","finally","onfinally","isRejected","_setResult","RESOLVED","REJECTED","cachedHandlers","handler","ONE_SECOND_IN_MS","performance","approxStartingTimeOrigin","timeOrigin","createUnixTimestampInSecondsFunc","_browserPerformanceTimeOriginMode","browserPerformanceTimeOrigin","performanceNow","dateNow","timeOriginDelta","timeOriginIsReliable","navigationStart","timing","navigationStartDelta","isGlobalObj","creator","getBrowerCrypto","getSubtleCrypto","browserCrypto","subtle","webkitSubtle","isReactNative","versions","tslib_1","__exportStar","extendStatics","__","__assign","__rest","propertyIsEnumerable","__decorate","decorators","decorate","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","__awaiter","_arguments","__generator","trys","ops","verb","__createBinding","k2","__values","__read","ar","__spread","__spreadArrays","il","jl","__await","__asyncGenerator","resume","fulfill","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","__importStar","mod","__importDefault","__classPrivateFieldGet","receiver","privateMap","__classPrivateFieldSet","module","SIXTY_SECONDS","ONE_MINUTE","SIXTY_MINUTES","ONE_HOUR","TWENTY_FOUR_HOURS","ONE_DAY","SEVEN_DAYS","ONE_WEEK","constants_1","seconds","ONE_THOUSAND","miliseconds","Watch","elapsed","elliptic","rand","curve","curves","ec","eddsa","BN","getNAF","getJSF","assert","BaseCurve","conf","prime","mont","zero","toRed","one","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","bitLength","adjustCount","div","cmpn","redN","_maxwellTrick","BasePoint","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","naf","nafW","repr","jpoint","mixedAdd","neg","toP","_wnafMul","nafPoints","_getNAFPoints","wnd","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","cmp","toJ","redNeg","jsf","ja","jb","tmp","eq","decodePoint","enc","pointFromX","encodeCompressed","compact","getX","getY","isEven","precompute","power","beta","_getBeta","_hasDoubles","ceil","dbl","Base","EdwardsCurve","twisted","mOneA","extended","umod","c2","redSqr","dd","redAdd","fromRed","oneC","Point","zOne","redMul","redInvm","_mulA","num","_mulC","odd","x2","rhs","redSub","lhs","y2","redSqrt","isOdd","pointFromY","isInfinity","fromJSON","inspect","_extDbl","redIAdd","redISub","nx","ny","nt","nz","_projDbl","_extAdd","_projAdd","mul","mulAdd","k1","jmulAdd","zi","eqXToP","rx","xc","iadd","edwards","MontCurve","i4","a24","aa","bb","diffAdd","diff","da","bits","iushrn","andln","jumlAdd","ShortCurve","tinv","zeroA","threeA","sub","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","isRed","inf","forceRed","JPoint","modn","lambda","betas","_getEndoRoots","lambdas","basis","vec","_getEndoBasis","ntinv","a0","b0","a1","b1","a2","b2","prevR","aprxSqrt","ushrn","x1","y1","len1","sqr","negative","_endoSplit","v1","v2","c1","divRound","q1","q2","ax","_endoWnafMulAdd","npoints","ncoeffs","ineg","pre","endoMul","obj2point","ys1","dyinv","_precompute","negate","zinv","zinv2","ay","pz2","z2","u1","u2","s1","s2","pow","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","t1","t2","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","c8","gamma","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","z3","pz3","zs","PresetCurve","defineCurve","sha256","sha384","sha512","HmacDRBG","KeyPair","Signature","EC","nh","keyPair","keyFromPrivate","priv","fromPrivate","keyFromPublic","pub","fromPublic","genKeyPair","drbg","pers","persEnc","entropy","hmacStrength","entropyEnc","ns2","iaddn","_truncateToN","msg","truncOnly","isBN","sign","msgBitLength","isNeg","bkey","getPrivate","ns1","iter","kp","kpX","invm","recoveryParam","canonical","verify","signature","sinv","getPublic","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Qprime","_importPrivate","privEnc","_importPublic","pubEnc","derive","_importDER","Position","place","getLength","buf","initial","octetLen","off","rmPadding","constructLength","octets","LN2","rlen","slen","toDER","backHalf","parseBytes","EDDSA","pointClass","encodingLength","secret","keyFromSecret","hashInt","messagePrefix","Rencoded","encodePoint","s_","pubBytes","makeSignature","sig","gte","SG","intFromLE","digest","fromSecret","lastIx","normed","xIsOdd","encodeInt","decodeInt","isPoint","cachedProperty","_secret","_pub","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","toHex","minAssert","minUtils","zero2","ws","isubn","m8","d1","d2","m14","m24","computer","getFromWindow","getFromWindowOrThrow","window_getters_1","loc","getDocumentOrThrow","getLocationOrThrow","getWindowMetadataOfAny","metaTags","getElementsByTagName","attributes","title","getName","icons","links","link","rel","absoluteHref","absoluteUrl","getIcons","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","ctor","superCtor","super_","TempCtor","endian","words","_init","wordSize","parseHex4Bits","parseHexByte","lowerBound","parseBase","_initNumber","_initArray","_parseHex","_parseBase","strip","limbLen","limbPow","word","imuln","_iaddn","_expand","_normSign","zeros","groupSizes","groupBases","smallMulTo","lo","carry","ncarry","rword","maxJ","groupSize","groupBase","isZero","idivn","toNumber","toBuffer","toArrayLike","ArrayType","reqLength","littleEndian","clz32","_countBits","_zeroBits","hi","zeroBits","toTwos","inotn","fromTwos","testn","notn","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","isub","comb10MulTo","mid","al0","ah0","al1","ah1","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","bl0","bh0","bl1","bh1","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","mulTo","hncarry","bigMulTo","makeRBT","revBin","rb","permute","rbt","rws","iws","rtws","itws","rtwdf","cos","itwdf","sin","rtwdf_","itwdf_","ie","ro","io","guessLen13b","conjugate","normalize13b","convert13b","stub","ph","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","isqr","toBitArray","iushln","carryMask","newCarry","ishln","mask","maskedWords","ishrn","shln","ushln","shrn","imaskn","maskn","addn","subn","iabs","_ishlnsubmul","_wordDiv","bhi","qj","divmod","positive","divn","dm","half","r2","egcd","yp","xp","im","jm","gcd","_invmp","bincn","ucmp","gtn","gt","gten","ltn","lt","lten","lte","eqn","Red","ctx","convertTo","_forceRed","convertFrom","redShl","shl","_verify2","redIMul","_verify1","redISqr","redPow","primes","k256","p224","p192","p25519","MPrime","_tmp","K256","P224","P192","P25519","_prime","Mont","imod","rinv","minv","ireduce","imulK","_strip","outLen","mod3","nOne","lpow","inv","currentLen","Rand","_rand","getBytes","getByte","randomBytes","base64","ieee754","customInspectSymbol","K_MAX_LENGTH","createBuffer","RangeError","encodingOrOffset","allocUnsafe","encoding","isEncoding","actual","fromString","arrayView","isInstance","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","numberIsNaN","fromObject","toPrimitive","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","utf16leToBytes","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","foo","typedArraySupport","poolSize","allocUnsafeSlow","_isBuffer","compare","list","swap16","swap32","swap64","toLocaleString","equals","thisStart","thisEnd","thisCopy","targetCopy","_arr","hexSliceLookupTable","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","sym","getMessage","super","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","received","isInteger","INVALID_BASE64_RE","leadSurrogate","base64clean","dst","table","i16","BufferBigIntNotDefined","__self__","support","viewClasses","normalizeName","iteratorFor","items","Headers","consumed","bodyUsed","fileReaderReady","onload","readBlobAsArrayBuffer","blob","FileReader","readAsArrayBuffer","bufferClone","view","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","_bodyFormData","DataView","_bodyArrayBuffer","readAsText","readBlobAsText","chars","readArrayBufferAsText","decode","json","oldValue","methods","upcased","normalizeMethod","referrer","form","bodyInit","ok","redirectStatuses","redirect","abortXhr","polyfill","ponyfill","dijkstra","single_source_shortest_paths","graph","predecessors","costs","closest","cost_of_s_to_u","adjacent_nodes","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","PriorityQueue","make","empty","cost","extract_shortest_path_from_predecessor_list","find_path","queue","sorter","default_sorter","Events","EE","once","emitter","_eventsCount","clearEvent","EventEmitter","eventNames","events","names","listeners","listenerCount","removeAllListeners","prefixed","ReflectOwnKeys","ReflectApply","NumberIsNaN","errorListener","resolver","eventTargetAgnosticAddListener","flags","addErrorHandlerIfEventEmitter","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","that","_addListener","existing","newListener","warned","onceWrapper","fired","wrapFn","_onceWrap","evlistener","unwrapListeners","arrayClone","wrapListener","setMaxListeners","getMaxListeners","doError","er","prependListener","prependOnceListener","originalListener","spliceOne","rawListeners","charsets","calcCharsetLength","charset","sha","ripemd","hmac","sha1","sha224","ripemd160","BlockHash","pendingTotal","blockSize","outSize","padLength","_delta8","_delta32","join32","_update","_pad","_digest","Hmac","Hash","outer","rotl32","sum32","sum32_3","sum32_4","RIPEMD160","Kh","Ah","Bh","Ch","Dh","Eh","rh","sh","toHex32","split32","shaCommon","sum32_5","ft_1","sha1_K","SHA1","SHA256","SHA224","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","T1","T2","SHA512","SHA384","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","ch64_hi","xh","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","ah","al","bh","bl","ch","cl","dh","dl","eh","fh","fl","gh","gl","hh","hl","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","rotr32","p32","isSurrogatePair","htonl","zero8","predResist","minEntropy","_reseed","reseedInterval","V","nonceEnc","seed","_hmac","kmac","reseed","addEnc","temp","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","argIndex","framesToPop","HASH_UNDEFINED","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","freeSelf","freeExports","nodeType","freeModule","moduleExports","freeProcess","nodeUtil","binding","nodeIsTypedArray","arraySome","predicate","mapToArray","setToArray","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","uid","IE_PROTO","nativeObjectToString","reIsNative","symToStringTag","nativeGetSymbols","nativeIsBuffer","nativeKeys","getNative","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","entry","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","assocIndexOf","baseGetTag","isOwn","unmasked","getRawTag","baseIsArguments","isObjectLike","baseIsEqual","bitmask","customizer","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othProps","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isMasked","baseKeys","Ctor","isPrototype","seen","arrValue","othIndex","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","getSymbols","getMapData","isKeyable","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","symbol","ctorString","isLength","baseUnary","hashClear","hashDelete","hashGet","hashHas","hashSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","stackClear","stackDelete","stackGet","stackHas","stackSet","baseAssignValue","objectCreate","baseCreate","baseFor","createBaseFor","castPath","toKey","nativeKeysIn","isProto","assignMergeValue","baseMergeDeep","keysIn","safeGet","baseMerge","srcIndex","srcValue","newValue","cloneBuffer","cloneTypedArray","copyArray","initCloneObject","isArrayLikeObject","toPlainObject","mergeFunc","isCommon","isTyped","identity","overRest","setToString","baseSetToString","arrayMap","isSymbol","symbolToString","baseToString","isKey","stringToPath","isDeep","cloneArrayBuffer","isNew","baseRest","isIterateeCall","assigner","sources","guard","fromRight","getPrototype","overArg","hasFunc","isArrayLike","reIsDeepProp","reIsPlainProp","types","nativeMax","otherArgs","shortOut","nativeNow","lastCalled","stamp","memoizeCapped","rePropName","reEscapeChar","quote","subString","baseGet","baseHas","hasPath","stubFalse","objectCtorString","baseIsTypedArray","baseKeysIn","memoized","Cache","createAssigner","copyObject","equal","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","browser","argv","cwd","chdir","umask","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","getShim","isRequired","ReactPropTypes","bigint","bool","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","exact","checkPropTypes","PropTypes","canPromise","QRCode","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","canvas","argsNum","isLastArgCb","getContext","toCanvas","toDataURL","renderToDataURL","getSymbolSize","getRowColCoords","posCount","intervals","positions","getPositions","coords","posLength","Mode","ALPHA_NUM_CHARS","AlphanumericData","ALPHANUMERIC","getBitsLength","bitBuffer","put","BitBuffer","bufIndex","putBit","getLengthInBits","BitMatrix","reservedBit","row","col","reserved","isReserved","ByteData","BYTE","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","errorCorrectionLevel","getTotalCodewordsCount","isValid","Utils","G15_BCH","getBCHDigit","getEncodedBits","EXP_TABLE","LOG_TABLE","exp","KanjiData","KANJI","toSJIS","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PenaltyScores","getMaskAt","maskPattern","getPenaltyN1","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","darkCount","modulesCount","applyMask","getBestMask","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","penalty","VersionCheck","Regex","NUMERIC","ccBits","MIXED","getCharCountIndicator","getBestModeForData","dataStr","testNumeric","testAlphanumeric","testKanji","NumericData","group","remainingNum","GF","coeff","divident","divisor","generateECPolynomial","degree","poly","AlignmentPattern","FinderPattern","MaskPattern","ECCode","ReedSolomonEncoder","Version","FormatInfo","Segments","setupFormatInfo","matrix","createData","dataTotalCodewordsBits","getSymbolTotalCodewords","remainingByte","totalCodewords","ecTotalCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup2","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","rs","dcData","ecData","maxDataSize","dataSize","createCodewords","createSymbol","fromArray","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","moduleCount","modules","setupFinderPattern","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","inc","bitIndex","byteIndex","setupData","toSJISFunc","setToSJISFunction","Polynomial","genPoly","initialize","paddedData","remainder","buff","numeric","kanji","byte","BYTE_KANJI","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","getStringByteLength","getSegments","regex","getSegmentsFromString","numSegs","alphaNumSegs","byteSegs","kanjiSegs","isKanjiModeEnabled","getSegmentBitsLength","buildSingleSegment","modesHint","bestMode","seg","segs","buildNodes","prevNodeIds","nodeGroup","currentNodeIds","lastCount","prevNodeId","buildGraph","optimizedSegs","curr","prevSeg","mergeSegments","toSJISFunction","CODEWORDS_COUNT","digit","G18_BCH","getReservedBitsCount","getTotalBitsFromDataArray","totalBits","reservedBits","getCapacity","usableBits","ecl","currentVersion","getBestVersionForMixedData","getBestVersionForDataLength","qrData","canvasEl","getCanvasElement","getImageWidth","image","createImageData","qrToImageData","clearRect","clearCanvas","putImageData","rendererOpts","quality","getColorAttrib","hex","svgCmd","cmd","qrcodesize","bg","moveBy","newRow","lineLength","qrToPath","svgTag","hex2rgba","hexCode","hexValue","getScale","qrSize","imgData","qr","symbolSize","scaledMargin","posDst","pxColor","tryStringify","ss","argLen","lastPos","flen","ex","React__default","UAParser","ClientUAInstance","getBrowser","cpu","getCPU","device","getDevice","engine","getEngine","os","getOS","ua","getUA","setUa","userAgentString","setUA","parseUserAgent","UserAgentInstance","UA","setUserAgent","UAHelper","enumerableOnly","symbols","_typeof","_defineProperties","_defineProperty","_getPrototypeOf","_setPrototypeOf","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","_assertThisInitialized","ReferenceError","_slicedToArray","_arrayWithHoles","_s","_n","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","arr2","DeviceTypes","BrowserTypes","Chrome","Firefox","Opera","Yandex","Safari","InternetExplorer","Edge","Chromium","Ie","MobileSafari","EdgeChromium","MIUI","SamsungBrowser","OsTypes","IOS","Android","WindowsPhone","Windows","MAC_OS","InitialDeviceTypes","isMobile","isTablet","isSmartTV","isConsole","isWearable","setDefaults","getNavigatorInstance","isIOS13Check","nav","maxTouchPoints","MSStream","mobilePayload","_objectSpread2","vendor","model","osVersion","isMobileType","isTabletType","isMobileAndTabletType","isSmartTVType","isBrowserType","_ref5","isWearableType","_ref6","isConsoleType","_ref7","isEmbeddedType","_ref8","getMobileVendor","_ref9","getMobileModel","_ref10","getDeviceType","_ref11","isAndroidType","_ref12","isWindowsType","_ref13","isMacOsType","_ref14","isWinPhoneType","_ref15","isIOSType","_ref16","getOsVersion","_ref17","getOsName","_ref18","isChromeType","_ref19","isFirefoxType","_ref20","isChromiumType","_ref21","isEdgeType","_ref22","isYandexType","_ref23","isSafariType","_ref24","isMobileSafariType","_ref25","isOperaType","_ref26","isIEType","_ref27","isMIUIType","_ref28","isSamsungBrowserType","_ref29","getBrowserFullVersion","_ref30","getBrowserVersion","_ref31","major","getBrowserName","_ref32","getEngineName","_ref33","getEngineVersion","_ref34","isElectronType","isEdgeChromiumType","getIOS13","getIPad13","getIphone13","getIPod13","getUseragent","userAg","buildSelectorsObject","isEmbedded","isMobileSafari","isChromium","isMobileOnly","isDesktop","isAndroid","isWinPhone","isIOS","isChrome","isFirefox","isSafari","isOpera","isIE","osName","fullBrowserVersion","browserVersion","browserName","mobileVendor","mobileModel","engineName","engineVersion","isEdge","isYandex","deviceType","isIOS13","isIPad13","isIPhone13","isIPod13","isElectron","isEdgeChromium","isLegacyEdge","isWindows","isMacOs","isMIUI","isSamsungBrowser","useDeviceData","hookUserAgent","ca","ea","fa","ha","ia","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","removeAttribute","setAttributeNS","xlinkHref","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","construct","Pa","Qa","_context","_payload","Ra","Sa","Ta","nodeName","Va","_valueTracker","setValue","stopTracking","Ua","Wa","Xa","activeElement","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","ab","db","eb","fb","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","textContent","kb","lb","nb","MSApp","execUnsafeLocalFunction","namespaceURI","innerHTML","ob","lastChild","nodeValue","lineClamp","qb","sb","setProperty","tb","menuitem","area","br","embed","hr","img","keygen","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","Wb","memoizedState","dehydrated","Xb","Zb","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","pc","qc","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","ed","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","vd","Ad","screenX","screenY","pageX","pageY","shiftKey","getModifierState","zd","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Jd","clipboardData","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Rd","repeat","locale","which","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","targetTouches","changedTouches","Xd","Zd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","$d","ae","be","documentMode","ce","de","fe","ge","he","le","me","ne","oe","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Je","Ke","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","of","pf","qf","rf","sf","capture","passive","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","_owner","_stringRef","Mg","Ng","Og","Pg","Qg","Rg","implementation","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","_currentValue","childLanes","dependencies","firstContext","lanes","memoizedValue","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","effects","lh","mh","eventTime","lane","oh","qh","th","uh","vh","wh","revealOrder","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","Ih","Jh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","Uh","Vh","Wh","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","Xh","Yh","Zh","$h","ai","bi","ci","di","lastEffect","stores","ei","fi","gi","ii","destroy","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","Ai","Bi","readContext","useImperativeHandle","useLayoutEffect","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","Di","Ei","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","shouldComponentUpdate","isPureReactComponent","Gi","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","bj","cj","dj","baseLanes","cachePool","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","pj","sj","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","tailMode","xj","Dj","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onclick","createElementNS","autoFocus","Gj","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","_reactRootContainer","Wj","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","Vk","lk","mk","nk","Y","pk","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","mutableSourceEagerHydrationData","pendingSuspenseBoundaries","yj","Zk","kl","reportError","ll","_internalRoot","nl","ol","rl","ql","unmount","unstable_scheduleHydration","sl","usingClientEntryPoint","tl","findFiberByHostInstance","bundleType","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","createPortal","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","_warn","_warn2","Snippets","dataLayer","dataLayerName","preview","gtm_auth","gtm_preview","iframe","script","dataLayerVar","_dataLayer","_Snippets","_Snippets2","TagManager","dataScript","gtm","snippets","noScript","noscript","_ref$events","_ref$dataLayerName","_ref$auth","_ref$preview","childNodes","_ref2$dataLayerName","_TagManager","_TagManager2","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","FRAGMENT","accesskey","class","contenteditable","contextmenu","itemprop","tabindex","cssText","toComponent","titleAttributes","bodyAttributes","htmlAttributes","noscriptTags","styleTags","linkTags","scriptTags","prioritizeSeoTags","priorityMethods","instances","setHelmet","helmet","helmetInstances","canUseDOM","encodeSpecialCharacters","helmetData","styleSheet","isEqualNode","oldTags","newTags","onChangeClientState","rendered","emitChange","defer","cancelAnimationFrame","mapNestedChildrenToProps","flattenArrayTypeChildren","arrayTypeChildren","newChildProps","nestedChildren","mapObjectTypeChildren","mapArrayTypeChildrenToProps","warnOnInvalidChildren","mapChildrenToProps","Consumer","defaultTitle","titleTemplate","hasElementType","hasMap","hasSet","hasArrayBuffer","it","SuspenseList","isSuspenseList","getModuleId","batch","getBatch","ContextKey","gT","_gT$ContextKey","contextMap","realContext","ReactReduxContext","createReduxContextHook","useReduxContext","useSyncExternalStoreWithSelector","notInitialized","refEquality","createSelectorHook","useDefaultReduxContext","equalityFnOrOptions","equalityFn","stabilityCheck","noopCheck","subscription","getServerState","globalStabilityCheck","globalNoopCheck","wrappedSelector","selectedState","addNestedSub","nullListeners","createSubscription","parentSub","subscriptionsAmount","selfSubscribed","handleChangeWrapper","onStateChange","trySubscribe","isSubscribed","createListenerCollection","tryUnsubscribe","cleanupListener","removed","notifyNestedSubs","getListeners","useIsomorphicLayoutEffect","serverState","contextValue","Context","createStoreHook","useStore","createDispatchHook","useDefaultStore","newBatch","initializeConnect","DataRouterContext","DataRouterStateContext","NavigationContext","LocationContext","RouteContext","outlet","isDataRoute","RouteErrorContext","useInRouterContext","UNSAFE_invariant","static","useNavigate","router","useDataRouterContext","DataRouterHook","UseNavigateStable","useCurrentRouteId","DataRouterStateHook","activeRef","navigate","fromRouteId","useNavigateStable","dataRouterContext","future","routePathnamesJson","UNSAFE_getResolveToMatches","relative","useNavigateUnstable","useParams","routeMatch","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathnameBase","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","parentSegments","renderedMatches","_renderMatches","navigationType","DefaultErrorComponent","_state$errors","useDataRouterState","UseRouteError","routeId","useRouteError","lightgrey","preStyles","defaultErrorElement","RenderErrorBoundary","revalidation","errorInfo","routeContext","RenderedRoute","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","_dataRouterState","_future","v7_partialHydration","initialized","errorIndex","findIndex","renderFallback","fallbackIndex","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","loader","lazy","reduceRight","shouldRenderHydrateFallback","alreadyWarned$1","getChildren","hookName","useRouteContext","thisRoute","alreadyWarned","logDeprecation","flag","logV6DeprecationWarnings","renderFuture","routerFuture","v7_startTransition","v7_fetcherPersist","v7_normalizeFormMethod","v7_skipActionErrorRevalidation","Navigate","isStatic","jsonPath","Route","_props","Router","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","createRoutesFromChildren","treePath","hasErrorBoundary","shouldRevalidate","handle","getChildMapping","mapFn","Children","isValidElement","mapper","getProp","getNextChildMapping","nextProps","prevChildMapping","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","cloneElement","enter","_React$Component","handleExited","isMounting","firstRender","_inheritsLoose","mounted","setState","appear","currentChildMapping","_this$props","childFactory","TransitionGroupContext","use_websocket_1","use_socket_io_1","use_event_source_1","util_1","socket_io_1","heartbeat_1","webSocketInstance","setters","optionsRef","reconnect","reconnectCount","lastMessageTime","interval","cancelReconnectOnClose","cancelReconnectOnError","setLastMessage","setReadyState","fromSocketIO","setUpSocketIOPing","onmessage","onMessage","heartbeat","returnMessage","bindMessageHandler","onopen","onOpen","ReadyState","OPEN","WebSocket","heartbeatOptions","bindOpenHandler","isEventSourceSupported","EventSource","assertIsWebSocket","skipAssert","onclose","onClose","reconnectAttempts","DEFAULT_RECONNECT_LIMIT","nextReconnectInterval","reconnectTimeout","DEFAULT_RECONNECT_INTERVAL_MS","onReconnectStop","bindCloseHandler","wasClean","retryOnError","bindErrorHandler","CLOSING","clearInterval","globals_1","manage_subscribers_1","getSubscribers","subscriber","sharedWebSockets","EMPTY_EVENT_HANDLERS","eventSourceSupported","attach_listener_1","attach_shared_listeners_1","webSocketRef","startRef","eventSourceOptions","share","clearSocketIoPingInterval","CONNECTING","attachSharedListeners","addSubscriber","removeSubscriber","hasSubscribers","socketLike","cleanSubscribers","attachListeners","url_1","optionsRef_1","retriedAttempts","convertedUrl","reconnectLimit","getUrl","parsedUrl","parseSocketIOUrl","appendQueryParams","DEFAULT_HEARTBEAT","heartbeatInterval","setInterval","subscribers","EMPTY_LIST","webSocket","websocketWrapper","isSecure","removedFinalBackSlack","SOCKET_IO_PATH","alreadyHasParams","SOCKET_IO_PING_INTERVAL","SOCKET_IO_PING_CODE","react_1","connect","DEFAULT_EVENT_SOURCE_OPTIONS","optionsWithEventSource","eventsRef","getWebSocket","lastEvent","getEventSource","emptyEvent","DEFAULT_OPTIONS","optionsWithSocketIO","sendJsonMessage","socketIOLastMessage","getSocketData","lastJsonMessage","react_dom_1","create_or_join_1","get_url_1","proxy_1","UNPARSABLE_JSON_OBJECT","messageQueue","webSocketProxy","optionsCache","readyStateFromUrl","UNINSTANTIATED","stringifiedQueryParams","keep","removeListeners_1","expectClose_1","createOrJoin_1","start_1","ABORTED","protectedSetLastMessage","protectedSetReadyState","createOrJoinSocket","skip","resetSubscribers","resetWebSockets","__self","__source","jsx","jsxs","forceUpdate","escape","_status","_result","PureComponent","act","createContext","_currentValue2","_threadCount","_defaultValue","_globalName","createFactory","createRef","startTransition","unstable_act","toPropertyKey","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observer","observeState","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","nextState","previousStateForKey","nextStateForKey","funcs","middlewares","_dispatch","middlewareAPI","_objectSpread","sortIndex","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","objA","objB","compareContext","keysA","keysB","bHasOwnProperty","valueA","valueB","pack","SuppressedError","lift","prefixer","REACT_APP_SC_ATTR","SC_ATTR","SC_DISABLE_SPEEDY","REACT_APP_SC_DISABLE_SPEEDY","Uint32Array","indexOfGroup","insertRules","clearGroup","deleteRule","getGroup","getRule","registerName","__webpack_nonce__","isServer","useCSSOMInjection","gs","server","registerId","rehydrate","reconstructWithOptions","allocateGSInstance","hasNameForId","clearNames","clearRules","clearTag","replaceAll","plugins","namespace","stylis","Ge","disableCSSOMInjection","enableVendorPrefixes","isCss","styledComponentId","staticRulesId","componentId","baseHash","baseStyle","generateAndInjectStyles","et","parentComponentId","componentStyle","foldedComponentIds","forwardedAs","_foldedDefaultProps","at","ct","ut","dt","ht","createStyles","removeStyles","renderStyles","ft","_emitSheetCSS","getStyleTags","sealed","getStyleElement","seal","collectStyles","interleaveWithNodeStream","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","SUFFIX_BROWSER","enumerize","enums","str1","str2","lowerize","rgxMapper","arrays","strMapper","windowsVersionMap","ME","XP","Vista","RT","regexes","tablet","EDGE","getResult","_ua","_uach","userAgentData","_rgxmap","mergedRegexes","_isSelfNav","_browser","brave","isBrave","_cpu","_device","mobile","standalone","_engine","_os","CPU","DEVICE","ENGINE","OS","jQuery","Zepto","inst","hasValue","pino","_console","defd","pfGlobalThisOrFallback","stdSerializers","mapHttpRequest","mock","mapHttpResponse","wrapRequestSerializer","passthrough","wrapResponseSerializer","wrapErrorSerializer","req","transmit","asObject","serializers","shouldSerialize","stdErrSerialize","fatal","levels","setOpts","getTimeFunction","_serialize","_stdErrSerialize","bindings","childOptions","childOptionsSerializers","childSerializers","childSerialize","applySerializers","Child","_childLevel","_logEvent","createLogEventShape","levelVal","ts","argsCloned","lvl","transmitLevel","transmitValue","methodValue","methodLevel","messages","wrap","nullTime","epochTime","labels","stdTimeFunctions","unixTime","isoTime","HMAC","finished","destroyed","assertHash","iHash","blockLen","outputLen","pad","oHash","assertExists","digestInto","assertBytes","_cloneInto","_0n","_1n","_2n","isBytes","abytes","abool","hexes","padStart","bytesToHex","numberToHexUnpadded","hexToNumber","asciis","_0","_9","_A","_F","asciiToBase16","hexToBytes","n1","n2","bytesToNumberBE","bytesToNumberLE","numberToBytesBE","numberToBytesLE","ensureBytes","expectedLength","concatBytes","sum","isPosBig","inRange","aInRange","bitLen","bitMask","u8n","u8fr","createHmacDrbg","hashLen","qByteLen","hmacFn","gen","genUntil","pred","validatorFns","stringOrUint8Array","isSafeInteger","Fp","validateObject","optValidators","checkField","fieldName","checkVal","_3n","_4n","_5n","_8n","modulo","pow2","invert","FpSqrt","p1div4","eql","nv","ONE","legendreC","Q1div2","ZERO","tonelliShanks","FIELD_FIELDS","nLength","nBitLength","_nBitLength","nByteLength","Field","ORDER","redef","BITS","BYTES","sqrtP","MASK","is0","FpPow","sqrN","addN","subN","mulN","invertBatch","lst","nums","lastMultiplied","inverted","FpInvertBatch","cmov","fromBytes","getFieldBytesLength","fieldOrder","getMinHashLength","pointPrecomputes","pointWindowSizes","validateBasic","Gx","Gy","validateSigVerOpts","lowS","prehash","b2n","h2b","DER","Err","_tlv","dataLen","lenLen","lengthBytes","_int","toSig","int","tlv","seqBytes","seqLeftBytes","rBytes","rLeftBytes","sBytes","sLeftBytes","hexFromSig","seq","weierstrassPoints","CURVE","allowedPrivateKeyLengths","wrapPrivateKey","isTorsionFree","clearCofactor","allowInfinityPoint","splitScalar","validatePointOpts","Fn","_isCompressed","toAffine","weierstrassEquation","x3","normPrivateKeyToScalar","lengths","assertPrjPoint","toAffineMemo","iz","pz","assertValidMemo","fromAffine","normalizeZ","toInv","fromHex","assertValidity","fromPrivateKey","privateKey","multiply","msm","scalars","wbits","windowSize","buckets","lastBits","scalar","resI","sumI","double","pippenger","_setWindowSize","wnaf","setWindowSize","hasEvenY","X1","Y1","Z1","X2","Y2","Z2","U1","U2","X3","Y3","Z3","t0","t3","t4","t5","subtract","wNAF","wNAFCached","multiplyUnsafe","unsafeLadder","k1neg","k2neg","k1p","k2p","fake","f1p","f2p","constTimeNegate","multiplyAndAddUnsafe","cofactor","toRawBytes","isCompressed","_bits","validateW","windows","elm","precomputeWindow","precomputes","maxNumber","shiftBy","offset1","offset2","cond1","cond2","comp","ProjectivePoint","isWithinCurveOrder","weierstrass","curveDef","bits2int","bits2int_modN","validateOpts","CURVE_ORDER","compressedLen","uncompressedLen","modN","invN","cat","sqrtError","suffix","numToNByteStr","isBiggerThanHalfOrder","slcNum","recovery","fromCompact","fromDER","addRecoveryBit","recoverPublicKey","msgHash","rec","radj","ir","hasHighS","normalizeS","toDERRawBytes","toDERHex","toCompactRawBytes","toCompactHex","isValidPrivateKey","randomPrivateKey","fieldLen","reduced","isProbPub","ORDER_MASK","int2octets","prepSig","defaultSigOpts","extraEntropy","ent","h1int","seedArgs","k2sig","kBytes","normS","defaultVerOpts","getPublicKey","getSharedSecret","privateA","publicB","privKey","_sig","derError","getHash","msgs","secp256k1P","secp256k1N","divNearest","sqrtMod","_6n","_11n","_22n","_23n","_44n","_88n","b11","b22","b44","b88","b176","b220","b223","secp256k1","defHash","createCurve","POW_2_128","exists","checkFinished","Chi","Maj","HashMD","padOffset","createView","take","dataView","roundClean","setBigUint64","_32n","_u32_max","wl","setUint32","oview","SHA256_K","SHA256_IV","SHA256_W","getUint32","W15","W2","s0","rotr","wrapConstructor","u32","byteSwap","byteSwap32","hashCons","hashC","bytesLength","providerDetails","requestProviders","providerDetail","uuid","added","unwatch","findProvider","rdns","find","getProviders","emitImmediately","MISSING_OR_INVALID_PRIVY_APP_ID","MISSING_OR_INVALID_PRIVY_ACCOUNT_ID","INVALID_DATA","LINKED_TO_ANOTHER_USER","ALLOWLIST_REJECTED","OAUTH_USER_DENIED","UNKNOWN_AUTH_ERROR","USER_EXITED_AUTH_FLOW","MUST_BE_AUTHENTICATED","UNKNOWN_CONNECT_WALLET_ERROR","GENERIC_CONNECT_WALLET_ERROR","CLIENT_REQUEST_TIMEOUT","INVALID_CREDENTIALS","UNKNOWN_ERROR","eipCode","retryable","E4001_DEFAULT_USER_REJECTED_REQUEST","E4100_DEFAULT_UNAUTHORIZED","E4200_DEFAULT_UNSUPPORTED_METHOD","E4900_DEFAULT_DISCONNECTED","E4901_DEFAULT_CHAIN_DISCONNECTED","E32700_DEFAULT_PARSE_ERROR","E32600_DEFAULT_INVALID_REQUEST","E32601_DEFAULT_METHOD_NOT_FOUND","E32602_DEFAULT_INVALID_PARAMS","E32603_DEFAULT_INTERNAL_ERROR","E32000_DEFAULT_INVALID_INPUT","E32001_DEFAULT_RESOURCE_NOT_FOUND","E32002_DEFAULT_RESOURCE_UNAVAILABLE","E32003_DEFAULT_TRANSACTION_REJECTED","E32004_DEFAULT_METHOD_NOT_SUPPORTED","E32005_DEFAULT_LIMIT_EXCEEDED","E32006_DEFAULT_JSON_RPC_VERSION_NOT_SUPPORTED","E32002_CONNECTION_ALREADY_PENDING","E32002_REQUEST_ALREADY_PENDING","E32002_WALLET_LOCKED","E4001_USER_REJECTED_REQUEST","_globalThis","ofetch","createFetch","localStorage","getItem","setItem","del","removeItem","getKeys","_cache","details","ERROR_USER_EXISTS","ERROR_TIMED_OUT","ERROR_WALLET_CONNECTION","ERROR_USER_REJECTED_CONNECTION","ERROR_USER_LIMIT_REACHED","walletClientType","connected","connectorType","connectedAt","chainType","isInstalled","buildConnectedWallet","signMessage","sendTransaction","signTransaction","signAllTransactions","toBase58","imported","isConnected","disconnect","getProvider","syncAccounts","walletBranding","wallets","subscribeListeners","shouldAttemptAutoConnect","autoConnect","showPrompt","promptConnection","getConnectedWallet","onDisconnect","onConnect","onReadyStateChange","unsubscribeListeners","autoConnectEnabled","login","onComplete","logout","onSuccess","connectWallet","createWallet","linkAccount","configureMfa","onMfaRequired","setWalletPassword","setWalletRecovery","signTypedData","signSolanaTransaction","signSolanaMessage","sendSolanaTransaction","onAccessTokenGranted","onAccessTokenRemoved","oAuthAuthorization","onOAuthTokenGrant","fundWallet","onUserExited","fundSolanaWallet","customAuth","onAuthenticated","onUnauthenticated","exportSolanaWallet","createEmbeddedSolanaWallet","solanaWallets","embeddedSolanaWallets","ready","exportWallet","groups","chainId","provider","amount","appConfig","fundWalletConfig","methodScreen","chainIdOverride","comingFromSendTransactionScreen","fundingConfig","defaultRecommendedCurrency","chains","defaultRecommendedAmount","asset","erc20","defaultFundingMethod","erc20Address","erc20ContractInfo","decimals","isUSDC","supportedOptions","usingDefaultFundingMethod","preferredCardProvider","card","preferredProvider","crossChainBridgingEnabled","cluster","rpcUrl","solanaClusters","moonpayConfigOverride","uiConfig","ArrowLeftIcon","svgRef","titleId","xmlns","strokeLinecap","strokeLinejoin","ArrowRightIcon","QuestionMarkCircleIcon","XMarkIcon","BrowserInfo","NodeInfo","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","SEARCHBOT_OS_REGEX","userAgentRules","operatingSystemRules","detect","matchUserAgent","matched","uaMatch","matchedRule","versionParts","createVersionParts","detectOS","searchBotMatch","errorConfig","getDocsUrl","docsBaseUrl","docsPath","docsSlug","BaseError","shortMessage","docsUrl","metaMessages","walk","isHex","strict","SizeExceedsPaddingSizeError","targetSize","hexOrBytes","hex_","padHex","paddedBytes","padEnd","padBytes","IntegerOutOfRangeError","signed","SizeOverflowError","givenSize","size_","hexToBigInt","_v","numberToHex","value_","stringToHex","boolToHex","maxValue","minValue","numberToBytes","boolToBytes","stringToBytes","charCodeMap","nine","charCodeToBase16","hexString","nibbleLeft","nibbleRight","U32_MASK64","fromBig","Al","rotlSH","rotlSL","rotlBH","rotlBL","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","_7n","_256n","_0x71n","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","rotlL","Keccak","enableXOF","rounds","posOut","anumber","state32","keccak","idx1","idx0","B0","B1","Tl","curH","curL","keccakP","aexists","finish","writeInto","bufferOut","xofInto","xof","aoutput","keccak_256","keccak256","to_","LruMap","firstKey","checksumAddressCache","checksumAddress","address_","hexAddress","toRecoveryBit","yParityOrV","recoverAddress","hashHex","signature_","yParity","recoveryBit","signatureHex","safeJsonParse","serializedData","JSONParse","safeJsonStringify","BASE_MAP","LEADER","FACTOR","iFACTOR","decodeUnsafe","psz","zeroes","b256","it3","it4","vch","pbegin","pend","b58","it1","it2","coerce","Encoder","baseEncode","Decoder","baseDecode","codePointAt","prefixCodePoint","decoder","ComposedDecoder","decoders","Codec","baseX","basex","rfc4648","bitsPerChar","codes","written","SyntaxError","TextDecoder","base2","base8","base10","base16","base16upper","base32","base32upper","base32pad","base32padupper","base32hex","base32hexupper","base32hexpad","base32hexpadupper","base32z","base36","base36upper","base58btc","base58flickr","base64pad","base64url","base64urlpad","alphabetBytesToChars","alphabetCharsToBytes","base256emoji","byts","byt","encode_1","oldOffset","INT","MSB","MSBALL","counter","REST$1","MSB$1","N1","N2","N3","N4","N5","N6","N7","N8","N9","encodeTo","varint","sizeOffset","digestOffset","Digest","Hasher","textEncoder","textDecoder","bases","identityBase","base58","createCodec","ascii","utf8","latin1","binary","waku","publish","batchPublish","batchSubscribe","batchUnsubscribe","batchFetchMessages","irn","iridium","IEvents","asyncCall","function_","arguments_","isPureObject","checkBufferSupport","BASE64_PREFIX","normalizeKey","joinKeys","_len4","_key4","normalizeBaseKey","memory","getInstance","hasItem","getItemRaw","setItemRaw","dispose","createStorage","mounts","driver","mountpoints","watching","watchListeners","getMount","relativeKey","getMounts","includeParent","mountpoint","relativeBase","onChange","stopWatch","runBatch","commonOptions","batches","mount","isStringItem","options2","flat","storage","destr","getItems","deserializeRaw","watch","setItems","serializeRaw","removeMeta","removeMata","getMeta","nativeOnly","atime","mtime","setMeta","maskedMounts","rawKeys","fullKey","startWatch","unwatcher","_dispose","parents","promisifyRequest","oncomplete","onsuccess","dbName","storeName","indexedDB","onupgradeneeded","createObjectStore","dbp","txMode","objectStore","defaultGetStoreFunc","defaultGetStore","eachCursor","openCursor","continue","PARSE_ERROR","INVALID_REQUEST","METHOD_NOT_FOUND","INVALID_PARAMS","INTERNAL_ERROR","SERVER_ERROR","RESERVED_ERROR_CODES","STANDARD_ERROR_MAP","DEFAULT_ERROR","isReservedErrorCode","getError","getErrorByCode","parseConnectionError","payloadId","getBigIntRpcId","formatJsonRpcRequest","jsonrpc","formatJsonRpcResult","formatJsonRpcError","formatErrorMessage","matchRegexProtocol","getUrlProtocol","isHttpUrl","isWsUrl","isJsonRpcPayload","isJsonRpcRequest","isJsonRpcResponse","isJsonRpcResult","isJsonRpcError","createStoreImpl","createState","partial","api","createImpl","useBoundStore","CheckIcon","Square2StackIcon","GlobeAltIcon","appId","rpcUrls","privyWalletOverride","privy","searchParams","public","isIterable","hasIterableEntries","compareEntries","mapA","mapB","useSyncExternalStoreExports","createWithEqualityFnImpl","defaultEqualityFn","useBoundStoreWithEqualityFn","useStoreWithEqualityFn","isApexWallet","isAvalanche","isBackpack","isBifrost","isBitKeep","isBitski","isBlockWallet","isBraveWallet","isClover","isCoin98","isCoinbaseWallet","isDawn","isDefiant","isDesig","isEnkrypt","isExodus","isFordefi","isFrame","isFrontier","isGamestop","isHaqqWallet","isHyperPay","isImToken","isHaloWallet","isKuCoinWallet","isMathWallet","isNovaWallet","isOkxWallet","isOKExWallet","isOneInchIOSWallet","isOneInchAndroidWallet","isOneKey","isPhantom","isRabby","isRainbow","isSafePal","isStatus","isSubWallet","isTalisman","isTally","isTaho","isTokenPocket","isTokenary","isTrust","isTrustWallet","isTTWallet","isXDEFI","isZeal","isZerion","isMetaMask","providers","ethereum","delayMs","maxAttempts","abortSignal","verifyingContract","salt","EIP712Domain","shortName","universalLink","universal","deepLink","native","execute","wallet","disableSignup","_meta","authenticate","authenticateWithSiweInternal","linkWithSiweInternal","buildMessage","preparedMessage","_getNonceOnce","generateSiweNonce","captchaToken","getNonceOnce","authenticateWithSiwsInternal","linkWithSiwsInternal","generateSiwsNonce","siteKey","setToken","setError","setExecuting","waitForResult","privyErrorCode","captchaSiteKey","captchaEnabled","getResponse","CAPTCHA_TIMEOUT","linked","rpcTimeouts","tt","switchChain","proxyProvider","chainName","nativeCurrency","blockExplorerUrls","blockExplorers","getEthereumProvider","defaultChain","onAccountsChanged","onChainChanged","rpcConfig","rpcTimeoutDuration","walletProvider","_subscriptions","eventName","walletTimeout","setWalletProvider","listings","ot","st","homepage","createProvider","peer","walletEntry","WalletConnectModal","projectId","walletConnectCloudProjectId","themeVariables","explorerRecommendedWalletIds","subscribeModal","onQrModalClosed","resetConnection","signer","redirectUri","fallbackUniversalRedirectUri","closeModal","shouldEnforceDefaultChainOnConnect","optionalChains","optionalEvents","optionalMethods","rpcMap","showQrModal","privyAppName","abortPairingAttempt","showPrivyQrModal","openModal","uri","enableProvider","accounts","setWalletEntry","ResizeObserver","contentRect","observe","unobserve","fail","wt","vt","yt","bt","loading","loadingText","kt","Ct","xt","At","It","Tt","St","invisible","Et","isSubmitting","Mt","$isSubmitting","Nt","backFn","Lt","nextFn","Pt","infoFn","Rt","Wt","Ft","closeable","closePrivyModal","Ot","Dt","Ut","zt","Bt","$t","Vt","app","legal","privacyPolicyUrl","termsAndConditionsUrl","requireUsersAcceptTerms","alwaysShowImplicitConsent","jt","appearance","Ht","footerLogo","Zt","showCopyIcon","clipboard","writeText","qt","Gt","Xt","Jt","linkedAccounts","Yt","Qt","Kt","createOnLogin","solana","$isLoading","isLoading","isPulsing","$color","$isPulsing","loginAccount","accountType","CANNOT_LINK_MORE_OF_TYPE","walletLogo","backgroundSize","$state","errMsg","balance","showIcon","statusColor","xmlnsXlink","xmlSpace","ry","cellSize","bgColor","fgColor","matrixSize","sizePercentage","outputSize","_ref35","logo","$size","$bgColor","$borderColor","colorScheme","$fgColor","squareLogoElement","enableBackground","gradientUnits","gradientTransform","stopColor","fillRule","clipRule","clipPath","_ref36","Intl","NumberFormat","currency","maximumFractionDigits","tr","rr","nr","lr","sr","_ref37","_ref38","readContract","abi","dr","inputs","outputs","payable","stateMutability","_ref39","_ref40","ur","internalType","fr","_ref41","getBalance","reloadBalance","wr","_ref42","$error","_ref43","_ref44","gr","_ref45","vr","isModalOpen","compareIterables","iteratorA","iteratorB","nextA","nextB","createWithEqualityFn","unencoded","encodeBase64","encoded","atob","decodeBase64","JOSEError","JWTInvalid","decodeJwt","jwt","rnds8","rng","byteToHex","unsafeStringify","rnds","ScopedLocalStorage","storeObject","loadObject","scopedKey","keysToRemove","clearAll","standardErrorCodes","invalidInput","resourceNotFound","resourceUnavailable","transactionRejected","methodNotSupported","limitExceeded","invalidRequest","methodNotFound","invalidParams","userRejectedRequest","unauthorized","unsupportedMethod","disconnected","chainDisconnected","unsupportedChain","errorValues","FALLBACK_MESSAGE","getMessageFromCode","fallbackMessage","codeString","hasKey","isJsonRpcServerError","shouldIncludeStack","isValidCode","_error","originalError","assignOriginalError","hasStringProperty","standardErrors","getEthJsonRpcError","getEthProviderError","custom","EthereumProviderError","parseOpts","EthereumRpcError","isValidEthProviderCode","HexString","AddressString","BigIntString","IntNumber","INT_STRING_REGEX","HEXADECIMAL_STRING_REGEX","randomBytesHex","uint8ArrayToHex","hexStringToUint8Array","hexStringFromBuffer","includePrefix","encodeToHexString","ensureBuffer","bigIntStringFromBigInt","hexStringFromNumber","has0xPrefix","strip0x","prepend0x","isHexString","ensureEvenLengthHexString","ensureHexString","ensureAddressString","ensureIntNumber","ensureBigInt","EUCLID","isBigNumber","ensureParsedJSONObject","getFavicon","getFormat","keyType","exportKeyToHexString","exported","exportKey","importKeyFromHexString","importKey","namedCurve","encryptContent","sharedSecret","plainText","iv","cipherText","encrypt","decryptContent","encryptedData","decrypt","OWN_PRIVATE_KEY","storageKey","OWN_PUBLIC_KEY","PEER_PUBLIC_KEY","SCWKeyManager","ownPrivateKey","ownPublicKey","peerPublicKey","getOwnPublicKey","loadKeysIfNeeded","setPeerPublicKey","storeKey","generateKeyPair","newKeyPair","generateKey","loadKey","deriveKey","deriveSharedSecret","fetchRPCRequest","requestBody","getCoinbaseInjectedProvider","preference","appName","appLogoUrl","appChainIds","extension","coinbaseWalletExtension","setAppInfo","getInjectedEthereum","isCoinbaseBrowser","ACCOUNTS_KEY","ACTIVE_CHAIN_STORAGE_KEY","AVAILABLE_CHAINS_STORAGE_KEY","WALLET_CAPABILITIES_STORAGE_KEY","SCWSigner","communicator","keyManager","handshake","createRequestMessage","decryptResponseMessage","waitForPopupLoaded","handshakeMessage","postRequestAndWaitForResponse","failure","sender","sendRequestToPopup","handleSwitchChainRequest","sendEncryptedRequest","cleanup","updateChain","popupResult","encrypted","availableChains","walletCapabilities","capabilities","newAvailableChains","LOCAL_STORAGE_ADDRESSES_KEY","isErrorResponse","errorMessage","WalletLinkCipher","ivBytes","secretKey","encryptedResult","authTag","encryptedPlaintext","authTagBytes","encryptedPlaintextBytes","concattedBytes","algo","decrypted","WalletLinkHTTP","linkAPIUrl","sessionId","sessionKey","markUnseenEventsAsSeen","fetchUnseenEvents","responseEvents","ConnectionState","WalletLinkWebSocket","setConnectionStateListener","connectionStateListener","setIncomingDataListener","incomingDataListener","WebSocketClass","pendingData","clearWebSocket","DISCONNECTED","CONNECTED","sendData","WalletLinkConnection","lastHeartbeatResponse","nextReqId","_connected","_linked","shouldFetchUnseenEventsOnConnect","requestResolutions","handleSessionMetadataUpdated","handleDestroyed","handleAccountUpdated","handleWalletUsernameUpdated","handleAppVersionUpdated","JsonRpcUrl","handleChainUpdated","__destroyed","resetAndReload","cipher","encryptedEthereumAddress","accountUpdated","handleMetadataUpdated","encryptedMetadataValue","decryptedValue","metadataUpdated","walletUsername","appVersion","encryptedChainId","encryptedJsonRpcUrl","jsonRpcUrl","chainUpdated","handleConnected","updateLastHeartbeat","fetchUnseenEventsAPI","onlineGuests","handleIncomingEvent","makeRequest","onceLinked","linkedUpdated","setOnceLinked","decryptedData","handleWeb3ResponseMessage","checkUnseenEvents","publishEvent","unencryptedData","callWebhook","relaySource","HEARTBEAT_INTERVAL","reqId","RelayEventManager","_nextRequestId","makeRequestId","idStr","STORAGE_KEY_SESSION_ID","STORAGE_KEY_SESSION_SECRET","STORAGE_KEY_SESSION_LINKED","WalletLinkSession","save","load","persistLinked","frameElement","isInIFrame","isDarkMode","injectCssReset","styleEl","__k","__b","__e","__c","__v","__i","__u","vnode","__d","__r","debounceRendering","__P","__n","__E","__h","_sb","__s","localName","__m","diffed","__H","__N","__f","Snackbar","nextItemKey","darkMode","attach","presentItem","itemProps","SnackbarContainer","SnackbarInstance","autoExpand","menuItems","hidden","setHidden","setExpanded","timers","toggleExpanded","svgWidth","svgHeight","defaultFillRule","defaultClipRule","WalletLinkRelayUI","attached","showConnecting","snackbarProps","isUnlinkedErrorState","onResetConnection","onCancel","RedirectDialog","present","RedirectDialogContent","onDismiss","buttonText","onButtonClick","CB_KEYS_URL","WALLETLINK_URL","WLMobileRelayUI","redirectDialog","redirectToCoinbaseWallet","walletLinkUrl","anchorTag","click","openCoinbaseWalletDeeplink","_options","WalletLinkRelay","chainCallbackParams","isMobileWeb","isLinked","cachedAddresses","addresses","wasConnectedViaStandalone","chainCallback","selectedAddress","accountsCallback","accountRequestCallbackIds","invokeCallback","connection","relayEventManager","storedSession","signEthereumTransaction","sendRequest","fromAddress","toAddress","weiValue","gasPriceInWei","maxFeePerGas","maxPriorityFeePerGas","gasLimit","shouldSubmit","signAndSubmitEthereumTransaction","submitEthereumTransaction","signedTransaction","getWalletLinkSession","hideSnackbarItem","publishWeb3RequestCanceledEvent","handleErrorResponse","publishWeb3RequestEvent","requestEthereumAccounts","watchAsset","addEthereumChain","iconUrls","switchEthereumChain","errorCode","DEFAULT_CHAIN_ID_KEY","DEFAULT_JSON_RPC_URL","WalletLinkSigner","_relay","_addresses","_storage","initializeRelay","relay","_eth_requestAccounts","updateProviderInfo","originalChainId","getChainId","chainIdNumber","isApproved","switchResponse","_setAddresses","newAddresses","ecRecover","personalSign","_eth_signTransaction","_eth_sendRawTransaction","_eth_sendTransaction","_ensureKnownAddress","addressString","addressStr","_prepareTransactionParams","tx","gasPrice","gas","addPrefix","rawData","typedDataJson","eth_signTypedData_v1","eip712","hashForSignTypedDataLegacy","eth_signTypedData_v3","hashForSignTypedData_v3","eth_signTypedData_v4","hashForSignTypedData_v4","eth_signTypedData","SIGNER_TYPE_KEY","fetchSignerType","handshakeRequest","walletlink","listenForWalletLinkSessionRequest","checkCrossOriginOpenerPolicy","getCrossOriginOpenerPolicy","createCoopChecker","crossOriginOpenerPolicy","openPopup","innerWidth","innerHeight","sdkName","sdkVersion","coop","appendAppInfoQueryParams","popupId","popup","Communicator","responsePromise","closed","getErrorObject","docUrl","ProviderEventEmitter","CoinbaseWalletProvider","keysUrl","signerType","initSigner","checkErrorForInvalidRequestArgs","requestSignerSelection","storeSignerType","ephemeralSigner","createSigner","CoinbaseWalletSDK","storeLatestVersion","makeWeb3Provider","attribution","auto","dataSuffix","validatePreferences","getCoinbaseWalletLogo","InvalidDecimalNumberError","parseEther","ether","integer","fraction","rounded","parseUnits","etherUnits","converter","defaultAttributes","toUTCString","stringifiedAttributes","jar","withAttributes","withConverter","DEFAULT_SCRIPT_ID","DEFAULT_ONLOAD_NAME","checkElementExistence","getElementById","CONTAINER_STYLE_SET","normal","interactionOnly","getTurnstileSizeOpts","Turnstile","scriptOptions","onWidgetLoad","onExpire","onBeforeInteractive","onAfterInteractive","onUnsupported","onLoadScript","injectScript","divProps","widgetSize","containerStyle","setContainerStyle","execution","containerRef","firstRendered","widgetId","setWidgetId","turnstileLoaded","setTurnstileLoaded","containerId","scriptId","scriptLoaded","setScriptLoaded","checkScriptExists","MutationObserver","childList","subtree","useObserveScript","onLoadCallbackName","renderConfig","sitekey","cData","language","responseField","responseFieldName","retry","retryInterval","refreshExpired","renderConfigStringified","turnstile","id2","isExpired","appendTo","crossOrigin","injectTurnstileScript","newWidgetId","ExclamationTriangleIcon","WalletIcon","ExclamationCircleIcon","ArrowTopRightOnSquareIcon","DocumentCheckIcon","EnvelopeIcon","PhoneIcon","CheckCircleIcon","XCircleIcon","CloudArrowUpIcon","NoSymbolIcon","getRandomBytes","numBytes","MAXIMUM_TWO_BYTE_VALUE","getOneByteRandomInteger","getTwoByteRandomInteger","byte1","byte2","getRandomNumberLessThan","needsTwoBytes","getRandomNumber","randomNumberMax","randomNumber","getRandomNumbersInRange","EFF_LONG_WORDLIST","DEFAULT_WORDLIST","ArrowPathIcon","EyeIcon","EyeSlashIcon","KeyIcon","ArrowDownTrayIcon","ClipboardDocumentCheckIcon","DocumentDuplicateIcon","UserCircleIcon","LockClosedIcon","buy","ETH","BTC","SOL","POL","isPossiblePhoneNumber","_normalizeArguments","normalizeArguments","extract","phoneNumber","parsePhoneNumber","isPossible","getCountryCallingCode","withMetadataArgument","_getCountryCallingCode","AsYouTypeState","onCountryChange","onCallingCodeChange","_classCallCheck","country","callingCode","international","missingPlus","IDDPrefix","digits","resetNationalSignificantNumber","initCountryAndCallingCode","nationalSignificantNumber","getNationalDigits","nationalSignificantNumberMatchesInput","nationalPrefix","carrierCode","complexPrefixBeforeNationalSignificantNumber","_Object$keys","setCountry","setCallingCode","nextDigits","DIGIT_PLACEHOLDER","DIGIT_PLACEHOLDER_MATCHER","times","cutAndStripNonPairedParens","cutBeforeIndex","dangling_braces","cleared_string","_dangling_braces","stripNonPairedParens","formatCompleteNumber","shouldTryNationalPrefixFormattingRule","getSeparatorAfterNationalPrefix","formattedNumber","formatNationalNumber","useNationalPrefixFormattingRule","formatNationalNumberWithAndWithoutNationalPrefixFormattingRule","formattedNationalNumber","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","parseDigits","isValidFormattedNationalNumber","PatternParser","instructions","parsePattern","_this$context$","expandSingleElementArray","OPERATOR","operator","rightPart","startContext","endContext","oneOfSet","parseOneOfSet","ILLEGAL_CHARACTER_REGEXP","prevValue","nextValue","PatternMatcher","matchTree","allowOverflow","_match","matchedChars","tree","characterString","partialMatch","restCharacters","_step","_iterator","_createForOfIteratorHelperLoose","_step2","_iterator2","_char","LONGEST_DUMMY_PHONE_NUMBER","NATIONAL_PREFIX_SEPARATORS_PATTERN","CREATE_CHARACTER_CLASS_PATTERN","CREATE_STANDALONE_DIGIT_PATTERN","NON_ALTERING_FORMAT_REG_EXP","VALID_PUNCTUATION","AsYouTypeFormatter","resetFormat","chosenFormat","template","nationalNumberTemplate","populatedNationalNumberTemplate","populatedNationalNumberTemplatePosition","numberingPlan","isNANP","matchingFormats","formats","narrowDownMatchingFormats","checkNumberLength","formattedCompleteNumber","setNationalNumberTemplate","formatNationalNumberWithNextDigits","previouslyChosenFormat","newlyChosenFormat","chooseFormat","formatNextNationalNumberDigits","_this2","leadingDigits","leadingDigitsPatternIndex","formatSuits","formatMatches","usesNationalPrefix","nationalPrefixIsOptionalWhenFormattingInNationalFormat","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","leadingDigitsPatternsCount","leadingDigitsPatterns","leadingDigitsPattern","internationalFormat","_this3","_loop","getFormatFormat","createTemplateForFormat","_ret","getTemplateForFormat","nationalPrefixFormattingRule","internationalPrefix","getInternationalPrefixBeforeCountryCallingCode","getDigitsWithoutInternationalPrefix","strictPattern","nationalNumberDummyDigits","nationalPrefixIncludedInTemplate","numberFormat","numberFormatWithNationalPrefix","FIRST_GROUP_PATTERN","applyInternationalSeparatorStyle","populateTemplateWithDigits","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART","VALID_DIGITS","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN","VALID_FORMATTED_PHONE_NUMBER_PART","PLUS_CHARS","AFTER_PHONE_NUMBER_DIGITS_END_PATTERN","COMPLEX_NATIONAL_PREFIX","AsYouTypeParser","defaultCountry","defaultCallingCode","onNationalSignificantNumberChange","justLeadingPlus","_extractFormattedDigi","_extractFormattedDigi3","extractedNumber","hasPlus","startsAt","extractFormattedPhoneNumber","_extractFormattedDigitsAndPlus","_extractFormattedDigi4","formattedDigits","extractFormattedDigitsAndPlus","_extractFormattedDigi2","startInternationalNumber","inputDigits","hasReceivedThreeLeadingDigits","appendDigits","extractIddPrefix","isWaitingForCountryCallingCode","extractCountryCallingCode","appendNationalSignificantNumberDigits","hasExtractedNationalSignificantNumber","extractNationalSignificantNumber","stateUpdate","_extractCountryCallin","_extractCountryCallingCode","countryCallingCode","hasSelectedNumberingPlan","nationalPrefixForParsing","_nationalPrefixForParsing","couldPossiblyExtractAnotherNationalSignificantNumber","nationalDigits","_extractNationalNumbe","extractNationalNumberFromPossiblyIncompleteNumber","nationalNumber","onExtractedNationalNumber","prevNationalSignificantNumber","_extractNationalNumbe2","nationalSignificantNumberIndex","prefixBeforeNationalNumber","extractAnotherNationalSignificantNumber","fixMissingPlus","extractCallingCodeAndNationalSignificantNumber","numberWithoutIDD","stripIddPrefix","_extractCountryCallin2","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","newCallingCode","AsYouType","optionsOrDefaultCountry","Metadata","_this$getCountryAndCa2","getCountryAndCallingCode","hasCountry","_this$parser$input","formattedOutput","determineTheCountryIfNeeded","formatter","reExtractNationalSignificantNumber","getFullNumber","getNonFormattedNumber","selectNumberingPlan","isInternational","getCallingCode","_getCountry","isCountryCallingCodeAmbiguous","determineTheCountry","_this$state","getNonFormattedNationalNumberWithPrefix","countryCodes","getCountryCodesForCallingCode","getCountryByCallingCode","_this$state2","_this$state3","_callingCode","ambiguousCountries","exactCountry","getCountryByNationalNumber","countries","PhoneNumber","getNumber","getTemplate","getNonFormattedTemplate","_AsYouType","getCountries","getExampleNumber","examples","_isPossiblePhoneNumber","_getCountries","callCode","_getExampleNumber","formatInternational","invokeRpc","getTokenAccountsByOwner","mint","account","tokenAmount","getAccountInfo","$c87311424ea30a05$var$testUserAgent","_window_navigator_userAgentData","brands","brand","$c87311424ea30a05$var$testPlatform","$c87311424ea30a05$var$cached","$c87311424ea30a05$export$9ac100e40613ea10","$c87311424ea30a05$export$186c6964ca17d99","$c87311424ea30a05$export$7bef049ce92e4224","$c87311424ea30a05$export$fedb369cb70207f1","$c87311424ea30a05$export$6446a186d09e379e","$c87311424ea30a05$export$a11b0059900ceec8","$6a7db85432448f7f$export$60278871457622de","mozInputSource","$431fbd86ca7dc216$export$b204af158042fbac","_el_ownerDocument","$431fbd86ca7dc216$export$f21a1ffae260145a","$507fabe10e71c6fb$var$currentModality","$507fabe10e71c6fb$var$changeHandlers","$507fabe10e71c6fb$export$d90243b58daecda7","$507fabe10e71c6fb$var$hasEventBeforeFocus","$507fabe10e71c6fb$var$hasBlurredWindowRecently","$507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS","Tab","Escape","$507fabe10e71c6fb$var$triggerChangeHandlers","modality","$507fabe10e71c6fb$var$handleKeyboardEvent","$28AnR$isMac","$507fabe10e71c6fb$var$isValidKey","$507fabe10e71c6fb$var$handlePointerEvent","$507fabe10e71c6fb$var$handleClickEvent","$28AnR$isVirtualClick","$507fabe10e71c6fb$var$handleFocusEvent","$507fabe10e71c6fb$var$handleWindowBlur","$507fabe10e71c6fb$var$setupGlobalFocusEvents","$28AnR$getOwnerWindow","windowObject","documentObject","$28AnR$getOwnerDocument","PointerEvent","$507fabe10e71c6fb$var$tearDownWindowFocusTracking","loadListener","$507fabe10e71c6fb$export$b9b3dfddab17db27","$507fabe10e71c6fb$export$2f1888112f558a7d","$507fabe10e71c6fb$var$nonTextInputTypes","$507fabe10e71c6fb$export$ec71b4b83ac08ec3","$28AnR$useEffect","isTextInput","_e_target","IHTMLInputElement","HTMLInputElement","IHTMLTextAreaElement","HTMLTextAreaElement","IHTMLElement","IKeyboardEvent","KeyboardEvent","$507fabe10e71c6fb$var$isKeyboardFocusEvent","$f0a04ccd8dbdd83b$export$e5c5a5f917a5871c","$HgANd$react","$8ae05eaa5c114e9c$export$7f54fc3180508a52","$lmaYr$useRef","$lmaYr$useCallback","$8a9cb279dc87e130$export$905e7fc544a71f36","$8a9cb279dc87e130$export$715c682d09d639cc","stateRef","$6dfIe$useRef","isFocused","$6dfIe$useLayoutEffect","dispatchBlur","$6dfIe$useEffectEvent","$6dfIe$useCallback","HTMLButtonElement","HTMLSelectElement","onBlurHandler","_stateRef_current_observer","relatedTargetEl","FocusEvent","attributeFilter","$a1ea59d68270f0dd$export$f8168d8dd8fd66e6","onFocusProp","onBlurProp","onFocusChange","$hf0lj$useCallback","onSyntheticFocus","$hf0lj$getOwnerDocument","focusProps","$9ab94262bd0047c7$export$420e68273165f4ec","onBlurWithin","onFocusWithin","onFocusWithinChange","$3b9Q0$useRef","isFocusWithin","$3b9Q0$useCallback","focusWithinProps","$f7dceffc5ad7768b$export$4e328f61c538687f","within","$isWE5$useRef","$isWE5$isFocusVisible","setFocused","$isWE5$useState","isFocusVisibleState","updateState","$isWE5$useCallback","$isWE5$useFocusVisibleListener","$isWE5$useFocus","$isWE5$useFocusWithin","$6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents","$6179b936705e76d3$var$hoverCount","$6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents","$6179b936705e76d3$var$handleGlobalPointerEvent","$6179b936705e76d3$var$setupGlobalTouchEvents","handoffState","nextId","isClient","handoff","isHandoffComplete","Node","nextFrame","microTask","getPropertyValue","factory","ADD","REMOVE","inert","allowed","disallowed","parentElement","IntersectionObserver","First","Previous","Next","Last","WrapAround","NoScroll","AutoFocus","Overflow","Success","Underflow","Strict","Loose","Keyboard","Mouse","preventScroll","headlessuiFocusVisible","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","sorted","relativeTo","skipElements","select","getRootNode","composed","composedPath","hasAttribute","after","offsetWidth","PUSH","POP","SCROLL_PREVENT","containers","getComputedStyle","scrollBehavior","scrollY","pageYOffset","headlessuiPortal","scrollHeight","scrollWidth","scrollTo","scrollIntoView","block","SCROLL_ALLOW","TEARDOWN","innerText","cloneNode","getAnimations","None","Closed","Enter","Leave","hasFlag","addFlag","removeFlag","setFlag","toggleFlag","inFlight","offsetHeight","CSSTransition","allSettled","leave","getUserAgent","uaData","createCoords","oppositeSideMap","oppositeAlignmentMap","clamp","evaluate","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getOppositeAlignmentPlacement","alignment","getOppositePlacement","side","rectToClientRect","hasWindow","getNodeName","getWindow","_node$ownerDocument","getDocumentElement","isHTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflowX","overflowY","isTableElement","isTopLayer","isContainingBlock","elementOrCss","webkit","isWebKit","perspective","containerType","backdropFilter","willChange","contain","CSS","supports","isLastTraversableNode","getNodeScroll","scrollX","getParentNode","assignedSlot","getNearestOverflowAncestor","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","getFrameElement","visualViewport","computeCoordsFromPlacement","rtl","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","detectOverflow","_await$platform$isEle","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","expandPaddingObject","getPaddingObject","clippingClientRect","getClippingRect","contextElement","offsetParent","getOffsetParent","offsetScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","getCssDimensions","hasOffset","shouldFallback","unwrapElement","domElement","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","clientTop","getWindowScrollBarX","leftScroll","getHTMLOffset","scroll","ignoreScrollbarX","htmlRect","getClientRectFromClippingAncestor","clippingAncestor","html","visualViewportBased","getViewportRect","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","htmlOffset","isStaticPositioned","getTrueOffsetParent","rawOffsetParent","svgOffsetParent","currentNode","getContainingBlock","topLayer","elementClippingAncestors","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","floatingDimensions","getClientRects","isRTL","autoUpdate","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","onMove","_io","refresh","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","detectOverflow$1","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","mainAxisMulti","crossAxisMulti","mainAxis","crossAxis","convertValueToCoords","arrow","alignmentOffset","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","flip","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","initialSideAxis","isBasePlacement","oppositePlacement","getExpandedPlacements","hasFallbackAxisSideDirection","isStart","getSideList","getOppositeAxisPlacements","placements","overflows","overflowsData","sides","mainAlignmentSide","getAlignmentSides","_middlewareData$flip2","_overflowsData$filter","nextPlacement","resetPlacement","_overflowsData$filter2","currentSideAxis","_state$middlewareData","_state$middlewareData2","isYAxis","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","computePosition","mergedOptions","platformWithCache","validMiddleware","statefulPlacement","resetCount","nextX","nextY","computePosition$1","deepEqual","getDPR","devicePixelRatio","roundByDPR","dpr","useLatestRef","offset$1","flip$1","size$1","SafeReact","useSafeInsertionEffect","useEffectEvent","ARROW_UP","ARROW_DOWN","ARROW_LEFT","ARROW_RIGHT","horizontalKeys","verticalKeys","serverHandoffComplete","genId","setId","createPubSub","_map$get","_map$get2","FloatingNodeContext","FloatingTreeContext","useFloatingParentNodeId","_React$useContext","useFloatingTree","FOCUSABLE_ATTRIBUTE","useFloating","nodeId","internalRootContext","onOpenChange","onOpenChangeProp","elementsProp","floatingId","dataRef","nested","positionReference","setPositionReference","openEvent","domReference","useFloatingRootContext","rootContext","computedElements","_domReference","setDomReference","_setPositionReference","domReferenceRef","externalReference","externalFloating","whileElementsMounted","isPositioned","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","referenceRef","setFloating","floatingRef","floatingEl","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","fullData","isMountedRef","ReactDOM","floatingStyles","initialStyles","useFloating$1","computedPositionReference","floatingContext","nodesRef","ACTIVE_KEY","SELECTED_KEY","mergeProps","userProps","propsList","elementKey","isItem","domUserProps","validProps","propsOrGetProps","getArgsWithCustomFloatingHeight","getReferenceProps","getFloatingProps","shift$1","overflowRef","minItemsVisible","referenceOverflowThreshold","onFallbackChange","scrollPaddingBottom","childElementCount","listRef","innerOffset","scrollRef","scrollEl","floatingIsBordered","scrollElIsBordered","floatingIsScrollEl","nextArgs","refOverflow","diffY","rounder","anchor","unstable_onChange","controlledScrollingRef","prevScrollTopRef","initialOverflowRef","onWheel","dY","isAtTop","isAtBottom","remainingScroll","onPointerMove","onScroll","scrollDiff","referenceDeps","floatingDeps","itemDeps","getItemProps","Open","Closing","Opening","HTMLFieldSetElement","HTMLLegendElement","previousElementSibling","Specific","Nothing","resolveItems","resolveActiveIndex","resolveDisabled","resolveId","RenderStrategy","Static","Unmount","Hidden","ourProps","theirProps","defaultTag","features","visible","mergeRefs","refName","_len3","_key3","_len5","_key5","register","Space","Backspace","Delete","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","Home","End","PageUp","PageDown","htmlFor","HTMLLabelElement","force","Group","Pointer","Other","OpenMenu","CloseMenu","GoToItem","Search","ClearSearch","RegisterItem","UnregisterItem","SetButtonElement","SetItemsElement","activeItemIndex","domRef","menuState","__demoMode","searchQuery","activationTrigger","trigger","textValue","searchActiveItemIndex","buttonElement","itemsElement","isHovered","hoverProps","onHoverStart","onHoverChange","onHoverEnd","setHovered","$AWxnT$useState","$AWxnT$useRef","ignoreEmulatedMouseEvents","$AWxnT$useEffect","triggerHoverEnd","$AWxnT$useMemo","triggerHoverStart","onPointerEnter","onPointerLeave","onMouseEnter","pressed","pressProps","onPointerDown","onPointerUp","autofocus","portal","outerHTML","accept","acceptNode","createTreeWalker","NodeFilter","SHOW_ELEMENT","nextNode","FILTER_REJECT","FILTER_SKIP","FILTER_ACCEPT","wasMoved","onMouseMove","Items","Section","Heading","Separator","enterFrom","enterTo","leaveFrom","leaveTo","Visible","wait","unregister","onStart","onStop","show","beforeEnter","beforeLeave","afterEnter","afterLeave","entered","Root","Focusable","clip","borderWidth","Forwards","Backwards","InitialFocus","TabLock","FocusLock","RestoreFocus","initialFocus","initialFocusFallback","previousActiveElement","headlessuiFocusGuard","SetTitleId","descriptionId","panelRef","portals","resolveContainers","defaultContainers","mainTreeNode","blur","dialogState","setTitleId","Panel","Title","Description","ChevronDownIcon","ArrowsRightLeftIcon","CreditCardIcon","QrCodeIcon","InformationCircleIcon","ChevronRightIcon","FingerPrintIcon","ClockIcon","TrashIcon","CheckBadgeIcon","ShieldCheckIcon","IdentificationIcon","DevicePhoneMobileIcon","MinusCircleIcon","ArrowRightEndOnRectangleIcon","CalendarIcon","PencilSquareIcon","ClipboardDocumentIcon","wo","vo","Co","emailCode","sendCodeEmail","withPrivyUi","Eo","oldAddress","newAddress","To","channelToken","channel_token","fid","_startChannelOnce","connect_uri","connectUri","initializeFarcasterConnect","startChannelOnce","_pollForReady","pollForReady","bo","Ao","getOrCreateGuestCredential","Dn","Yr","Zr","Ln","guest_credential","guestCredential","_o","ko","Io","No","addCaptchaToken","isActive","authorizationCode","stateCode","Un","authorization_code","state_code","code_verifier","Bn","getAuthorizationUrl","zn","redirect_to","code_challenge","xo","So","Ro","Oo","Wo","uo","Mo","Po","fx","fy","Lo","mixBlendMode","Do","Uo","imageRendering","shapeRendering","textRendering","Fo","Bo","google","discord","github","linkedin","twitter","spotify","instagram","tiktok","apple","zo","Ho","inProgress","opener","popupFlow","Vo","$o","initRegisterFlow","authenticateForRegistration","initRegisterResponse","initRegisterOnce","initAuthenticationFlow","initAuthenticateResponse","initAuthenticateOnce","initLinkFlow","initLinkResponse","initLinkOnce","browserSupportsWebAuthn","startRegistration","_transformInitLinkOptionsToCamelCase","setPasskeyAuthState","relying_party","authenticator_response","_transformRegistrationResponseToSnakeCase","PASSKEY_NOT_ALLOWED","allowedCredentialsIds","allow_credentials","startAuthentication","_transformInitAuthenticateOptionsToCamelCase","challenge","_transformAuthenticationResponseToSnakeCase","_initRegisterOnce","_initAuthenticateOnce","_initLinkOnce","rp","display_name","pubKeyCredParams","pub_key_cred_params","alg","excludeCredentials","exclude_credentials","transports","authenticatorSelection","authenticatorAttachment","authenticator_selection","authenticator_attachment","requireResidentKey","require_resident_key","residentKey","resident_key","userVerification","user_verification","attestation","appid","app_id","credProps","cred_props","hmacCreateSecret","hmac_create_secret","raw_id","rawId","client_data_json","clientDataJSON","attestation_object","attestationObject","authenticator_data","authenticatorData","client_extension_results","clientExtensionResults","rpId","rp_id","allowCredentials","user_handle","userHandle","jo","smsCode","sendSmsCode","Go","oldPhoneNumber","old_phone_number","new_phone_number","qo","captcha_token","telegram_auth_result","telegramAuthResult","telegram_web_app_data","telegramWebAppData","Ko","DISALLOWED_LOGIN_METHOD","TOO_MANY_REQUESTS","Yo","fromEntries","Zo","Jo","throwIfNotWellFormedJwt","Pn","subject","_decoded","expiration","issuer","iss","audience","aud","Qo","aid","Xo","es","ns","Jr","updateConnectionPreference","connectionOptions","coinbaseWallet","Hn","walletIndex","ls","legacy","eip2930","eip1559","eip4844","cs","ds","accessList","storageKeys","maxFeePerBlobGas","us","hs","handleSendTransaction","ew","aw","handleSignTransaction","rw","handleSwitchEthereumChain","publicClient","handlePersonalSign","tw","handleSignedTypedData","nw","handleEstimateGas","estimateGas","iw","walletProxy","rpc","entropyId","entropyIdVerifier","hdWalletIndex","ps","Vn","ms","ys","fs","vs","Cs","Es","eth_accounts","Ts","bs","phantom","installLink","chainTypes","getMobileRedirect","useUniversalLink","isSolana","connectOnly","solflare","isSolflare","backpack","okx_wallet","okxwallet","As","ks","Qr","Is","walletConnectors","activeWallet","removeAllConnectors","$n","walletList","externalWalletConfig","walletChainType","eip6963InjectedProvider","legacyInjectedProvider","createEthereumWalletConnector","walletConfig","addSolanaWalletConnector","walletConnect","connectors","_setOnConnectorsUpdated","findWalletConnector","findSolanaWalletConnector","Xr","findEmbeddedWalletConnectors","onInitialized","storedConnections","saveConnectionHistory","onWalletsUpdated","addEmbeddedWalletConnectors","rootWallet","embeddedWallets","jn","addWalletConnector","addImportedWalletConnector","removeEmbeddedWalletConnectors","removeImportedWalletConnector","privyAppLogo","Gn","activeWalletSign","setActiveWallet","setWalletList","Ns","baseFetch","appClientId","clientAnalyticsId","qn","fallbackApiUrl","retryDelay","retryStatusCodes","onRequest","disableAutoRefresh","onRequestError","Ss","Rs","calculateGasLimits","expiryDuration","sponsorshipInfo","webhookData","smartAccountInfo","Os","policy_id","policyId","Ws","Ms","identityToken","Ls","Ds","PRIVY","CUSTOMER","Us","privyAccessToken","customerAccessToken","getToken","_getToken","Kn","Yn","destroyLocalState","refreshToken","Zn","getProviderAccessToken","Jn","mightHaveServerCookies","Qn","hasRefreshCredentials","Xn","hasActiveAccessToken","authenticateOnce","linkOnce","refreshOnce","destroyOnce","storeProviderAccessToken","updateIdentityToken","storeIdentityToken","clearIdentityToken","_authenticate","is_new_user","oauth_tokens","handleTokenResponse","access_token","accessTokenExpiresInSeconds","access_token_expires_in_seconds","refresh_token","refreshTokenExpiresInSeconds","refresh_token_expires_in_seconds","scopes","_trackAuthenticateEvents","isNewUser","oAuthTokens","createAnalyticsEvent","_link","_refresh","useServerCookies","apiUrl","authorization","MISSING_OR_INVALID_TOKEN","session_update_action","storeCustomerAccessToken","storePrivyAccessToken","privy_access_token","identity_token","_storeAllTokens","storeRefreshToken","_destroy","sameSite","onStoreCustomerAccessToken","onDeleteCustomerAccessToken","Fs","Bs","Hs","initializeConnectorManager","generateApi","updateApiUrl","authFlow","getAuthenticatedUser","clearProviderAcccessTokens","providerApp","startAuthFlow","initMfaSmsVerification","initMfaPasskeyVerification","getCrossAppProviderDetails","_cachedProviderAppDetails","acceptTerms","unlinkEmail","unlinkPhone","unlinkEthereumWallet","unlinkSolanaWallet","unlinkOAuth","unlinkFarcaster","unlinkTelegram","telegram_user_id","revokeDelegatedWallet","event_name","client_id","clientTimestamp","keepalive","keepAlive","signMoonpayOnRampUrl","initCoinbaseOnRamp","getCoinbaseOnRampStatus","partnerUserId","getPrivyAccessToken","getCustomerAccessToken","getSmartWalletsConfig","smartWalletType","smart_wallet_type","configuredNetworks","configured_networks","chain_id","bundlerUrl","bundler_url","paymasterUrl","paymaster_url","paymasterContext","paymaster_context","getServerConfig","telegram_auth_config","botId","bot_id","botName","bot_name","linkEnabled","link_enabled","seamlessAuthEnabled","seamless_auth_enabled","funding_config","default_recommended_amount","default_recommended_currency","promptFundingOnWalletCreation","prompt_funding_on_wallet_creation","cross_chain_bridging_enabled","verificationKey","verification_key","logoUrl","logo_url","accentColor","accent_color","showWalletLoginFirst","show_wallet_login_first","allowlistConfig","errorTitle","allowlist_config","error_title","errorDetail","error_detail","errorCtaText","cta_text","errorCtaLink","cta_link","walletAuth","wallet_auth","solanaWalletAuth","solana_wallet_auth","emailAuth","email_auth","smsAuth","sms_auth","googleOAuth","google_oauth","twitterOAuth","twitter_oauth","discordOAuth","discord_oauth","githubOAuth","github_oauth","spotifyOAuth","spotify_oauth","instagramOAuth","instagram_oauth","tiktokOAuth","tiktok_oauth","linkedinOAuth","linkedin_oauth","appleOAuth","apple_oauth","farcasterAuth","farcaster_auth","passkeyAuth","passkey_auth","passkeysForSignupEnabled","passkeys_for_signup_enabled","telegramAuth","telegram_auth","disablePlusEmails","disable_plus_emails","terms_and_conditions_url","embeddedWalletConfig","embedded_wallet_config","create_on_login","userOwnedRecoveryOptions","user_owned_recovery_options","requireUserOwnedRecoveryOnCreate","require_user_owned_recovery_on_create","privacy_policy_url","require_users_accept_terms","customApiUrl","custom_api_url","wallet_connect_cloud_project_id","fiatOnRampEnabled","fiat_on_ramp_enabled","captcha_enabled","captcha_site_key","createdAt","created_at","updatedAt","updated_at","mfaMethods","mfa_methods","enforceWalletUis","enforce_wallet_uis","legacyWalletUiConfig","legacy_wallet_ui_config","telegramAuthConfiguration","getUsdTokenPrice","usd","getUsdPriceForSol","getSplTokenMetadata","mintAddress","requestFarcasterSignerStatus","ed25519_public_key","linkSmartWallet","linkWithSiwe","sendAccountTransferRequest","externalWalletMetadata","farcasterEmbeddedAddress","oAuthUserInfo","farcaster_id","farcaster_embedded_address","userInfo","linkWithSiws","_ref46","updateUserAndIdToken","scanTransaction","_ref47","Vs","$s","delayedExecution","Gs","qs","Ks","Ys","Zs","Js","$colorScheme","Qs","Xs","$if","$withPadding","_ref48","onTransfer","isTransferring","transferSuccess","iconSize","_ref49","onRetry","Cl","_ref50","onContinue","onInfo","accountTransfer","linkMethod","disclosedAccount","embeddedWalletAddress","El","_ref51","_l","Il","Nl","Sl","Rl","Ol","Wl","Ml","isAccent","Pl","Ll","Dl","Ul","Fl","Bl","_ref52","onAccept","onDecline","Hl","_ref53","Vl","$l","_ref54","Kl","Gl","_ref55","Yl","Zl","Jl","Ql","Xl","RESET_AFTER_DELAY","CLEAR_ON_NEXT_VALID_INPUT","EMAIL","SMS","nc","$success","$fail","_ref56","_ref57","withPadding","_ref58","messageHandlers","ReactNativeWebView","_ref59","connector","setModalData","AWAITING_CONNECT_ONLY_CONNECTION","AWAITING_CONNECTION","installWalletModalData","WALLET_INTERSTITIAL_SCREEN","INSTALL_WALLET_SCREEN","image_url","_ref60","_ref61","ignore","walletConnectEnabled","forceWallet","_ref62","_ref63","_ref64","_ref65","_ref66","_ref67","_ref68","_ref69","isCreatingWallet","skipSplashScreen","EMBEDDED_WALLET_PASSWORD_CREATE_SCREEN","EMBEDDED_WALLET_PASSWORD_UPDATE_SCREEN","EMBEDDED_WALLET_PASSWORD_UPDATE_SPLASH_SCREEN","_ref70","walletAction","availableRecoveryMethods","legacySetWalletPasswordFlow","isResettingPassword","showAutomaticRecovery","EMBEDDED_WALLET_SET_AUTOMATIC_RECOVERY_SCREEN","EMBEDDED_WALLET_RECOVERY_SELECTION_SCREEN","EMBEDDED_WALLET_PASSWORD_RECOVERY_SCREEN","EMBEDDED_WALLET_RECOVERY_OAUTH_SCREEN","_ref71","client_type","codeVerifier","_ref72","_ref73","$theme","dimensions","background2","foreground3","foregroundAccent","accent","accentDark","walletToExport","allow","primaryAddress","primaryWallet","caid","phrase_export","refreshSessionAndUser","initializeWalletProxy","recoveryPassword","_ref74","recoveryMethod","solanaAddress","yr","walletAddress","_ref75","_ref76","hideAnimations","_ref77","centered","Cd","Ed","_ref78","_ref79","buttonHideAnimations","buttonLoading","onSubmit","onBack","placeholder","_ref80","Id","_ref81","Sd","initiatedBy","Wd","Ud","wordlist","sep","passphrase","_ref82","onPasswordChange","onPasswordGenerate","_ref83","Gd","createObjectURL","download","revokeObjectURL","_ref84","Kd","Yd","_ref85","lastScreen","_ref86","destinationCurrency","tradeType","originCurrency","Qd","eu","isTestnet","_ref87","tu","steps","nu","_ref88","transactionHash","bridgingStatus","setBridgingStatus","onFailure","_ref89","requests","ru","TRANSACTION_FAILURE","relayLink","au","_ref90","su","ctaText","INSUFFICIENT_BALANCE","INVALID_CAPTCHA","CAPTCHA_FAILURE","NOT_SUPPORTED","iu","ou","lu","_ref91","cu","du","$justCopied","itemName","uu","hu","justOpened","pu","_ref92","mu","yu","gu","fu","wu","vu","Cu","_ref93","currentScreen","navigateBack","FUNDING_MANUAL_TRANSFER_SCREEN","funding","EMBEDDED_WALLET_SEND_TRANSACTION_SCREEN","Eu","_ref94","Tu","bu","Au","_u","ku","showFiatPrices","solPrice","isSolPriceLoading","solPriceError","Iu","tokenPrice","isTokenPriceLoading","tokenPriceError","Cr","xu","Su","Ru","Ou","Wu","_ref95","fee","fundingAmountInBaseUnit","fundingAmountInUsd","totalPriceInUsd","totalPriceInNativeCurrency","feePriceInNativeCurrency","feePriceInUsd","Mu","Pu","parsedTransaction","fees","Du","Nu","Uu","accountKeyIndexes","staticAccountKeys","owner","getParsedAccountInfo","Er","rpcEndpoint","fromAta","fromAccount","toAta","toAccount","Fu","Bu","_ref98","zu","Hu","Vu","$u","_ref99","ju","_ref100","Gu","Ku","qu","Yu","_ref101","onSelect","Zu","Xu","Ju","Qu","_ref102","_ref103","_ref104","passkeys","onUnlink","onExpand","authenticatorName","createdWithBrowser","createdWithOs","latestVerifiedAt","verifiedAt","credentialId","no","eo","_ref105","configuredFundingChain","formattedBalance","fundingAmount","fundingCurrency","selectedOption","isPreparing","addressToFund","fundingWalletAddress","onAmountChange","_ref106","_ref107","isBridging","isErc20Flow","gasPriceInNativeCurrency","gasPriceInUsd","FUNDING_METHOD_SELECTION_SCREEN","FUNDING_TRANSFER_FROM_WALLET_SCREEN","FUNDING_AWAITING_TRANSFER_FROM_EXTERNAL_WALLET_SCREEN","FUNDING_AWAITING_TRANSFER_FROM_EXTERNAL_SOLANA_WALLET_SCREEN","FUNDING_AWAITING_EVM_TO_SOL_BRIDGING_SCREEN","FUNDING_AWAITING_SOL_TO_EVM_BRIDGING_SCREEN","MOONPAY_STATUS_SCREEN","_ref108","onClickCta","cta","isSucccess","_ref109","_ref110","_ref111","_ref112","screenLeft","screenTop","screen","availWidth","availHeight","Nr","xr","Sr","Rr","Or","blockchains","assets","blockchain","experience","session_token","partner_user_id","showAlternateFundingMethod","coinbaseOnrampStatus","COINBASE_ONRAMP_STATUS_SCREEN","currencyCode","externalTransactionId","useSandbox","fundingMethodConfig","moonpay","paymentMethod","quoteCurrencyAmount","moonpayStatus","PaymentRequest","supportedMethods","canMakePayment","ep","_ref113","tp","devnet","testnet","np","_ref114","_ref115","ap","ip","_ref116","failed","serviceFailure","waitingAuthorization","sp","_ref117","lp","_ref118","cp","dp","_ref119","hp","pp","_ref120","mp","_ref121","hn","gp","custom_auth","farcaster","passkey","phone","telegram","smart_wallet","cross_app","fp","loginMethod","wp","vp","Cp","Ep","_ref122","startCrossAppAuthFlow","authenticated","icon_url","Tp","initLoginWithEmail","inlineError","DISALLOWED_PLUS_EMAIL","pn","AWAITING_PASSWORDLESS_CODE","errorModalData","previousScreen","LANDING","ERROR_SCREEN","captchaModalData","userIntentRequired","onSuccessNavigateTo","onErrorNavigateTo","CAPTCHA_SCREEN","bp","Ap","autoComplete","mn","yn","gn","_p","_ref123","isEditable","setIsEditable","initLoginWithFarcaster","AWAITING_FARCASTER_CONNECTION","Ip","Np","_ref124","initLoginWithPasskey","loginConfig","SELECT_PASSKEY_SIGNUP_OR_LOGIN","passkeyAuthModalData","passkeySignupFlow","AWAITING_PASSKEY_SYSTEM_DIALOGUE","loginMethods","_ref125","_ref126","Rp","Sp","Op","_ref127","Wp","intl","rawPhoneNumber","qualifiedPhoneNumber","countryCode","getCountry","Mp","Pp","$callingCodeLength","$stacked","hideRecent","noIncludeSubmitButton","Lp","_ref128","initLoginWithSms","_ref129","Dp","_ref130","initLoginWithOAuth","Bp","zp","initLoginWithTelegram","telegramAuthModalData","seamlessAuth","TELEGRAM_AUTH_SCREEN","Hp","Vp","_ref131","$p","_ref132","onUserCloseViaDialogOrKeybindRef","sms","loginGroupPriority","hideDirectWeb2Inputs","Yp","mostRecentlyUsedAccountType","smsAvailable","emailAvailable","prefilledType","prefill","shouldCallAuthOnSuccess","externalWallets","Gp","social","qp","Kp","landingHeader","jp","loginMessage","_ref133","_ref134","_ref135","_ref136","Zp","_ref137","loginMethodsAndOrder","Jp","Qp","_ref138","Xp","_ref139","em","promptMfa","submit","Wr","tm","initEnrollmentWithSms","initEnrollmentWithTotp","initEnrollmentWithPasskey","submitEnrollmentWithSms","submitEnrollmentWithTotp","submitEnrollmentWithPasskey","unenroll","enrollInMfa","unenrollWithSms","unenrollWithTotp","unenrollWithPasskey","showMfaEnrollmentModal","closeMfaEnrollmentModal","nm","rm","am","_ref140","showIntro","userMfaMethods","appMfaMethods","userHasAuthSms","isTotpLoading","isPasskeyLoading","onBackToIntro","handleSelectMethod","setRemovingMfaMethod","totp","oo","om","_ref141","onReset","initLinkWithPasskey","linkWithPasskey","mfaEnrollmentFlow","credentialIds","removeForLogin","shouldUnlinkOnUnenrollMfa","isCreating","cm","lm","onSubmitEnrollment","onAddPasskey","_ref142","so","_ref143","um","pm","hm","_ref144","ym","gm","fm","wm","vm","Cm","_ref145","errorReasonOverride","Em","inputMode","Tm","bm","_ref146","_ref147","mfaCode","Am","_ref148","authUrl","_m","_ref149","totpInfo","km","_ref150","valueStyles","Im","Nm","xm","_ref151","weiQuantities","tokenSymbol","Om","Sm","_ref152","Wm","Pm","Mm","Rm","_ref153","quantities","tokenDecimals","Lm","_ref154","sn","Um","Bm","Fm","Dm","_ref155","zm","Hm","Vm","_ref156","activePanel","togglePanel","Km","$m","_ref157","onToggle","Qm","_ref158","Ym","Jm","ty","isactive","Zm","Gm","_ref159","Xm","ey","qm","_ref160","_ref161","network","wn","Mr","_ref162","transactionInfo","iy","oy","_ref163","displayFee","sy","prepareTransactionRequest","ly","_ref164","pendingTransaction","Tr","nativeTokenSymbolForChainId","dy","_ref165","hasBlockingError","handleSubmit","submitSuccess","co","firstVerifiedAt","toLocaleDateString","day","year","uy","_ref166","enrolledInMfa","selectedMethod","hy","handleSubmitCode","_ref167","gy","wy","vy","Cy","Ey","_ref168","Ty","by","Ay","icloud","_y","ky","Iy","_ref169","Ny","xy","_ref170","transactingWalletAddress","transactingWalletIndex","compileMessage","serializeMessage","addSignature","Sy","_ref171","transactionOptions","sendRawTransaction","confirmTransaction","receipt","getParsedTransaction","maxSupportedTransactionVersion","txSignature","Ry","Oy","_ref172","iconUrl","usdValue","nftName","Wy","Py","My","Ly","transactionDetails","isTokenContractInfoLoading","approved","formattedAmount","tokenId","amounts","tokenIds","spender","transferFrom","transferTo","Dy","Uy","Fy","_ref173","setPreventMaliciousTransaction","preventMaliciousTransaction","By","zy","_ref174","transactionIndex","maxIndex","Hy","_ref175","submitError","prepareError","subtitle","txValue","tokenAddress","missingFunds","isSponsored","validation","hasScanDetails","setIsScanDetailsOpen","tokensSent","tokensReceived","isScanning","isCancellable","showTransactionDetails","setShowTransactionDetails","hasMoreDetails","isErc20Ish","_ref176","mo","yo","$y","$useSmallMargins","Vy","_ref177","blockExplorerUrl","isMissingFunds","parseError","tokenAccount","tokenAccountOwner","programAddress","qy","Qy","Xy","Ky","_ref178","transactionError","transactionMessage","logs","_ref179","Pr","Yy","Zy","Jy","$clickable","clicked","resetNonce","_ref180","_ref181","_ref182","Cn","En","instruction","hideAmount","_ref183","_ref184","receiptHeader","receiptDescription","signOnly","_ref185","transactingWallet","transactionRequest","requesterAppId","serializedTransaction","_ref186","_ref187","_ref188","_ref189","_ref190","_ref191","gasUsed","effectiveGasPrice","_ref192","isNFTIsh","encodedInitData","parameters","toFunctionSelector","formatAbiItem","AbiFunctionSignatureNotFoundError","decodeAbiParameters","transactionRequests","primaryType","typedData","initUpdateEmail","bn","_ref193","background3","foreground2","foreground4","accentLight","accentLightest","accentDarkest","successDark","successLight","errorLight","warnLight","_ref194","CONNECT_OR_CREATE","resendEmailCode","resendSmsCode","getAuthMeta","loginWithCode","updateWallets","hasAcceptedTerms","AFFIRMATIVE_CONSENT_SCREEN","callAuthOnSuccessOnClose","EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN","isSuccess","USER_LIMIT_REACHED","USER_LIMIT_REACHED_SCREEN","USER_DOES_NOT_EXIST","ACCOUNT_NOT_FOUND_SCREEN","ACCOUNT_TRANSFER_REQUIRED","otherUser","LINK_CONFLICT_SCREEN","getAuthFlow","walletConnectionStatus","initLoginWithWallet","loginWithWallet","hasTabbedAway","connectedWallet","ALLOWLIST_REJECTION_SCREEN","connectError","connectRetry","externalConnectWallet","onCompleteNavigateTo","connectedWalletAddress","loginWithFarcaster","AWAITING_FARCASTER_SIGNER","farcasterSigner","signer_approval_url","initSignupWithPasskey","loginWithPasskey","signupWithPasskey","footnote","An","LOGIN_FAILED_SCREEN","AWAITING_OAUTH_SCREEN","resetNavigation","loginWithOAuth","setReadyToTrue","OAUTH_ACCOUNT_SUSPENDED","OAUTH_UNEXPECTED","CROSS_APP_AUTH_SCREEN","crossAppAuthFlow","crossAppAuth","LINK_EMAIL_SCREEN","LINK_PHONE_SCREEN","_ref195","LINK_WALLET_SCREEN","suggestedAddress","LINK_PASSKEY_SCREEN","unlinkPasskey","MISSING_MFA_CREDENTIALS","UPDATE_EMAIL_SCREEN","UPDATE_PHONE_SCREEN","initUpdatePhone","_ref196","CONNECT_ONLY_LANDING_SCREEN","CONNECT_ONLY_AUTHENTICATED_SCREEN","recoverPrimaryWallet","EMBEDDED_WALLET_CREATED_SCREEN","createSolana","ethereumAddress","recoverySelection","isInAccountCreateFlow","isNewUserThisSession","EMBEDDED_WALLET_CONNECTING_SCREEN","shouldForceMFA","verifyMfa","EMBEDDED_WALLET_KEY_EXPORT_SCREEN","recover","recoverWallet","recoveryOAuthStatus","vn","ho","po","setRecovery","existingRecoveryMethod","recoveryOAuthFlow","keyExport","EMBEDDED_WALLET_SIGN_REQUEST_SCREEN","confirmAndSign","uiOptions","extendedCalldataDecoding","ln","dn","totalGasEstimate","hasFunds","getIsSponsored","contractInfo","imgUrl","imgAltText","Tn","transactionScanning","result_type","simulation","assetsIn","assetsOut","usd_price","spenders","assets_diffs","exposures","successHeader","successDescription","_ref197","onConfirm","waitForTransactionReceipt","EMBEDDED_WALLET_SEND_SOLANA_TRANSACTION_SCREEN","Lr","program","ata","_ref96","getFeeForMessage","getEstimatedFee","compiledInstructions","programIdIndex","payer","_ref97","Lu","blockhash","getLatestBlockhash","recentBlockhash","Dr","EMBEDDED_WALLET_DELEGATED_ACTIONS_CONSENT_SCREEN","onDelegate","delegatedActions","consent","textWrap","EMBEDDED_WALLET_DELEGATED_ACTIONS_REVOKE_SCREEN","onRevoke","onFundWithCard","onFundWithExchange","onFundWithWallet","_ref198","_ref199","cn","apiKey","cardPaymentType","baseCurrencyAmount","feeAmount","extraFeeAmount","networkFeeAmount","isSandbox","_ref200","onContinueWithExternalWallet","destChainType","sourceChainType","FUNDING_EDIT_AMOUNT_SCREEN","_ref201","_ref202","_ref203","simulateContract","addChain","txHash","destinationAddress","destinationChainId","destinationChainType","destinationValue","destinationToken","recipient","originChainId","bridgeTx","_ref204","_ref205","_r","kr","_ref206","createTransferTransaction","simulateTransaction","clusterName","destinationClusterName","_ref207","_ref208","Ar","_ref209","_ref210","destination","_ref211","_ref212","_ref213","Ir","createBridgeTransactionFromRelayQuote","currencyIn","amountFormatted","_ref214","_ref215","_ref216","_ref217","wei","precision","receiveFundsTitle","receiveFundsSubtitle","addPasswordToExistingWallet","targetRecoveryMethod","MFA_ENROLLMENT_FLOW_SCREEN","ao","mfa","IN_APP_BROWSER_LOGIN_NOT_POSSIBLE","loginWithTelegram","initiateAccountTransfer","_ref218","isMfaVerifying","onMfaVerificationComplete","headless","_ref219","kn","_ref220","gracefulClosePrivyModal","js","noPromptOnMfaRequired","_ref221","botUsername","scriptHost","kf","dequeue","mfaPromise","mfaSubmitPromise","addWallet","recoveryAccessToken","recoverySecretOverride","importWallet","createDelegatedAction","initEnrollMfa","submitEnrollMfa","unenrollMfa","clearMfa","unlinkPasskeyAccount","initFarcasterSigner","signFarcasterMessage","In","onLoad","onLoadFailed","delegated","handleSignMessage","sw","ow","_ref224","_ref225","providerAppId","connections","provider_app_id","provider_app_name","provider_app_icon_url","provider_app_custom_api_url","read_only","_ref226","smartWallets","callbackUrl","_ref227","_ref228","ckSession","ckWebAuthToken","jf","_ref229","lw","_ref230","clientId","Ur","clientConfig","cw","_ref222","_ref223","Nn","Fr","_ref231","showWalletUIs","Br","fund","unlink","loginOrLink","zr","Hr","getCustomAccessToken","wasAlreadyAuthenticated","onMount","onUnmount","expected","BroadcastChannel","flowType","authData","auth_date","Wn","xn","Mn","createAdditional","EMBEDDED_WALLET_ALREADY_EXISTS","UNKNOWN_EMBEDDED_WALLET_ERROR","Vr","EMBEDDED_WALLET_CREATE_ERROR","_ref233","signingWallet","$r","EMBEDDED_WALLET_NOT_FOUND","UNSUPPORTED_CHAIN_ID","_ref234","Kr","ga","getTime","_ref235","USER_EXITED_SET_PASSWORD_FLOW","_ref236","linkWallet","linkEmail","linkPhone","linkGoogle","linkTwitter","linkDiscord","linkGithub","linkSpotify","linkInstagram","linkTiktok","linkLinkedIn","linkApple","linkPasskey","linkTelegram","launchParams","initDataRaw","linkFarcaster","updateEmail","updatePhone","isGuest","connectOrCreateWallet","unlinkWallet","unlinkGoogle","unlinkTwitter","unlinkDiscord","unlinkGithub","unlinkSpotify","unlinkInstagram","unlinkTiktok","unlinkLinkedIn","unlinkApple","shouldUnenrollMfaOnUnlink","removeAsMfa","unlinkCrossAppAccount","_ref237","INVALID_MESSAGE","UNABLE_TO_SIGN","mfaMethod","relyingParty","_ref238","requestFarcasterSignerFromWarpcast","getFarcasterSignerPublicKey","signerPublicKey","bufferToBase64URLString","base64URLStringToBuffer","createGuestAccount","loginWithGuestAccountFlow","signMessageWithCrossAppWallet","_ref239","signTypedDataWithCrossAppWallet","_ref240","sendTransactionWithCrossAppWallet","_ref241","setAuthenticated","priceDisplay","customAuthStatus","hideWalletUIs","isHeadlessSigning","emailOtpState","setEmailOtpState","smsOtpState","setSmsOtpState","oAuthState","setOAuthState","telegramAuthState","setTelegramAuthState","siweState","setSiweState","isHeadlessOAuthLoading","linkedAccount","USER_EXITED_LINK_FLOW","updateMethod","updatedAccount","USER_EXITED_UPDATE_FLOW","fundingMethod","solanaSignMessage","_ref242","_ref243","_ref244","openPrivyModal","FAILED_TO_LINK_ACCOUNT","delegateWallet","showDelegationUIs","_ref245","_ref246","_ref247","_ref248","delegatedWallets","revokeDelegatedWallets","_ref249","_ref250","_ref251","_ref252","storedStateCode","returnedStateCode","_ref253","Telegram","Login","request_access","_ref254","passkeyAuthState","_ref255","_ref256","_ref257","_ref258","initLoginWithHeadlessOAuth","loginWithHeadlessOAuth","_ref259","_ref260","FAILED_TO_UPDATE_ACCOUNT","_ref261","_ref262","generateSiweMessage","_ref263","Sn","generateSiweMessageForSmartWallet","_ref264","_ref265","_ref266","_ref267","ethereumWallet","_ref232","connectCoinbaseSmartWallet","_ref268","jr","Rn","On","Gr","setInitialScreen","initialScreen","dw","_ref269","emitPrivyEvent","fo","uw","Cw","Ew","UNKNOWN_MFA_ERROR","EMBEDDED_WALLET_PASSWORD_UNCONFIRMED","EMBEDDED_WALLET_PASSWORD_ALREADY_EXISTS","EMBEDDED_WALLET_RECOVERY_ALREADY_EXISTS","CAPTCHA_DISABLED","SESSION_STORAGE_UNAVAILABLE","verified_at","first_verified_at","latest_verified_at","chain_type","wallet_client_type","connector_type","recovery_method","wallet_index","embedded_wallets","smart_wallets","profilePictureUrl","profile_picture_url","vanityName","vanity_name","customUserId","custom_user_id","ownerAddress","owner_address","bio","pfp","homepage_url","signer_public_key","enrolled_in_mfa","credential_id","authenticator_name","createdWithDevice","created_with_device","created_with_os","created_with_browser","telegramUserId","firstName","first_name","lastName","last_name","photoUrl","photo_url","linked_accounts","smartWallet","has_accepted_terms","is_guest","customMetadata","custom_metadata","alchemy","infura","etherscan","blast","filscan","filscout","glif","_render","toHsl","backgroundTheme","accentHex","desaturate","toHslString","PublicKeyCredential","overrides","supportedChains","defaultChainFromConfig","requireUserPasswordOnCreate","evmWalletAuth","fiatOnRamp","isServerConfigLoaded","ahash","execTyped","bytesRegex","integerRegex","isTupleRegex","suspectProtoRx","suspectConstructorRx","JsonSigRx","jsonParseTransform","warnKeyDropped","_lval","POSITIVE_INFINITY","NEGATIVE_INFINITY","getPossibleCountriesForNumber","possibleCountries","_metadata","possibleLengths","couldNationalNumberBelongToCountry","SINGLE_IDD_PREFIX_REG_EXP","formatExtension","formatNumber","addExtension","formatRFC3966","fromCountry","fromCountryCallingCode","iddPrefix","countryMetadata","defaultIDDPrefix","getIddPrefix","formatIDD","formatAs","availableFormats","nationalNnumber","lastLeadingDigitsPattern","matchesEntirely","chooseFormatForNumber","countryOrCountryCallingCode","_getCountryAndCountry","metadataJson","isCountryCode","getCountryAndCountryCallingCode","getMetadata","isPossibleNumber","hasTypes","getNumberType","nationalNumberPattern","isValidNumber","isNonGeographicCallingCode","_format","MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","checkNumberLengthForType","type_info","possible_lengths","mobile_type","mergeArrays","actual_length","minimum_length","isNumberWithIddPrefix","shorterNumber","countryCallingCodeSource","_countryCallingCode","hasCallingCode","possibleShorterNumber","possibleShorterNationalNumber","extractNationalNumber","nationalNumberBefore","nationalNumberAfter","shouldHaveExtractedNationalPrefix","isPossibleIncompleteNationalNumber","prefixPattern","prefixMatch","capturedGroupsCount","hasCapturedGroups","nationalPrefixTransformRule","possiblePositionOfTheFirstCapturedGroup","USE_NON_GEOGRAPHIC_COUNTRY_CODE","nationalPhoneNumber","NON_FIXED_LINE_PHONE_TYPES","isNumberTypeEqualTo","objectConstructor","regular_expression","DIGITS","parseDigit","CAPTURING_DIGIT_PATTERN","IDDPrefixPattern","matchedGroups","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","validateMetadata","setVersion","v3","nonGeographic","nonGeographical","getCountryMetadata","countryCallingCodes","NumberingPlan","getNumberingPlanMetadata","getCountryCodeForCallingCode","_type","country_phone_code_to_countries","country_calling_codes","globalMetadataObject","_getFormats","getDefaultCountryMetadataForRegion","Format","_getNationalPrefixFormattingRule","_getNationalPrefixIsOptionalWhenFormatting","_type2","getType","Type","FIRST_GROUP_ONLY_PREFIX_PATTERN","isSupportedCountry","v4","_Array$prototype$slic2","arg_1","arg_2","arg_3","arg_4","ParseError","getExtensionDigitsPattern","createExtensionPattern","purpose","possibleSeparatorsBetweenNumberAndExtLabel","possibleCharsAfterExtLabel","optionalExtnSuffix","possibleSeparatorsNumberExtLabelNoComma","MIN_LENGTH_PHONE_NUMBER_PATTERN","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_START_REG_EXP","VALID_PHONE_NUMBER_WITH_EXTENSION","VALID_PHONE_NUMBER_PATTERN","EXTN_PATTERN","parseIncompletePhoneNumber","parsePhoneNumberCharacter","prevParsedCharacters","emitEvent","PLUS_SIGN","RFC3966_PHONE_DIGIT_","RFC3966_GLOBAL_NUMBER_DIGITS_","RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_","ALPHANUM_","RFC3966_DOMAINNAME_PATTERN_","RFC3966_PREFIX_","RFC3966_PHONE_CONTEXT_","RFC3966_ISDN_SUBADDRESS_","extractFormattedPhoneNumberFromPossibleRfc3966NumberUri","numberToParse","phoneNumberString","phoneContext","numberToExtractFrom","indexOfPhoneContext","phoneContextStart","phoneContextEnd","extractPhoneContext","isPhoneContextValid","indexOfNationalNumber","indexOfRfc3966Prefix","indexOfIsdn","MAX_INPUT_STRING_LENGTH","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","_parseInput","throwOnError","_extractFormattedPhoneNumber","isViablePhoneNumber","isViablePhoneNumberStart","withExtensionStripped","numberWithoutExtension","extractExtension","parseInput","formattedPhoneNumber","_parsePhoneNumber","__countryCallingCodeSource","valid","possible","parsePhoneNumberWithError","HASH_RE","AMPERSAND_RE","SLASH_RE","EQUAL_RE","PLUS_RE","ENC_CARET_RE","ENC_BACKTICK_RE","ENC_PIPE_RE","ENC_SPACE_RE","encodeQueryValue","encodeQueryKey","decodeQueryValue","parseQuery","parametersString","parameter","stringifyQuery","encodeQueryItem","PROTOCOL_STRICT_REGEX","PROTOCOL_REGEX","PROTOCOL_RELATIVE_REGEX","TRAILING_SLASH_RE","JOIN_LEADING_SLASH_RE","hasProtocol","inputString","acceptRelative","hasTrailingSlash","withoutTrailingSlash","fragment","fragmentIndex","withTrailingSlash","withBase","isEmptyURL","_base","url2","isNonEmptyURL","_segment","joinURL","protocolRelative","parseURL","defaultProto","_specialProtoMatch","_pathname","hostAndPath","stringifyParsedURL","FetchError","payloadMethods","isPayloadMethod","textTypes","JSON_RE","resolveFetchOptions","mergeHeaders","callHooks","hooks","hook","nullBodyResponses","globalOptions","isAbort","retries","responseCode","$fetchRaw","requestStr","statusStr","fetchError","refKey","createFetchError","abortTimeout","mergedQuery","withQuery","isJSONSerializable","pipeTo","parseResponse","_contentType","detectResponseType","parseFunction","_data","onResponse","ignoreResponseError","onResponseError","$fetch","defaultOptions","customGlobalOptions","_goober","resolveValue","toastId","toasts","toast","pausedAt","pauseDuration","blank","ariaProps","dismiss","updateHeight","startPause","reverseOrder","gutter","defaultPosition","endPause","calculateOffset","iconTheme","getAnimationStyle","onHeightUpdate","characterData","toastOptions","containerClassName","getPositionStyle","UNDEFINED","OBJECT","mergeObjects","isPromiseLike","stableHash","SWRGlobalState","EMPTY_CACHE","INITIAL_CACHE","STR_UNDEFINED","isWindowDefined","isDocumentDefined","createCacheHelper","online","onWindowEvent","offWindowEvent","preset","isOnline","isVisible","defaultConfigOptions","initFocus","initReconnect","onOnline","onOffline","IS_REACT_LEGACY","IS_SERVER","rAF","navigatorConnection","slowConnection","effectiveType","saveData","__timestamp","getTimestamp","MUTATE_EVENT","ERROR_REVALIDATE_EVENT","FOCUS_EVENT","RECONNECT_EVENT","internalMutate","_opts","populateCache","revalidate","rollbackOnErrorOption","rollbackOnError","optimisticData","keyFilter","matchedKeys","_k","mutateByKey","EVENT_REVALIDATORS","MUTATION","FETCH","PRELOAD","startRevalidate","revalidators","beforeMutationTs","hasOptimisticData","displayedData","currentData","committedData","populateCachedData","revalidateAllKeys","initCache","mutate","subscriptions","subs","setter","initProvider","releaseFocus","releaseReconnect","onLoadingSlow","onErrorRetry","maxRetryCount","errorRetryCount","currentRetryCount","retryCount","errorRetryInterval","onDiscarded","revalidateOnFocus","revalidateOnReconnect","revalidateIfStale","shouldRetryOnError","focusThrottleInterval","dedupingInterval","loadingTimeout","isPaused","mergeConfigs","f1","f2","SWRConfigContext","SWRConfig","parentConfig","isFunctionalConfig","extendedConfig","cacheContextRef","cacheContext","enableDevtools","__SWR_DEVTOOLS_USE__","useSWRConfig","BUILT_IN_MIDDLEWARE","useSWRNext","key_","fetcher_","withArgs","fallbackConfig","fetcher","subscribeCallback","keyedRevalidators","withMiddleware","uses","__SWR_DEVTOOLS_REACT__","ReactExports","WITH_DEDUPE","dedupe","SWRConfig$1","useSWRHandler","suspense","fallbackData","revalidateOnMount","refreshInterval","refreshWhenHidden","refreshWhenOffline","keepPreviousData","fnArg","initialMountedRef","unmountedRef","keyRef","fetcherRef","configRef","getConfig","getCache","setCache","subscribeCache","getInitialCache","stateDependencies","isEqual","returnedData","shouldStartRequest","getSelectedCache","snapshot","isValidating","cachedData","initialData","clientSnapshot","serverSnapshot","memorizedSnapshot","newSnapshot","isInitialMount","hasRevalidator","laggyDataRef","shouldDoInitialRevalidation","defaultValidatingState","currentFetcher","startAt","revalidateOpts","shouldStartNewRequest","callbackSafeguard","finalState","finishRequestAndUpdateState","cleanupState","requestInfo","mutationInfo","cacheData","currentConfig","revalidateEvents","boundMutate","softRevalidate","nextFocusRevalidatedAt","unsubEvents","trimLeft","trimRight","tinycolor","named","matchers","rgba","hsl","hsla","hsv","hsva","hex8","parseIntFromHex","convertHexToDecimal","hex6","hex4","hex3","stringInputToObject","isValidCSSUnit","bound01","rgbToRgb","convertToPercentage","hsvToRgb","hue2rgb","boundAlpha","inputToRGB","_originalInput","_roundA","_gradientType","gradientType","_ok","rgbToHsl","rgbToHsv","rgbToHex","allow3Char","pad2","rgbaToArgbHex","convertDecimalToHex","_desaturate","clamp01","_saturate","_greyscale","_lighten","_brighten","toRgb","_darken","_spin","hue","_complement","polyad","_splitcomplement","_analogous","results","slices","part","_monochromatic","toHsv","modification","isDark","getBrightness","isLight","getOriginalInput","getAlpha","RsRGB","GsRGB","BsRGB","setAlpha","toHsvString","toHexString","toHex8","allow4Char","rgbaToHex","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","_applyModification","brighten","saturate","greyscale","spin","_applyCombination","analogous","complement","monochromatic","splitcomplement","triad","tetrad","fromRatio","newColor","color1","color2","mix","rgb1","rgb2","readability","isReadable","wcag2","wcag2Parms","parms","validateWCAG2Parms","mostReadable","baseColor","colorList","includeFallbackColors","bestColor","bestScore","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellow","yellowgreen","flipped","isOnePointZero","processPercent","isPercentage","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","parseAccount","errorSignatureRegex","eventSignatureRegex","functionSignatureRegex","structSignatureRegex","isStructSignature","execStructSignature","constructorSignatureRegex","fallbackSignatureRegex","receiveSignatureRegex","eventModifiers","functionModifiers","UnknownTypeError","UnknownSolidityTypeError","InvalidParameterError","SolidityProtectedKeywordError","InvalidModifierError","modifier","InvalidFunctionModifierError","InvalidAbiTypeParameterError","abiParameter","InvalidSignatureError","UnknownSignatureError","InvalidStructSignatureError","CircularReferenceError","InvalidParenthesisError","parameterCache","indexed","parseSignature","structs","isFunctionSignature","execFunctionSignature","inputParams","splitParameters","inputLength","parseAbiParameter","modifiers","returns","outputParams","isEventSignature","execEventSignature","abiParameters","isErrorSignature","execErrorSignature","isConstructorSignature","execConstructorSignature","isFallbackSignature","isReceiveSignature","abiParameterWithoutTupleRegex","abiParameterWithTupleRegex","dynamicIntegerRegex","parameterCacheKey","getParameterCacheKey","isTuple","protectedKeywordsRegex","isSolidityKeyword","components_","isSolidityType","isValidDataLocation","typeWithoutTupleRegex","resolveStructs","parseAbi","signatures","shallowStructs","signaturesLength","propertiesLength","trimmed","resolvedStructs","entriesLength","parseStructs","aggregate3Signature","account_","multicall","blockNumber","blockTag","blobs","data_","factoryData","stateOverride","deploylessCallViaBytecode","deploylessCallViaFactory","deploylessCall","encodeDeployData","bytecode","deploylessCallViaBytecodeBytecode","toDeploylessCallViaBytecodeData","deploylessCallViaFactoryBytecode","toDeploylessCallViaFactoryData","assertRequest","rpcStateOverride","serializeStateOverride","chainFormat","formatters","formatTransactionRequest","request_","shouldPerformMulticall","batchSize","multicallAddress","multicallAddress_","ClientChainNotConfiguredError","getChainContractAddress","contract","blockNumberHex","schedule","createBatchScheduler","shouldSplitBatch","calls","allowFailure","callData","calldata","encodeFunctionData","multicall3Abi","decodeFunctionResult","returnData","RawContractError","scheduleMulticall","ChainDoesNotSupportContract","getRevertErrorData","offchainLookup","offchainLookupSignature","ccipRead","CounterfactualDeploymentFailedError","getNodeError","UnknownNodeError","CallExecutionError","getCallError","estimateFeesPerGas","internal_estimateFeesPerGas","block_","baseFeeMultiplier","BaseFeeScalarError","denominator","getAction","getBlock","baseFeePerGas","Eip1559FeesNotSupportedError","internal_estimateMaxPriorityFeePerGas","getGasPrice","EstimateGasExecutionError","prettyArgs","prettyPrint","formatEther","formatGwei","authorizationList","blobVersionedHashes","recoverAuthorizationAddress","estimateGas_rpc","estimate","estimates","contractAddress","getEstimateGasError","estimateMaxPriorityFeePerGas","defaultPriorityFee","maxPriorityFeePerGas_","maxPriorityFeePerGasHex","blockHash","blockTag_","includeTransactions","includeTransactions_","BlockNotFoundError","formatBlock","chainIdHex","getTransactionCount","defaultParameters","kzg","nonceManager","getBlock_","chainId_","getChainId_","commitments","blobsToCommitments","versionedHashes","commitmentsToVersionedHashes","proofs","blobsToProofs","sidecars","toBlobSidecars","consume","getTransactionType","MaxFeePerGasTooLowError","gasPrice_","defineChain","contracts","ensRegistry","ensUniversalResolver","blockCreated","multicall3","sourceId","chainConfig","disputeGameFactory","l2OutputOracle","l1StandardBridge","createClient","cacheTime","pollingInterval","extendFn","combined","createPublicClient","publicActions","AccountNotFoundError","AccountTypeNotSupportedError","assertCurrentChain","currentChainId","ChainNotFoundError","ChainMismatchError","supportsWalletNamespace","isWalletNamespaceSupported","walletNamespaceError","TransactionExecutionError","getTransactionError","walletActions","deployContract","walletClient","getAddresses","getPermissions","requestAddresses","getAddress","requestPermissions","permissions","message_","getTypesForEIP712Domain","validateTypedData","serializeTypedData","writeContract","getContractError","createWalletClient","isNullUniversalResolverError","callType","ContractFunctionRevertedError","errorName","panicReasons","encodedLabelToLabelhash","namehash","hashFromEncodedLabel","hashed","labelhash","packetToBytes","packet","EnsAvatarInvalidMetadataError","EnsAvatarInvalidNftUriError","EnsAvatarUriResolutionError","EnsAvatarUnsupportedNamespaceError","networkRegex","ipfsHashRegex","base64Regex","dataURIRegex","getGateway","defaultGateway","resolveAvatarUri","gatewayUrls","isEncoded","isOnChain","ipfsGateway","ipfs","arweaveGateway","arweave","networkRegexMatch","subtarget","isIPNS","isIPFS","replacedUri","parsedUri","getJsonImage","image_data","parseAvatarUri","resolvedURI","isImage","Image","isImageUri","parseAvatarRecord","record","nft","uri_","asset_namespace","tokenID","eip_namespace","chainID","erc_namespace","parseNftUri","nftUri","getNftTokenUri","resolvedNftUri","encodedJson","uriTokenId","getMetadataAvatarUri","parseNftAvatarUri","getEnsText","universalResolverAddress","universalResolverAddress_","readContractParameters","universalResolverResolveAbi","textResolverAbi","readContractAction","createFilterRequestScope","requestMap","method_","FilterTypeNotSupportedError","encodeEventTopics","abiItem","getAbiItem","AbiEventNotFoundError","definition","toEventSelector","topics","indexedInputs","args_","encodeArg","encodeAbiParameters","createContractEventFilter","fromBlock","toBlock","getRequest","createEventFilter","events_","createPendingTransactionFilter","promiseCache","responseCache","withCache","cacheKey","buildCache","created","getBlockNumber","getCode","decodeEventLog","strict_","argTopics","AbiEventSignatureEmptyTopicsError","AbiEventSignatureNotFoundError","isUnnamed","topic","DecodeLogTopicsMismatch","decodeTopic","nonIndexedInputs","decodedData","AbiDecodingDataSizeTooSmallError","PositionOutOfBoundsError","DecodeLogDataMismatch","parseEventLogs","matchArgs","isAddressEqual","includesArgs","getLogs","formattedLogs","formatLog","getContractEvents","Eip712DomainNotFoundError","getFeeHistory","blockCount","rewardPercentiles","feeHistory","gasUsedRatio","oldestBlock","reward","formatFeeHistory","getFilterChanges","getProof","proof","storageProof","formatProof","TransactionNotFoundError","formatTransaction","getTransactionReceipt","TransactionReceiptNotFoundError","transactionReceipt","formatTransactionReceipt","uninstallFilter","presignMessagePrefix","hashMessage","toPrefixedMessage","erc6492MagicBytes","verifyHash","universalSignatureVerifierAddress","universalSignatureVerifier","yParity_","serializeSignature","wrappedSignature","sliceHex","isErc6492Signature","concatHex","serializeErc6492Signature","universalSignatureValidatorAbi","universalSignatureValidatorByteCode","hexToBool","hashTypedData","hashStruct","hashDomain","encodeData","encodedTypes","encodedValues","hashType","encodeField","encodedHashType","unsortedDeps","findTypeDependencies","encodeType","primaryType_","parsedType","typeValuePairs","listenersCache","cleanupCache","callbackCount","observerId","callbackId","poll","emitOnBegin","initialWaitTime","unpoll","initialWait","watchBlockNumber","emitMissed","onBlockNumber","poll_","prevBlockNumber","unsubscribe_","onData","prefixRegex","suffixRegex","verifySiweMessage","scheme","callRequest","statement","issuedAt","notBefore","resources","parseSiweMessage","validateSiweMessage","createBlockFilter","estimateContractGas","getBlobBaseFee","baseFee","getBlockTransactionCount","getBytecode","getEip712Domain","fields","getEnsAddress","coinType","functionData","addressResolverAbi","getEnsAvatar","assetGatewayUrls","getEnsName","reverseNode","universalResolverReverseAbi","resolvedAddress","getEnsResolver","resolverAddress","getFilterLogs","getStorageAt","getTransactionConfirmations","transactionBlockNumber","batchSize_","chunkedCalls","currentChunk","currentChunkSize","aggregate3Results","aggregate3Result","AbiDecodingZeroDataError","verifyMessage","verifyTypedData","confirmations","onReplaced","replacedTransaction","retrying","withResolvers","WaitForTransactionReceiptTimeoutError","_unobserve","_unwatch","blockNumber_","withRetry","shouldRetry","replacementTransaction","transactions","err_","watchBlocks","onBlock","enablePolling","prevBlock","subscribeBlocks","emitFetched","watchContractEvent","onLogs","pollContractEvent","previousBlockNumber","InvalidInputRpcError","subscribeContractEvent","formatted","watchEvent","subscribeEvent","watchPendingTransactions","onTransactions","hashes","subscribePendingTransactions","buildRequest","overrideOptions","withDedupe","ParseRpcError","InvalidRequestRpcError","MethodNotFoundRpcError","InvalidParamsRpcError","InternalRpcError","ResourceNotFoundRpcError","ResourceUnavailableRpcError","TransactionRejectedRpcError","MethodNotSupportedRpcError","LimitExceededRpcError","JsonRpcVersionUnsupportedError","UserRejectedRequestError","UnauthorizedProviderError","UnsupportedProviderMethodError","ProviderDisconnectedError","ChainDisconnectedError","SwitchChainError","UnknownRpcError","HttpRequestError","retryAfter","createTransport","uid_","defaultRetryCount","UrlRequiredError","createIdStore","idCache","getHttpRpcClient","signal_","errorInstance","withTimeout","TimeoutError","onFetchRequest","onFetchResponse","retryCount_","timeout_","url_","rpcClient","RpcRequestError","universalResolverErrors","versionedHashVersionKzg","maxUint256","solidityError","solidityPanic","gwei","gweiUnits","AbiConstructorNotFoundError","AbiConstructorParamsNotFoundError","formatAbiParams","includeName","AbiEncodingArrayLengthMismatchError","givenLength","AbiEncodingBytesSizeMismatchError","expectedSize","AbiEncodingLengthMismatchError","AbiErrorSignatureNotFoundError","AbiFunctionNotFoundError","AbiFunctionOutputsNotFoundError","AbiItemAmbiguityError","BytesSizeMismatchError","InvalidAbiEncodingTypeError","InvalidAbiDecodingTypeError","InvalidArrayError","InvalidDefinitionTypeError","InvalidAddressError","BlobSizeTooLargeError","EmptyBlobError","InvalidVersionedHashSizeError","InvalidVersionedHashVersionError","InvalidChainIdError","formatAbiItemWithArgs","includeFunctionName","prettyStateOverride","ContractFunctionExecutionError","formattedArgs","functionWithParams","getContractAddress","decodeErrorResult","errorArgs","firstArg","errorWithParams","ContractFunctionZeroDataError","NegativeOffsetError","RecursiveReadLimitExceededError","SliceOffsetOutOfBoundsError","InvalidBytesLengthError","InvalidBytesBooleanError","InvalidHexBooleanError","ExecutionRevertedError","FeeCapTooHighError","FeeCapTooLowError","NonceTooHighError","NonceTooLowError","NonceMaxValueError","InsufficientFundsError","IntrinsicGasTooHighError","IntrinsicGasTooLowError","TransactionTypeNotSupportedError","TipAboveFeeCapError","RpcError","ProviderRpcError","AccountStateConflictError","StateAssignmentConflictError","prettyStateMapping","stateMapping","pretty","stateDiff","FeeConflictError","InvalidLegacyVError","InvalidSerializableTransactionError","InvalidStorageKeySizeError","hashAuthorization","toRlp","defineBlock","typeHex","isSystemTx","sourceHash","stateRoot","defineTransaction","defineTransactionReceipt","l1GasPrice","l1GasUsed","l1Fee","l1FeeScalar","assertTransactionEIP1559","isAddress","serializeAccessList","serializedAccessList","serializeTransaction","toYParitySignatureArray","serializeTransactionEIP1559","assertTransactionEIP2930","serializeTransactionEIP2930","assertTransactionEIP4844","commitment","serializeTransactionEIP4844","assertTransactionEIP7702","serializedAuthorizationList","serializeAuthorizationList","serializeTransactionEIP7702","assertTransactionLegacy","serializeTransactionLegacy","gasPriceOracle","l1Block","l2CrossDomainMessenger","l2Erc721Bridge","l2StandardBridge","l2ToL1MessagePasser","isDeposit","assertTransactionDeposit","serializeTransactionDeposit","serializeTransaction_","bytesToBigInt","bytesToBool","bytes_","bytesToNumber","bytesToString","createCursor","setPosition","consumed_","decodeParameter","staticPosition","arrayComponents","getArrayComponents","sizeOfOffset","startOfData","sizeOfLength","dynamicChild","hasDynamicChild","decodeArray","hasUnnamedChild","decodeTuple","sliceBytes","decodeAddress","decodeBool","decodeBytes","decodeNumber","decodeString","preparedParams","prepareParam","prepareParams","encodeParams","dynamic","preparedParam","encodeArray","param_","encodeTuple","encodeAddress","encodeBool","encodeNumber","paramSize","bytesSize","encodeBytes","partsLength","encodeString","staticSize","staticParams","dynamicParams","dynamicSize","prepareEncodeFunctionData","formatAbiParam","isSelector","abiItems","matchedAbiItem","isArgOfType","ambiguousTypes","getAmbiguousTypes","argType","abiParameterType","sourceParameters","targetParameters","parameterIndex","sourceParameter","targetParameter","addressRegex","isAddressCache","blobToKzgCommitment","computeBlobKzgProof","commitmentToVersionedHash","versionedHash","noble_sha256","bytesPerFieldElement","fieldElementsPerBlob","bytesPerBlob","maxBytesPerTransaction","pushByte","pushBytes","toBlobs","staticCursor","positionReadCount","recursiveReadCount","recursiveReadLimit","assertReadLimit","assertPosition","decrementPosition","getReadCount","incrementPosition","inspectByte","position_","inspectBytes","inspectUint8","inspectUint16","getUint16","inspectUint24","getUint8","inspectUint32","pushUint8","pushUint16","setUint16","pushUint24","setUint8","pushUint32","readByte","_touch","readUint16","readUint24","readUint32","oldPosition","assertStartOffset","assertEndOffset","sliceLength","hexToString","encodable","getEncodable","bodyLength","sizeOfBodyLength","getSizeOfLength","getEncodableList","bytesOrHex","sizeOfBytesLength","getEncodableBytes","EXECUTION_REVERTED_ERROR_CODE","executionRevertedError","nodeMessage","blobGasUsed","difficulty","excessBlobGas","logsBloom","totalDifficulty","defineFormatter","extract_","exclude","logIndex","transactionType","transaction_","receiptStatuses","cumulativeGasUsed","blobGasPrice","rpcTransactionType","eip7702","rpcRequest","actionFn","action_implicit","action_explicit","toSignatureHash","tupleRegex","formatAbiParameter","formatAbiParameters","toSignature","def","normalizeSignature","schedulerCache","scheduler","getScheduler","setScheduler","resolve_","reject_","delay_","attemptRetry","publicKeyToAddress","serializeStateMapping","serializeAccountStateOverride","rpcAccountStateOverride","accountState","replacer","space","InvalidPrimaryTypeError","InvalidStructTypeError","domain_","normalizeData","struct","validateData","integerMatch","bytesMatch","validateReference","formatUnits","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdO","getter","leafPrototypes","getProto","chunkId","miniCssF","hmd","dataWebpackPrefix","needAttach","scripts","onScriptComplete","doneFns","nmd","loadStylesheet","fullhref","existingLinkTags","dataHref","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","installedIntegrations","getIntegrationsToSetup","defaultIntegrations","userIntegrations","isDefaultInstance","finalIntegrations","integrationsByName","currentInstance","existingInstance","filterDuplicates","debugIndex","debugInstance","afterSetupIntegrations","afterAllSetup","setupIntegration","integrationIndex","setupOnce","setup","preprocessEvent","processEvent","convertIntegrationFnToClass","instrumented","addHandler","maybeInstrument","instrumentFn","triggerHandlers","typeHandlers","addConsoleInstrumentationHandler","instrumentConsole","validSeverityLevels","severityLevelFromString","INTEGRATION_NAME","captureConsoleIntegration","consoleHandler","_optionalChain","lastAccessLHS","isSentryRequestUrl","hubOrClient","isHub","dsn","tunnel","checkDsn","removeTrailingSlash","checkTunnel","DSN_REGEX","dsnToString","withPassword","pass","dsnFromComponents","makeDsn","lastPath","projectMatch","dsnFromString","isValidProtocol","validateDsn","createEnvelope","addItemToEnvelope","envelope","newItem","forEachEnvelopeItem","envelopeItems","envelopeItem","encodeUTF8","serializeEnvelope","envHeaders","itemHeaders","stringifiedPayload","buffers","totalLength","concatBuffers","createAttachmentEnvelopeItem","content_type","attachment_type","attachmentType","ITEM_TYPE_TO_DATA_CATEGORY_MAP","sessions","client_report","user_report","profile","replay_event","replay_recording","check_in","feedback","statsd","envelopeItemTypeToDataCategory","getSdkMetadataForEnvelopeHeader","metadataOrEvent","createEventEnvelopeHeaders","sdkInfo","sent_at","SentryError","logLevel","getBaseApiEndpoint","getEnvelopeEndpointWithUrlEncodedAuth","tunnelOrOptions","_getIngestEndpoint","sentry_key","sentry_version","sentry_client","_encodedAuth","createMetricEnvelope","metricBucketItems","tagEntries","maybeTags","metric","metricType","serializeMetricBuckets","createMetricEnvelopeItem","ALREADY_SEEN_ERROR","BaseClient","_integrations","_integrationsInitialized","_numProcessing","_outcomes","_hooks","_dsn","_transport","recordDroppedEvent","transportOptions","_process","eventFromException","_captureEvent","eventMessage","promisedEvent","eventFromMessage","capturedSpanScope","sendSession","getSdkMetadata","getTransport","metricsAggregator","_isClientDoneProcessing","clientFinished","transportFlushed","eventProcessor","forceInitialize","_isEnabled","_setupIntegrations","getIntegrationById","integrationId","getIntegrationByName","integrationName","addIntegration","isAlreadyInstalled","sendEvent","eventType","packages","enhanceEventWithSdkInfo","envelopeHeaders","createEventEnvelope","_sendEnvelope","sendResponse","createSessionEnvelope","category","eventOrCount","sendClientReports","captureAggregateMetrics","metricsEnvelope","_updateSessionFromEvent","crashed","errored","exceptions","sessionNonTerminal","ticked","_prepareEvent","parentSpanId","_processEvent","finalEvent","sentryError","isTransaction","isTransactionEvent","beforeSendLabel","dataCategory","capturedSpanIsolationScope","__sentry__","beforeSend","beforeSendTransaction","spanCountBefore","spanCountBeforeProcessing","processBeforeSend","beforeSendResult","invalidValueError","_validateBeforeSendResult","processedEvent","spanCount","droppedSpanCount","transaction_info","_clearOutcomes","outcomes","quantity","SENTRY_XHR_DATA_KEY","addXhrInstrumentationHandler","instrumentXHR","xhrproto","originalOpen","startTimestamp","e2","parseUrl","request_headers","__sentry_own_request__","onreadystatechangeHandler","xhrInfo","status_code","endTimestamp","readyStateArgs","setRequestHeaderArgs","originalSend","sentryXhrData","supportsFetch","isNativeFetch","addFetchInstrumentationHandler","instrumentFetch","EdgeRuntime","sandbox","supportsNativeFetch","originalFetch","fetchArgs","getUrlFromResource","hasProp","parseFetchArgs","handlerData","fetchData","resource","debounceTimerID","lastCapturedEventType","lastCapturedEventTargetId","addClickKeypressInstrumentationHandler","instrumentDOM","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","originalAddEventListener","__sentry_instrumentation_handlers__","handlerForType","refCount","originalRemoveEventListener","globalListener","getEventTarget","shouldSkipDOMEvent","_sentryId","isSimilarToLastCapturedEvent","lastHref","addHistoryInstrumentationHandler","instrumentHistory","chromeVar","chrome","isChromePackagedApp","hasHistoryApi","supportsHistory","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","isRateLimited","limits","disabledUntil","updateRateLimits","statusCode","updatedRateLimits","rateLimitHeader","retryAfterHeader","categories","namespaces","headerDelay","headerDate","parseRetryAfterHeader","getNavigationEntry","__WEB_VITALS_POLYFILL__","getEntriesByType","getNavigationEntryFromPerformanceTiming","navigation","navigationEntry","entryType","getActivationStart","navEntry","activationStart","onHidden","onHiddenOrPageHide","firstHiddenTime","getVisibilityWatcher","prerendering","PerformanceObserver","supportedEntryTypes","getEntries","buffered","reportedMetricIDs","onLCP","onReport","visibilityWatcher","initMetric","rating","report","handleEntries","lastEntry","bindReporter","reportAllChanges","forceReport","stopListening","takeRecords","_previousLcp","addPerformanceInstrumentationHandler","durationThreshold","instrumentPerformanceObserver","getCleanupCallback","instrumentLcp","addMetricObserver","previousValue","stopOnCallback","REPLAY_SESSION_KEY","UNABLE_TO_SEND_REPLAY","DEFAULT_FLUSH_MIN_DELAY","DEFAULT_FLUSH_MAX_DELAY","NETWORK_BODY_MAX_SIZE","CONSOLE_ARG_MAX_SIZE","REPLAY_MAX_EVENT_BUFFER_SIZE","MIN_REPLAY_DURATION","MAX_REPLAY_DURATION","_optionalChain$5","NodeType$1","NodeType","_2","shadowRoot","isNativeShadowDom","stringifyStylesheet","stringifyRule","importStringified","isCSSImportRule","layerName","supportsText","media","mediaText","escapeImportStatement","isCSSStyleRule","selectorText","cssStringified","fixSafariColons","Mirror","idNodeMap","nodeMetaMap","getId","_3","_4","_5","rhsFn","getNode","getIds","removeNodeFromMap","childNode","hasNode","oldNode","shouldMaskInput","maskInputOptions","maskInputValue","maskInputFn","ORIGINAL_ATTRIBUTE_NAME","getInputType","getInputValue","_id","tagNameRegex","canvasService","canvasCtx","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","absoluteToStylesheet","quote1","path1","quote2","path2","path3","filePath","maybeQuote","extractOrigin","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","attributeValue","isSVGElement","ownerSVGElement","getHref","transformAttribute","maskAttributeFn","collectCharacters","regEx","descriptorsStr","inParens","getAbsoluteSrcsetString","ignoreAttribute","distanceToMatch","matchPredicate","distance","ELEMENT_NODE","createMatchPredicate","eIndex","classList","elementClassMatchesRegex","needMaskingText","maskTextClass","maskTextSelector","unmaskTextClass","unmaskTextSelector","maskAllText","autocomplete","maskDistance","unmaskDistance","serializeNode","mirror","blockClass","blockSelector","unblockSelector","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","stylesheet","_cssText","forceMask","__context","getImageData","originalGetImageData","pixel","is2DCanvasBlank","rr_dataURL","canvasDataURL","blankCanvas","recordInlineImage","naturalWidth","naturalHeight","drawImage","currentSrc","complete","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_scrollLeft","rr_scrollTop","rr_width","rr_height","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parentTagName","isStyle","isScript","isTextarea","_6","_7","_8","textarea","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isElement$1","isShadow","iframeEl","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","_optionalChain$4","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle$1","leading","getImplementation","clearTimeout$1","trailing","setTimeout$1","hookSetter","isRevoked","patch","__rrweb_original__","nowTimestamp","getWindowScroll","scrollingElement","pageXOffset","_10","_11","_12","_13","_14","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","checkAncestors","blockedPredicate","isUnblocked","blockDistance","unblockDistance","isIgnored","isAncestorRemoved","legacy_isTouchEvent","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","_18","StyleSheetMirror","styleIDMap","idStyleMap","newId","getStyle","generateId","getShadowHost","shadowHost","_19","_20","_21","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","cachedImplementations","impl","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","_optionalChain$3","isNodeInLinkedList","DoubleLinkedList","addNode","__ln","removeNode","moveKey","parentId","MutationBuffer","frozen","locked","texts","attributeMap","removes","mapRemoves","movedMap","addedSet","movedSet","droppedSet","processMutations","mutations","processMutation","adds","addedIds","addList","getNextId","pushAdd","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","childSn","attachIframe","observeAttachShadow","attachLinkElement","isParentRemoved","isAncestorInSet","candidate","tailNode","_node","unhandledNode","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","mutationCb","isInputMasked","unattachedDoc","createHTMLDocument","old","pname","newPriority","getPropertyPriority","addedNodes","genAdds","removedNodes","isSerialized","deepDelete","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","lock","unlock","addsSet","_isParentRemoved","_isAncestorInSet","errorHandler","callbackWrapper","_optionalChain$2","_len6","_key6","mutationBuffers","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","__rrMutationObserver","angularZoneSymbol","Zone","__symbol__","onMutation","attributeOldValue","characterDataOldValue","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","currentPointerType","eventKey","thisEventKey","Touch","Pen","MouseDown","MouseUp","Click","getHandler","TouchStart","TouchEnd","initScrollObserver","scrollCb","scrollLeftTop","INPUT_TAGS","lastInputValueMap","initInputObserver","inputCb","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isChecked","cbWithDedup","lastInputValue","currentWindow","propertyDescriptor","hookProperties","HTMLOptionElement","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","styleId","initAdoptedStyleSheetObserver","hostId","patchTarget","originalPropertyDescriptor","sheets","_15","_16","adoptStyleSheets","initObservers","mutationObserver","mousemoveHandler","mousemoveCb","mousemove","callbackThreshold","mousemoveCallback","timeBaseline","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","viewportResizeCb","lastH","lastW","initViewportResizeObserver","inputHandler","mediaInteractionHandler","mediaInteractionCb","volume","muted","playbackRate","initMediaInteractionObserver","styleSheetObserver","styleSheetRuleCb","CSSStyleSheet","argumentsList","replaceSync","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","styleDeclarationCb","ignoreCSSAttributes","CSSStyleDeclaration","_17","removeProperty","initStyleDeclarationObserver","fontObserver","collectFonts","fontCb","fontMap","originalFontFace","FontFace","family","fontFace","fontSource","restoreHandler","fonts","initFontObserver","selectionObserver","selectionCb","collapsed","updateSelection","selection","isCollapsed","ranges","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","customElementCb","initCustomElementObserver","pluginHandlers","plugin","CrossOriginIframeMirror","generateIdFn","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","_optionalChain$1","_len7","_key7","IframeManagerNoop","crossOriginIframeMirror","crossOriginIframeRootIdMap","addLoadListener","IframeManager","iframes","crossOriginIframeMap","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","handleMessage","isAttachIframe","adoptedStyleSheets","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","replaceIdOnNode","patchRootIdOnNode","IncrementalSnapshot","Mutation","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","CanvasMutation","Input","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","iframeMirror","ShadowDomManagerNoop","ShadowDomManager","shadowDoms","restoreHandlers","patchAttachShadow","iframeElement","manager","CanvasManagerNoop","StylesheetManager","trackedLinkElements","adoptedStyleSheetCb","linkEl","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","ProcessedNodeManager","nodeMap","loop","periodicallyClear","onRequestAnimationFrame","thisBuffer","_takeFullSnapshot","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","maxCanvasSize","packFn","mousemoveWait","recordAfter","getCanvasManager","inEmittingFrame","passEmitsToParent","radio","checkbox","lastFullSnapshotEvent","NodeList","DOMTokenList","incrementalSnapshotCount","exceedCount","exceedTime","takeFullSnapshot","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","__RRWEB_EXCLUDE_IFRAME__","getMirror","nodeMirror","getCanvasManagerFn","_getCanvasManager","__RRWEB_EXCLUDE_SHADOW_DOM__","slimDOM","initialOffset","canvasMutationCb","CustomElement","timestampToMs","timestampToS","addBreadcrumbEvent","replay","triggerUserActivity","checkAndHandleExpiredSession","addUpdate","throttledAddEvent","getClosestInteractive","getClickTargetNode","getTargetNode","isEventWithTarget","onWindowOpen","originalWindowOpen","_len8","_key8","ClickDetector","slowClickConfig","_addBreadcrumbEvent","_lastMutation","_lastScroll","_clicks","_timeout","_threshold","_scollTimeout","scrollTimeout","_replay","_ignoreSelector","addListeners","cleanupWindowOpen","nowInSeconds","_teardown","removeListeners","_checkClickTimeout","handleClick","SLOW_CLICK_TAGS","ignoreElement","isClickBreadcrumb","newClick","clickBreadcrumb","clickCount","_scheduleCheckClicks","registerMutation","registerScroll","registerClick","_handleMultiClick","_getClicks","_checkClicks","timedOutClicks","mutationAfter","scrollAfter","_generateBreadcrumbs","hadScroll","hadMutation","isSlowClick","timeAfterClickMs","endReason","getCurrentRoute","updateClickDetectorForRecordingEvent","clickDetector","isIncrementalEvent","isIncrementalMouseInteraction","createBreadcrumb","ATTRIBUTES_TO_RECORD","getAttributesToRecord","normalizedKey","handleDomListener","isClick","getDomTarget","getBaseDomBreadcrumb","handleDom","handleKeyboardEvent","updateUserActivity","isInputElement","hasModifierKey","isCharacterKey","baseBreadcrumb","getKeyboardBreadcrumb","ENTRY_TYPES","initiatorType","responseEnd","decodedBodySize","encodedBodySize","responseStatus","transferSize","getAbsoluteTime","paint","domComplete","domContentLoadedEventStart","domContentLoadedEventEnd","domInteractive","loadEventStart","loadEventEnd","redirectCount","createPerformanceEntry","setupPerformanceObserver","addPerformanceEntry","performanceEntries","onEntries","clearCallbacks","addLcpInstrumentationHandler","replayPerformanceEntries","getLargestContentfulPaint","clearCallback","logInfo","shouldAddBreadcrumb","addLogBreadcrumb","logInfoNextTick","EventBufferSizeExceededError","EventBufferArray","_totalSize","hasCheckout","hasEvents","addEvent","eventSize","eventsRet","getEarliestTimestamp","WorkerHandler","worker","_worker","ensureReady","_ensureReadyPromise","terminate","_getAndIncrementId","EventBufferCompressionWorker","_earliestTimestamp","_sendEventToWorker","_finishRequest","EventBufferProxy","_fallback","_compression","_used","_ensureWorkerIsLoadedPromise","_ensureWorkerIsLoaded","ensureWorkerIsLoaded","_switchToCompressionWorker","addEventPromises","createEventBuffer","useCompression","workerUrl","customWorkerUrl","Worker","__SENTRY_EXCLUDE_REPLAY_WORKER__","_getWorkerUrl","_loadWorker","hasSessionStorage","sessionStorage","clearSession","deleteSession","isSampled","lastActivity","segmentId","previousSessionId","saveSession","createSession","sessionSampleRate","allowBuffering","stickySession","getSessionSampleType","initialTime","expiry","targetTime","isSessionExpired","maxReplayDuration","sessionIdleExpire","shouldRefreshSession","loadOrCreateSession","sessionOptions","traceInternals","existingSession","sessionStringFromStorage","sessionObj","fetchSession","addEventSync","shouldAddEvent","_addEvent","eventBuffer","recordingMode","eventAfterPossibleCallback","isCustomEvent","maybeApplyCallback","beforeAddRecordingEvent","timestampInMs","timeouts","sessionIdlePause","initialTimestamp","_experiments","isFeedbackEvent","handleAfterSendEvent","enforceStatusCode","__sentry__baseTransport__","isBaseTransportSend","replayContext","traceIds","handleTransactionEvent","errorIds","replayId","beforeErrorSampling","sendBufferedReplayOrFlush","handleErrorEvent","handleBeforeSendEvent","exceptionValue","handleHydrationError","handleGlobalEventListener","afterSendHandler","isReplayEvent","replay_id","getSessionId","feedbackId","addFeedbackBreadcrumb","__rrweb__","isRrwebError","captureExceptions","isErrorEventSampled","errorSampleRate","shouldSampleForBufferEvent","createPerformanceSpans","handleHistorySpanListener","handleHistory","urls","addNetworkBreadcrumb","shouldFilterRequest","handleXhrSpanListener","handleXhr","getBodySize","formDataStr","_serializeFormData","parseContentLengthHeader","getBodyString","mergeWarning","warnings","newMeta","existingWarnings","makeNetworkReplayBreadcrumb","buildSkippedNetworkRequestOrResponse","bodySize","buildNetworkRequestOrResponse","normalizedBody","exceedsSizeLimit","isProbablyJson","_strIsProbablyJson","truncatedBody","e3","normalizeNetworkBody","getAllowedHeaders","allowedHeaders","filteredHeaders","urlMatches","fullUrl","baseURI","fixedUrl","getFullUrl","captureFetchBreadcrumbToReplay","request_body_size","requestBodySize","response_body_size","responseBodySize","captureDetails","networkDetailAllowUrls","networkDetailDenyUrls","networkCaptureBodies","networkRequestHeaders","getHeadersFromOptions","getRequestHeaders","_getFetchRequestArgBody","bodyStr","_getRequestInfo","networkResponseHeaders","getAllHeaders","bodyText","_tryCloneResponse","_getResponseText","txt","_tryGetResponseText","_parseFetchResponseBody","getResponseData","_getResponseInfo","_prepareFetchData","allHeaders","captureXhrBreadcrumbToReplay","getResponseHeaders","requestWarning","responseBody","responseWarning","_parseXhrResponse","_getXhrResponseBody","_prepareXhrData","enrichXhrBreadcrumb","reqSize","resSize","getResponseHeader","_getBodySize","handleNetworkBreadcrumbs","_isXhrBreadcrumb","_isXhrHint","_isFetchBreadcrumb","_isFetchHint","enrichFetchBreadcrumb","beforeAddNetworkBreadcrumb","handleFetch","handleFetchSpanListener","_LAST_BREADCRUMB","handleScopeListener","newBreadcrumb","isBreadcrumbWithCategory","isTruncated","normalizedArgs","normalizedArg","normalizeConsoleBreadcrumb","handleScope","addGlobalListeners","hasHooks","lastTransaction","feedbackEvent","includeReplay","createMemoryEntry","memoryEntry","jsHeapSizeLimit","totalJSHeapSize","usedJSHeapSize","getHandleRecordingEmit","hadFirstEvent","_isCheckout","setInitialState","shouldRecordCanvas","isRecordingCanvas","useCompressionOption","blockAllMedia","networkDetailHasUrls","networkRequestHasHeaders","networkResponseHasHeaders","createOptionsEvent","addSettingsEvent","earliestEvent","sendReplayRequest","recordingData","segment_id","eventContext","preparedRecordingData","payloadWithSequence","replayHeaders","sequence","prepareRecordingData","baseEvent","replay_start_timestamp","error_ids","trace_ids","replay_type","replayEvent","eventHint","preparedEvent","prepareReplayEvent","createReplayEnvelope","TransportStatusCodeError","rateLimits","RateLimitError","sendReplay","replayData","retryConfig","_retryCount","THROTTLED","maxCount","durationSeconds","isThrottled","_cleanup","wasThrottled","ReplayContainer","recordingOptions","__init5","__init6","_lastActivity","_isPaused","_hasInitializedCoreListeners","initialUrl","_recordingOptions","_debouncedFlush","callbackReturnValue","timerId","maxTimerId","maxWait","invokeFunc","cancelTimers","debounced","debounce","_flush","flushMinDelay","flushMaxDelay","_throttledAddEvent","slowClickTimeout","slowClickIgnoreSelectors","_canvas","initializeSampling","_initializeSessionForSampling","_initializeRecording","_handleException","_updateUserActivity","startBuffering","startRecording","canvasOptions","_stopRecording","_onMutationHandler","stopRecording","forceFlush","_removeListeners","pause","_checkSession","continueRecording","flushImmediate","activityTime","hasStoppedRecording","_updateSessionActivity","_maybeSaveSession","cbResult","conditionalFlush","cancelFlush","urlPath","_clearContext","_addListeners","_refreshSession","_handleVisibilityChange","_handleWindowBlur","_handleWindowFocus","_handleKeyboardEvent","_performanceCleanupCallback","_doChangeToForegroundTasks","_doChangeToBackgroundTasks","_createCustomBreadcrumb","_addPerformanceEntries","_updateInitialTimestampFromEventBuffer","_popEventContext","_runFlush","addMemoryEntry","tooShort","minReplayDuration","tooLong","_flushLock","mutationLimit","overMutationLimit","mutationBreadcrumbLimit","getOption","selectors","defaultSelectors","deprecatedClassOption","deprecatedSelectorOption","allSelectors","MEDIA_SELECTORS","DEFAULT_NETWORK_HEADERS","_initialized","replayIntegration$1","Replay$1","__initStatic","maskAttributes","unmask","unblock","maskFn","privacyOptions","getPrivacyOptions","maskAttribute","_initialOptions","_getMergedNetworkHeaders","_isInitialized","_setup","_initialize","getReplayId","_maybeLoadFromReplayCanvasIntegration","finalOptions","initialOptions","replaysSessionSampleRate","replaysOnErrorSampleRate","loadReplayOptionsFromClient","canvasIntegration","DEFAULT_IGNORE_ERRORS","DEFAULT_IGNORE_TRANSACTIONS","inboundFiltersIntegration","_hint","clientOptions","internalOptions","allowUrls","denyUrls","ignoreErrors","disableErrorDefaults","ignoreTransactions","disableTransactionDefaults","ignoreInternal","_mergeOptions","_isSentryError","possibleMessages","lastException","_getPossibleEventMessages","_isIgnoredError","_isIgnoredTransaction","_getEventFilterUrl","_isDeniedUrl","_isAllowedUrl","_shouldDropEvent","_getLastValidUrl","originalFunctionToString","SETUP_CLIENTS","functionToStringIntegration","_functionToStringIntegration","originalFunction","initAndBind","clientClass","initialScope","setCurrentClient","initializeClient","applySdkMetadata","exceptionFromError","parseStackFrames","extractMessage","eventFromError","popSize","reactMinifiedRegexp","getPopSize","eventFromUnknownInput","attachStacktrace","isUnhandledRejection","domException","eventFromString","getNonErrorObjectExceptionValue","__serialized__","eventFromPlainObject","synthetic","__sentry_template_string__","__sentry_template_values__","logentry","captureType","getObjectClassName","ignoreOnError","shouldIgnoreOnError","wrapper","__sentry_wrapped__","sentryWrapped","wrappedArguments","BrowserClient","SENTRY_SDK_SOURCE","_flushOutcomes","captureUserFeedback","createUserFeedbackEnvelopeItem","createUserFeedbackEnvelope","discarded_events","MAX_ALLOWED_STRING_LENGTH","breadcrumbsIntegration","dom","_getConsoleBreadcrumbHandler","serializeAttribute","_isEvent","_getDomBreadcrumbHandler","_getXhrBreadcrumbHandler","_getFetchBreadcrumbHandler","parsedLoc","parsedFrom","parsedTo","_getHistoryBreadcrumbHandler","_getSentryBreadcrumbHandler","dedupeIntegration","_dedupeIntegration","previousEvent","currentEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_isSameMessageEvent","previousException","_getExceptionFromEvent","currentException","_isSameExceptionEvent","currentFrames","_getFramesFromEvent","previousFrames","frameA","frameB","lineno","colno","currentFingerprint","previousFingerprint","_oldOnErrorHandler","instrumentError","__SENTRY_LOADER__","__SENTRY_INSTRUMENTED__","_oldOnUnhandledRejectionHandler","instrumentUnhandledRejection","onunhandledrejection","globalHandlersIntegration","stackTraceLimit","addGlobalErrorInstrumentationHandler","ERROR_TYPES_RE","_enhanceEventWithInitialFrame","_eventFromIncompleteOnError","_installGlobalOnErrorHandler","globalHandlerLog","addGlobalUnhandledRejectionInstrumentationHandler","_getUnhandledRejectionError","_installGlobalOnUnhandledRejectionHandler","ev","ev0","ev0s","ev0sf","in_app","httpContextIntegration","_httpContextIntegration","Referer","applyAggregateErrorsToEvent","exceptionFromErrorImplementation","maxValueLimit","aggregateExceptionsFromError","prevExceptions","exceptionId","newExceptions","applyExceptionGroupFieldsForParentException","newException","newExceptionId","applyExceptionGroupFieldsForChildException","childError","is_exception_group","exception_id","parent_id","linkedErrorsIntegration","DEFAULT_EVENT_TARGET","browserApiErrorsIntegration","eventTarget","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","originalCallback","wrapOptions","globalObject","handleEvent","wrappedEventHandler","originalEventHandler","UNKNOWN_FUNCTION","createFrame","chromeRegex","chromeEvalRegex","geckoREgex","geckoEvalRegex","winjsRegex","defaultStackLineParsers","subMatch","extractSafariExtensionDetails","defaultStackParser","isSafariExtension","isSafariWebExtension","makePromiseBuffer","task","taskProducer","drain","capturedSetTimeout","bufferSize","filteredEnvelopeItems","getEventForEnvelopeItem","filteredEnvelope","recordEnvelopeLoss","requestTask","cachedFetchImpl","makeFetchTransport","nativeFetch","fetchImpl","getNativeFetchImplementation","pendingBodySize","pendingCount","requestSize","requestOptions","referrerPolicy","makeXHRTransport","__SENTRY_RELEASE__","SENTRY_RELEASE","autoSessionTracking","startSessionTracking","showReportDialog","dsnLike","dialogOptions","endpoint","encodedOptions","getReportDialogEndpoint","reportDialogClosedMessageHandler","injectionPoint","INITIAL_STATE","_openFallbackReportDialog","showDialog","beforeCapture","isAtLeastReact17","errorBoundaryError","seenErrors","setCause","react","resetErrorBoundary","resetError","__reactRouterVersion","startTransitionImpl","BrowserRouter","historyRef","setStateImpl","newState","UNSAFE_logV6DeprecationWarnings","localTheme","outerTheme","mergeOuterLocalTheme","EMPTY_THEME","useThemeScoping","isPrivate","resolvedTheme","mergedTheme","upperPrivateTheme","usePrivateTheme","engineTheme","privateTheme","rtlValue","MuiThemeProvider","StyledEngineThemeContext","RtlProvider","DefaultPropsProvider","ThemeProvider","scopedTheme","SystemThemeProvider","enableColorScheme","WebkitFontSmoothing","MozOsxFontSmoothing","WebkitTextSizeAdjust","colorSchemeStyles","colorSchemes","_scheme$palette","defaultStyles","themeOverrides","MuiCssBaseline","withAlphas","alpha4","alpha8","alpha12","alpha30","alpha50","neutral","lightest","darkest","getPrimary","createOptions","colorPreset","contrast","MuiAvatar","MuiBackdrop","backdropClasses","MuiButton","MuiCard","paperClasses","elevation1","MuiChip","MuiInputBase","MuiFilledInput","filledInputClasses","MuiOutlinedInput","outlinedInputClasses","notchedOutline","MuiSwitch","switchBase","MuiTableCell","MuiTableHead","tableCellClasses","MuiTimelineConnector","MuiTooltip","createComponents","orgTheme","_config$orgTheme","paletteMode","createDarkOptions","createLightOptions","createMuiTheme","sizeSmall","sizeMedium","sizeLarge","textSizeSmall","textSizeMedium","textSizeLarge","MuiCardContent","MuiCardHeader","titleTypographyProps","subheaderTypographyProps","MuiCheckbox","checkedIcon","indeterminateIcon","MuiIconButton","MuiInput","MuiFormLabel","inputLabelClasses","filled","shrink","outlined","MuiLinearProgress","MuiLink","underline","MuiListItemIcon","MuiPaper","backgroundImage","MuiPopover","elevation","MuiRadio","MuiTab","paddingCheckbox","MuiTextField","createBaseOptions","responsiveFontSizes","disableAlign","remFontSize","maxFontSize","minFontSize","WalletSettingsDialog","KYCFlowDialog","KYCResetDialog","KYCStatusDialog","KYCFinishedDialog","KYBReviewDialog","CountryResetDialog","AccountBlockedDialog","AccountUnblockedDialog","AccessUnavailableDialog","VpnBlockedDialog","SeriesPausedDialog","MaxAmountReachedDialog","UnlinkWalletDialog","GrantAcceptSuccessDialog","DialogWrapper","LoadingSpinner","Sanctioned","UploadDocument","InvitationCode","RootRedirect","navigatorMap","allRoutes","componentLevel","hasFooter","routeViews","devOnly","AppRoutes","Sentry","Navigator","permission","WebhookEventHandler","hasError","pathSegments","getFlowContext","CoreView","usePortalItem","portalItem","intercomSettings","Intercom","currentTheme","rectangleColoredLogo","squareColoredLogo","roundedCorners","CssBaseline","PrivyProvider","Content","Toaster","ViewWrapper","globalReducer","HideScrollBar","createGlobalStyle","replayIntegration","init$1","tracesSampleRate","profilesSampleRate","_event$exception$valu","exceptionMessage","rootElement","HelmetProvider","Core"],"sourceRoot":""}